Доброе утро, у меня есть скрипт, который генерирует 2 изображения в секунду в папке, и я хочу, чтобы ffmpeg преобразовал их в серию видео mpeg-4 продолжительностью 5 секунд и показывающих 2 изображения в секунду (всего 10 кадров). Проблема в том, что после того, как я запускаю скрипт и после запуска ffmpeg, он обрабатывает видео с изображениями, которые он ловит, сразу после того, как я только запускаю команду, а затем закрывается. Я попытался с помощью команды -re, и ничего не происходит. Как мне продолжать работать с ffmpeg и конвертировать изображения в процессе их создания? Вот код, который я использую:

ffmpeg -re -framerate 2 -s 1920x1200 -i C:\Desktop\input\%05d.bmp -vcodec libx264 -pix_fmt yuv420p -map 0 -segment_time 5 -g 5 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*5)" -f segment C:\Desktop\output\%05d.mp4

Все, что я хочу, это выполнить ffmpeg один раз и позволить ему работать и закрываться только после завершения генерации.

2 ответа2

1

Труба изображения. При чтении изображений из файлов ffmpeg идентифицирует последнее изображение в последовательности во время инициализации и считывает до этого изображения.

cat images | ffmpeg -f image2pipe -re -framerate 2 -i - -vcodec libx264 ...

Изменить: Не удивительно, что кошка также устанавливает входной список при инициализации. Тем не менее, метод ниже работает для меня.

Пусть скрипт добавит новые изображения в файл BLOB-объектов

ie cat new-image >> all-images

пока вызов ffmpeg

ffmpeg -f image2pipe -re -framerate 2 -i all-images -vcodec libx264 ...

Очень важно, чтобы скорость создания и добавления нового изображения была равна или превышала скорость чтения ffmpeg.

0

Чтобы ffmpeg получал добавленные новые изображения, он должен получать их из stdin. Вам нужно будет написать программу или сценарий, который будет снабжать его новыми изображениями по мере их поступления.

Для примеров см .:

Этим программам потребуются некоторые изменения, чтобы они соответствовали вашим потребностям, но они являются хорошей отправной точкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .