I'm trying to take 3 PNG images with transparent background and make a crossfade video with them so I can then put that video on to a background video. I understand I can do possibly do this in 1 command but would like to keep it separate as the background video may be interchangeable. What I have so far is;
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
This seems to work but the background is now black not transparent, I have tried making the output different file types (avi, mov etc.) but that has no effect. The next command I am running is;
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
This also seems to work but again the video I am overlaying doesn't have the transparency so looks bad. Is there a way I can make the first video honour the transparency from the original pngs? If it requires a single command I am happy to do that but I've hit a wall at this point. Any help is appreciated.