ffmepg видео из неравномерной последовательности изображений png
Я собираюсь сделать видео из серии скриншотов (файлы.png). Для каждого снимка экрана есть связанная временная метка с информацией о том, когда он был сделан. Временные интервалы между снимками экрана могут различаться, и очень желательно сохранить эту разницу в видео.
Есть ли способ использовать один ffmpeg
команда /API, обеспечивающая ему последовательность смещения изображения + времени (или кадра) и получение одного видеофайла в качестве вывода? Теперь я должен создать короткие видеофайлы произвольной длины для каждого изображения, а затем объединить их вручную:
ffmpeg -y -loop 1 -i image1.png -c:v libx264 -t 1.52 video1.avi
ffmpeg -y -loop 1 -i image2.png -c:v libx264 -t 2.28 video2.avi
...
ffmpeg -y -loop 1 -i imageN.png -c:v libx264 -t 1.04 videoN.avi
ffmpeg -i "concat:video1.avi|video2.avi|...videoN.avi" -c copy output.avi
Это вполне нормально, хотя интервалы большие, но весь подход кажется мне немного хрупким.
2 ответа
Используйте демоверсию concat.
Пример использования 2, 4 и 0,25 секунд.
Создайте текстовый файл с указанием желаемой продолжительности каждого файла:
file 'image1.png' duration 1.52 file 'image2.png' duration 2.28 file 'image3.png' duration 1.04
Возможно, вам придется повторить последний
file
а такжеduration
линии, чтобы заставить его отображать последний кадр.Запустить
ffmpeg
команда:ffmpeg -f concat -i input.txt -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
Если вы можете упорядочить изображения на основе значения метки времени, и если изображения имеют одинаковый размер, то вы можете использовать приведенную ниже команду для получения видео:
ffmpeg -framerate X -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
Обратитесь к приведенному ниже URL-адресу, который дает вам различные опции для создания видео: