Запись веб-камеры с использованием ffmpeg

2

Я борюсь с ffmpeg. Моя веб-камера может работать с разрешением 720p при 30 кадрах в секунду, но только при использовании кодека 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. Он пытается прочитать необработанный вариант, который заканчивается ужасным качеством.

Позволь мне быть
источник

Ответы:

3

Вы не говорите, какие опции вы используете, но я нашел эти 2 примера. Это работает для вас?

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 ...коммутатор сделал заметную разницу. Чем ниже ваш х, тем лучше качество (от 2 до 32, допустимые доли).

SLM
источник
Хм, интересно, я это уже пробовал, но, похоже, это действительно правильно. Просто моя веб-камера невероятно темпераментна (начинает запись раз в пять попыток).
Let_Me_Be