Какой кадр получает ffmpeg при снижении частоты кадров

У меня есть видео, которое я хотел бы преобразовывать в изображения кадров каждые 2 секунды.

Например. Если видео длится 7 секунд при 15 кадрах в секунду, я хотел бы получить кадры 1, 31, 61, 91.

Команда:

ffmpeg -i foo.mp4 -r 0.5  -f image2 -vcodec mjpeg foo%d.jpg

кажется, делает то, что я хочу, но какой кадр он получит? 1, 31, 61, 91 или 30, 60, 90 или 13, 43, 73, 103?


person Peter    schedule 12.10.2009    source источник
comment
+1 за то, что опубликовал то, что сработало для вас! Могу я спросить, зачем вам такая точность? Изначально я не исключал этого.   -  person Stu Thompson    schedule 13.11.2009
comment
Я биолог и каждые две секунды пытался фиксировать состояние эксперимента. для сопоставления с другими данными. Один или два кадра, вероятно, не были бы проблемой, но если бы я мог сделать это правильно, почему бы и нет?   -  person Peter    schedule 13.11.2009


Ответы (2)


Первое изображение будет с самого первого кадра.

Обратите внимание, что вы вполне можете получить еще одно или два изображения, чем ожидаете. Я считаю, что это из-за округления и / или того, что ffmpeg создает окончательные изображения. Например: ваше видео действительно длиною в 7 секунд? Или это 7,63 секунды?

person Stu Thompson    schedule 11.11.2009
comment
В тестах ffmpeg, используя его для создания фильмов из пронумерованных изображений, он был согласован после первых нескольких кадров (например, захват каждого 60-го), но в течение первых двух секунд захваченные кадры не были равномерно распределены ... - person Peter; 13.11.2009

В итоге я сделал следующее, во многом заимствованное из учебника ffmpeg:

ffmpeg -v 3 -vsync 0 -sameq -i movie.mpr  -f image2 "images-%03d.jpeg"

Это дает мне каждый кадр фильма в формате JPEG с номером 1 до конца фильма. Затем я отфильтровал эти файлы с помощью языка сценариев, зная, что частота кадров составляет 30 кадров в секунду, чтобы захватить каждый 60-й кадр.

person Peter    schedule 12.11.2009