Вы можете перечислить дополнительную информацию о том, что может выводить ваша веб-камера v4l2-ctl --list-formats-ext
. Вы также можете отобразить информацию о веб-камере с помощью ffmpeg, используя параметр -list_formats
ввода:
$ ffmpeg -f video4linux2 -list_formats all -i /dev/video0 [...] [video4linux2,v4l2 @ 0x1fb7660] Raw : yuyv422 : YUV 4:2:2 (YUYV) : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360 [video4linux2,v4l2 @ 0x1fb7660] Compressed: mjpeg : MJPEG : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360
Эта веб-камера из моего примера может поддерживать как raw ( yuyv422
), так и сжатые ( mjpeg
) форматы, и вы можете указать, ffmpeg
какой вам нужен, с помощью -input_format
опции ввода.
Примеры
Потоковое копирование видеопотока MJPEG (без перекодирования):
ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c:v copy output.mkv
Перекодируйте необработанное видео с веб-камеры в H.264:
ffmpeg -f v4l2 -input_format yuyv422 -i /dev/video0 -c:v libx264 -vf format=yuv420p output.mp4
То же, что и выше, но вручную выберите частоту кадров и размер видео ( v4l2-ctl --list-formats-ext
для доступной частоты кадров и размеров видео):
ffmpeg -f v4l2 -input_format yuyv422 -framerate 30 -video_size 640x480 -i /dev/video0 -c:v libx264 -vf format=yuv420p output.mp4
Обратитесь к документации устройства ввода video4linux2 за дополнительными опциями.
Если выводимая частота кадров ниже ожидаемой, добавьте больше света: веб-камера может снижать частоту кадров, чтобы получить более длительные выдержки в условиях недостаточной освещенности.