Как извлечь кадры (или отдельные кадры) из видео YUV с помощью ffmpeg

Вот код для извлечения кадров из видео MP4. ffmpeg -i above_marathon_250.mp4 images%03d.bmp Но этот же код не работает для видео формата YUV. Кто-нибудь знает, как можно извлечь кадр(ы) из видео формата YUV?


person mrana    schedule 13.08.2015    source источник


Ответы (3)


Это не работает, потому что файлы yuv не имеют заголовка, поэтому ffmpeg не знает, какой размер/pixfmt у файла. Вам нужно указать разрешение и pixmt вручную:

ffmpeg -video_size 1920x1080 -r 25 -pixel_format yuv422p -i file.yuv output-%d.png

А затем отрегулируйте size/pixfmt, чтобы он соответствовал вашему конкретному видео.

[править] Я также предлагаю в будущем публиковать такие вопросы на суперпользователе, это не имеет ничего общего с программированием.

person Ronald S. Bultje    schedule 13.08.2015
comment
Это работает отлично. Спасибо @Ronald Кроме того, я новичок в StackOverflow, поэтому мне нужно знать о суперпользователе. я сделаю. спасибо - person mrana; 14.08.2015

Команда, указанная на ffmpeg.org,

ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg

Это извлечет из видео один видеокадр в секунду и выведет их в файлы с именами foo-001.jpeg, foo-002.jpeg и т. д. Масштаб изображений будет изменен, чтобы соответствовать новым значениям WxH.

В вашем случае вы можете изменить приведенную выше команду на

ffmpeg -i inputfile.yuv -r 1 -f image2 images%05d.png 

где r - частота кадров, которая должна быть установлена ​​​​на 1, чтобы извлечь один кадр из yuv.

person shri    schedule 13.08.2015
comment
установка r=1 ffmpeg -i inputfile.yuv -1 1 -f image2 images%05d.png Не работает. - person mrana; 13.08.2015
comment
r уже имеет значение 1 в приведенной выше команде, поэтому используйте команду как есть - person shri; 13.08.2015
comment
Он не создает никакого изображения, и это сообщение в командной строке: [rawvideo @ 0x7fef6880da00] Could not find codec parameters for stream 0 (Video:rawvideo (I420 / 0x30323449), yuv420p, -4 kb/s):unspecified size Consider increasing the value for the 'analyzeduration' and'probesize' options above_marathon_250.yuv: could not find codec parameters Input #0,rawvideo, from 'above_marathon_250.yuv': Duration:N/A,bitrate:n/a Stream #0:0:Video:rawvideo(I420 / 0x30323449), yuv420p, -4 kb/s, 25 tbr, 25 tbn,25 tbc Output #0,image2,to'images%05d.png': Output file #0 does not contain any stream - person mrana; 13.08.2015
comment
пл. найдите ссылку ниже stackoverflow.com/questions/11659267/, где упоминается, что файлы, которые я тестировал, были фактически повреждены. Но если кто-то сталкивается с этой проблемой, может помочь, например, установка для -probesize и -analyzeduration значений 100 и 10000000. - person shri; 13.08.2015
comment
не вижу положительного результата :( - person mrana; 13.08.2015

Вы должны указать размер видео -video_size и частоту кадров -r, поэтому используйте следующий скрипт:

ffmpeg.exe -video_size 720x576 -r 25 -ss 00:00:00 -i video_input_720x576_25.yuv -vframes 1 -q:v 1 frame_output_720x576_25.jpg

Если вы хотите указать формат входного видео, включите -pixel_format yuv420p или любой другой формат, кроме yuv420p.

person zinon    schedule 01.11.2017