我期待创建使用一组具有透明度合并静态背景PNG图像的视频。
做了很多的挖掘后,我好像它是绝对有可能通过使用滤镜库。
不包括背景我最初的视频制作是:
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
叠加顺序由的输入的顺序控制,从所述文档的ffmpeg
[...]采用两个输入和一个输出,所述第一输入是在其第二输入被覆盖在“主”视频。
因此,您第二个命令就变成了:
ffmpeg -y -loop 1 -qscale 1 -r 1 -b 9600 -i frame_%d.png -vf "movie=bg.png [wm];[wm][in] overlay=0:0" -s hd720 testvid.mp4
有关ffmpeg的新的最新版本-filter_complex
命令使得同样的过程更简单:
ffmpeg -loop 1 -i bg.png -i frame_%d.png -filter_complex overlay -shortest testvid.mp4
一个完整的工作示例:
我们的透明输入图像的源(道歉跳舞):
爆炸与框架ImageMagick的 :
convert dancingbanana.gif -define png:color-type=6 over.png
(设定png:color-type=6
(RGB-哑光)是至关重要的,因为ffmpeg的不能正确处理索引透明度。)输入端被命名over-0.png
, over-1.png
, over-2.png
等
我们的背景图像(缩放到香蕉):
使用ffmpeg version N-40511-g66337bf
(一个混帐建立从昨天),我们这样做:
ffmpeg -loop 1 -i bg.png -r 5 -i over-%d.png -filter_complex overlay -shortest out.avi
-loop
循环背景图像输入,使我们不只是有一个框架,关键!
-r
减慢跳舞的香蕉位,可选的。
-filter_complex
是一个非常最近添加的ffmpeg功能使得多个输入更容易处理。
-shortest
结束编码的最短输入端时,这是必要的,因为循环的背景意味着输入永远不会结束。
使用稍少前沿的构建, ffmpeg version 0.10.2.git-d3d5e84
:
ffmpeg -loop 1 -r 5 -i back.png -vf 'movie=over-%d.png [over], [in][over] overlay' -frames:v 8 out.avi
movie
不允许率设置,所以我们慢下来,而不是背景可以得到相同的效果。 由于覆盖的电影是不正确的输入,我们不能用-shortest
,而是明确地设置帧输出到我们有多少重叠输入帧的数量。
最后的结果(如嵌入的GIF输出):
在未来为17/02/2015引用,命令行是:
ffmpeg -loop 1 -i images/background.png -i images/video_overlay%04d.png -filter_complex overlay=shortest=1 testvid.mp4
感谢llogan谁花时间在这里回复: https://trac.ffmpeg.org/ticket/4315#comment:1
文章来源: Overlay animated images with transparency over a static background image using ffmpeg?