Capture images and video from webcam on Linux using fswebcam or ffmpeg. Take snapshots, record video clips, and stream from camera. Use when a user asks FRIDAY to take a photo, capture webcam, or record video on Linux.
Use fswebcam or ffmpeg to capture images and video from webcam. This is a Linux alternative to macOS camsnap.
Install fswebcam:
sudo apt-get install -y fswebcam
Install ffmpeg (for video):
sudo apt-get install -y ffmpeg
Check available cameras:
ls -la /dev/video*
fswebcam ~/Pictures/webcam.jpg
fswebcam -d /dev/video0 ~/Pictures/webcam.jpg
fswebcam -r 1280x720 ~/Pictures/webcam-hd.jpg
fswebcam -r 1920x1080 ~/Pictures/webcam-fhd.jpg
fswebcam --no-banner ~/Pictures/webcam.jpg
fswebcam -D 2 --no-banner ~/Pictures/webcam.jpg
fswebcam -S 10 --no-banner ~/Pictures/webcam.jpg
fswebcam -F 5 --no-banner ~/Pictures/webcam.jpg
fswebcam -r 1920x1080 -D 2 -S 20 -F 5 --no-banner ~/Pictures/webcam.jpg
fswebcam --png 9 ~/Pictures/webcam.png
fswebcam --timestamp "%Y-%m-%d %H:%M:%S" ~/Pictures/webcam.jpg
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -t 10 ~/Videos/webcam.mp4
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 \
-f pulse -i default \
-c:v libx264 -preset ultrafast -c:a aac \
-t 10 ~/Videos/webcam-audio.mp4
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -c:v libx264 -preset ultrafast ~/Videos/webcam.mp4
ffplay -f v4l2 -framerate 30 -video_size 640x480 /dev/video0
ffmpeg -f v4l2 -framerate 30 -video_size 640x480 -i /dev/video0 -c:v libx264 -crf 28 -t 30 ~/Videos/webcam.mp4
mkdir -p ~/Pictures/timelapse
for i in $(seq 1 100); do
fswebcam -r 1280x720 --no-banner ~/Pictures/timelapse/frame-$(printf "%04d" $i).jpg
sleep 5
done
ffmpeg -framerate 10 -pattern_type glob -i '~/Pictures/timelapse/*.jpg' -c:v libx264 -pix_fmt yuv420p ~/Videos/timelapse.mp4
v4l2-ctl --list-formats-ext -d /dev/video0
v4l2-ctl -d /dev/video0 --set-ctrl brightness=128
v4l2-ctl -d /dev/video0 --set-ctrl contrast=128
v4l2-ctl -d /dev/video0 --list-ctrls
sudo apt-get install -y cheese
cheese
/dev/video0.v4l2-ctl for advanced camera control.fswebcam skips first few frames by default for better exposure.video group if permission denied: sudo usermod -aG video $USER