ffmpeg使用YUYV打开网络摄像头,但我想要MJPEG


14

我需要ffmpeg以MJPEG模式打开网络摄像头(logitech c910),因为使用MJPEG“协议”可以使网络摄像头提供约24帧的速度,而使用YUYV只能提供约10 fps的速度。我可以使用ffmpeg命令行在它们之间进行选择吗?

xx@(none) ~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUV 4:2:2 (YUYV)

    Index       : 1
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : MJPEG

我当前的命令行:

ffmpeg -y -f alsa -i hw:3,0 -f video4linux2 -r 20 -s 1280x720 -i /dev/video0 -acodec libfaac -ab 128k -vcodec libx264 /tmp/web.avi

从网络摄像头录制时,ffmpeg会生成损坏的h264流,但是从x11grab录制时,ffmpeg会产生正常的h264 strem。另一个编解码器(mjpeg,mpeg4)可以与网络摄像头配合使用……但这是另一回事了。

更新完整ff​​mpeg的控制台输出:http : //pastebin.com/Hzem6CKF(您可以看到它以YUV模式打开了视频设备,但该设备也可以提供MJPEG输出)。

Answers:


13

您可以列出有关网络摄像头可以输出的其他信息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输入设备更多选项,文档。

  • 如果输出的帧速率低于预期,则添加更多光线:网络摄像头可能会降低帧速率,以在昏暗的环境中获得更长的曝光时间。


0
ffmpeg -t 60 -f video4linux2 -input_format mjpeg -i /dev/video0 -c:v libx264 -strict -2 /DataVolume/share/Public/v/outputs.mp4

4
欢迎来到超级用户!您可以对此进行扩展吗?特别是,它拥有LordNekbeard所没有的哪些信息?:)
bertieb '18

-strict -2除非以下情况,否则不需要:1)您ffmpeg已经过时了,2)您正在编码AAC音频。
llogan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.