如何淡入淡出 3 个 png 并保持背景透明,以便我可以将其放在背景视频上

如何淡入淡出 3 个 png 并保持背景透明,以便我可以将其放在背景视频上

我正在尝试拍摄 3 张具有透明背景的 PNG 图像,并用它们制作淡入淡出视频,以便我可以将该视频放到背景视频上。我知道我可以用 1 个命令完成此操作,但我想将其分开,因为背景视频可以互换。我目前拥有的是;

ffmpeg -loop 1 -t 1 -i 1.png -loop 1 -t 1 -i 2.png -loop 1 -t 1 -i 3.png -
filter_complex "[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-
(if(gte(T,0.5),1,T/0.5)))'[b1v]; [2:v][1:v]blend=all_expr='A*
(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; [0:v][b1v][1:v]
[b2v][2:v]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4

这似乎有效,但背景现在是黑色的,不透明,我尝试将输出设置为不同的文件类型(avi、mov 等),但没有效果。我运行的下一个命令是;

ffmpeg -i out.mp4 -i video.mp4 -filter_complex "[0:v]scale=1080:-2[fg1]; 
[1:v]scale=1920:-1,setpts=PTS-STARTPTS[bg];[bg]
[fg1]overlay=400:400:shortest=1,format=yuv420p[v]" -map "[v]" -movflags 
+faststart final.mp4

这似乎也有效,但我叠加的视频再次没有透明度,因此看起来很糟糕。有没有办法让第一个视频保留原始 png 的透明度?如果它只需要一个命令,我很乐意这样做,但我现在遇到了障碍。任何帮助都值得感激。

答案1

在第一个命令中,更改format=yuv420pformat=yuva420p。透明度需要一个 alpha 通道,但是您目前正在转换为没有 alpha 通道的格式。format=yuva444p将提供稍微好一点的质量。

更重要的是,输出到-map "[v]" -c:v png out.mov

相关内容