生成透明视频覆盖或其他方式?

generate transparent video overlay or another way?

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

我想要什么: 在 b.mp4

上叠加 png(作为动画)

我试过的方法: 200张png大小都快40M了,装不下android phone.. 所以我生成 pngs 到透明视频使用这个命令: "ffmpeg -i %04d.png -vcodec png a.mov "

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

然后我试图找到另一个 way:I 生成 png 到 mp4,使用

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

而且我知道 libx264 和 yuv420p(libx264 不支持 yuva420p)不能保持 alpha 通道?但我仍然想要 try.then 我在 b.mov;

上叠加了 a.mp4

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

不一样

谁能帮帮我,谢谢

您可以通过一个命令将 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 不同)。