2016-12-13 2 views
0

Я пытаюсь создать RTMP-поток видео и поместить на него некоторые графические данные. У меня есть команда, которая создает нужный мне результат. Единственная проблема заключается в том, что, несмотря на то, что изображение PNG обновляется на диске во время процесса рендеринга, в выходном видео оверлей остается неизменным. Я хотел бы, чтобы ffmpeg принимал PNG-образ с диска каждый раз, когда он был изменен (или один раз в минуту) и использовал его в качестве наложения. Возможно ли это?Обновить наложение PNG на видео с помощью ffmpeg

Вот команда, я использую, чтобы сделать вывод:

ffmpeg \ 
-re -y \ 
-f lavfi \ 
-i "movie=filename=video/videobg.mp4:loop=0, setpts=N/(FRAME_RATE*TB)" \ 
-loop 1 \ 
-i images/forecast.png \ 
-filter_complex "[1:v]format=argb,geq=r='r(X,Y)':a='0.9*alpha(X,Y)'[overlay]; [0:v][overlay]overlay" \ 
-i data/musicbg.mp3 \ 
-ac 1 \ 
-ar 44100 \ 
-b:a 128k \ 
-vcodec libx264 \ 
-pix_fmt yuv420p \ 
-r 30 \ 
-g 60 \ 
output.mp4 
+0

Непосредственно. То, что вы могли попробовать, это подать изображение через трубку, то есть '-f ​​image2pipe -framerate 1/60 -i pipe: .png' – Mulvya

+0

Я не могу понять, как правильно использовать эту опцию. Не могли бы вы привести несколько примеров? –

ответ

2

Ну, я, наконец, понял, как сделать то, что я хочу. Надеюсь, это может быть полезно для кого-то другого.

Единственное, что мне нужно было сделать, это добавить параметр -f image2 для ввода изображения. Команда немного отличается от той, которую я написал выше, потому что я изменил порядок источников ввода, но на самом деле это то же самое. Вот решение:

ffmpeg \ 
-re -y \ 
-loop 1 \ 
-f image2 \ 
-i images/forecast.png \ 
-f lavfi \ 
-i "movie=filename=video/videobg.mp4:loop=0, setpts=N/(FRAME_RATE*TB)" \ 
-filter_complex "[0:v]format=argb,geq=r='r(X,Y)':a='0.9*alpha(X,Y)'[overlay]; [1:v][overlay]overlay" \ 
-i data/musicbg.mp3 \ 
-ac 1 \ 
-ar 44100 \ 
-b:a 128k \ 
-vcodec libx264 \ 
-pix_fmt yuv420p \ 
-r 30 \ 
-g 60 \ 
output.mp4 
+0

Странно. Я мог бы поклясться, что мультиплексором по умолчанию для одного изображения было также изображение2. Оказывается, это imageauto demuxer, который отображается как png_pipe для PNG, но не для одного JPG. Хорошо знать. Благодарю. – Mulvya

Смежные вопросы