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 секунд.

  1. Создайте текстовый файл с указанием желаемой продолжительности каждого файла:

    file 'image1.png'
    duration 1.52
    file 'image2.png'
    duration 2.28
    file 'image3.png'
    duration 1.04
    

    Возможно, вам придется повторить последний file а также duration линии, чтобы заставить его отображать последний кадр.

  2. Запустить 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-адресу, который дает вам различные опции для создания видео:

FFmpeg Wiki: создание видео слайд-шоу из изображений

Другие вопросы по тегам