我想使用一组带有透明度的PNG图像和静态背景创建视频。
通过阅读很多资料,我发现可以使用filters库来实现这一目标。
我最初制作视频时没有包括背景,代码如下:
ffmpeg -y -qscale 1 -r 1 -b 9600 -loop -i bg.png -i frame_%d.png -s hd720 testvid.mp4
使用 -vf
可以将背景作为叠加层应用:
ffmpeg -y -qscale 1 -r 1 -b 9600 -i frame_%d.png -vf "movie=bg.png [wm];[in][wm] overlay=0:0 [out]" -s hd720 testvid.mp4
然而问题是它会将背景覆盖在输入框上。根据libacfilter,我可以拆分输入并对其内容进行操作。我想知道是否可以以某种方式更改叠加顺序?
非常感谢任何帮助!
更新1:
我正在尝试让以下过滤器工作,但我得到的电影没有背景:
ffmpeg -y -qscale 1 -r 1 -b 9600 -i frame_%d.png -vf "movie=bg.png [bg]; [in] split [T1], fifo, [bg] overlay=0:0, [T2] overlay=0:0 [out]; [T1] fifo [T2]" -s hd720 testvid.mp4
更新2:
使用-vf选项进行视频制作。只需将输入管道分割并在其上应用图像,然后叠加两个分割的源!可能不是最有效的方法...但它起作用了!
ffmpeg -y -r 1 -b 9600 -i frame_%d.png -vf "movie=bg.png, scale=1280:720:0:0 [bg]; [in] format=rgb32, split [T1], fifo, [bg] overlay=0:0, [T2] overlay=0:0 [out]; [T1] fifo [T2]" -s hd720 testvid.mp4