Какой кадр получает 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?
Решение
Первое изображение будет с самого первого кадра.
Обратите внимание, что вы вполне можете получить одно или два изображения больше, чем ожидаете.Я считаю, что это связано с округлением и/или тем, что ffmpeg создает окончательные изображения.Например.:Ваше видео действительно длится 7 секунд?Или это 7,63 секунды?
Другие советы
В итоге я сделал следующее, позаимствованное из руководства по ffmpeg:
ffmpeg -v 3 -vsync 0 -sameq -i movie.mpr -f image2 "images-%03d.jpeg"
Это дает мне каждый кадр фильма в формате JPEG с номером 1 до конца фильма.Затем я отфильтровал эти файлы с помощью языка сценариев, зная, что частота кадров составляет 30 кадров в секунду, чтобы захватить каждый 60-й кадр.