我试图制作视频的RTMP流并在其上放置一些图形数据。我有一个命令可以创建我需要的输出。唯一的问题是,尽管在渲染过程中PNG图像正在磁盘上更新,但在输出视频中,叠加始终保持不变。我希望ffmpeg每次更改(或每分钟一次)时从磁盘中获取PNG图像并将其用作叠加层。 这可能吗?
这是我用来渲染输出的命令:
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 :(得分:4)
好吧,我终于想出了如何制作我想要的东西。希望,这可能对其他人有用。
我唯一要做的就是为图像输入添加-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