生成透明视频叠加或其他方式?

时间:2016-02-03 06:10:48

标签: android ffmpeg png

我的src文件有很多png,而b.mp4

我想要的:   在b.mp4上叠加pngs(作为动画)

我试过的方式:     200 png的大小差不多是40M,无法放入android手机..     所以我为透明视频生成png使用此命令: " ffmpeg -i %04d.png -vcodec png a.mov"

然后使用 " ffmpeg -i b.mp4 -i a.mov -vf overlay=0:0:0 out.mp4&#34 ;, 有效。 但我得到的问题是a.mov的大小太大(200 png,每个文件是100k,a.mov大约100M),我试过-vcodec copy,rawvideo,qtle,也有一个非常大的文件。有没有想法解决这个问题?

然后我试图找到另一种方法:我生成png到mp4,使用

ffmpeg -i %04d.png -vcodec libx264 a.mp4

我知道libx264与yuv420p(libx264不支持yuva420p)无法保持alpha通道?但是我仍然想尝试一下。然后我在b.mov上覆盖a.mp4;

显然,a.mp4下的黑色背景....因为它失去了它的alpha通道?   然后我尝试混合过滤器,我发现blend=all_mode=lighten看起来和我想要的一样?但它仍然与效果(叠加)不一样

任何可以帮助我的人,谢谢

1 个答案:

答案 0 :(得分:1)

您可以在一个命令中直接在视频上叠加png文件。例如:

ffmpeg -i b.mp4 -framerate 30 -i %04d.png -filter_complex [0:v][1:v]overlay=format=yuv420[vid] -map [vid] -r 30 output.mp4

过去,我发现png文件更适合叠加,然后是mov文件。确保为png输入提供帧速率,否则它将采用25 fps(可能与视频b.mp4不同的fps)。