Some notes maybe.
Start with listing the modes. Then maybe try their example. ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 output.mkv
"
Linux
Uses the video4linux2 (or simply v4l2) input device to capture live input such as from a webcam. See the v4l2 input device documentation for more information.
List devices
To list the supported, connected capture devices you can use the v4l-ctl tool. This example shows two connected webcams: /dev/video0 and /dev/video1.
$ v4l2-ctl --list-devices
USB2.0 PC CAMERA (usb-0000:00:1d.7-1):
/dev/video1
UVC Camera (046d:0819) (usb-0000:00:1d.7-2):
/dev/video0
List device capabilities
To list available formats (supported pixel formats, video formats, and frame sizes) for a particular input device:
$ ffmpeg -f v4l2 -list_formats all -i /dev/video0
…
[video4linux2,v4l2 @ 0xf07d80] Raw : yuyv422 : YUV 4:2:2 (YUYV) : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360
[video4linux2,v4l2 @ 0xf07d80] Compressed: mjpeg : MJPEG : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360
Alternatively you could use v4l2-ctl --list-formats-ext to list available formats.
Encoding example
Example to encode video from /dev/video0:
ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 output.mkv
Adjusting camera functions
Brightness, zoom, focus, etc, can be adjusted with v4l2-ctl. Display all controls and their menus:
v4l2-ctl -L
Then adjust the value:
v4l2-ctl -c <option>=<value>
"
https://trac.ffmpeg.org/wiki/Capture/Webcam