使用 ffmpeg 录制网络摄像头

使用 ffmpeg 录制网络摄像头

我正在与 ffmpeg 作斗争。我的网络摄像头可以以 30 fps 拍摄 720p,但仅限于使用 MJPEG 编解码器时:

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


-- cut -- 

                Size: Discrete 1280x720
                        Interval: Discrete 0.133 s (7.500 fps)
                        Interval: Discrete 0.200 s (5.000 fps)
-- cut --

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


-- cut -- 
                Size: Discrete 1280x720
                        Interval: Discrete 0.033 s (30.000 fps)
                        Interval: Discrete 0.040 s (25.000 fps)
                        Interval: Discrete 0.050 s (20.000 fps)
                        Interval: Discrete 0.067 s (15.000 fps)
                        Interval: Discrete 0.100 s (10.000 fps)
                        Interval: Discrete 0.200 s (5.000 fps)

-- cut --

我不知道如何告诉 ffmpeg 读取 MJPEG 压缩格式。它试图读取原始版本,但最终质量很差。

答案1

你没有说你正在使用什么选项,但我确实找到了这两个例子。这些对你有用吗?

ffmpeg -i <input_file> -vcodec mjpeg -qmin 1 -qmax 1 -o <output_file.avi>
ffmpeg -i <input_file> -vcodec mjpeg -qscale 1 <output_file.avi>

对于第二个例子,我发现了一条注释,其中提到切换-qscale ...产生了显着的差异。 x 越低,质量越好(范围 2 到 32,允许分数)。

相关内容