Como crossfade 3 pngs mantendo o fundo transparente para que eu possa colocá-lo em um vídeo de fundo

0

Estou tentando tirar três imagens PNG com fundo transparente e fazer um vídeo crossfade com elas para que eu possa colocar o vídeo em um vídeo em segundo plano. Eu entendo que posso fazer isso em 1 comando, mas gostaria de mantê-lo separado, como o vídeo de fundo pode ser intercambiável. O que eu tenho até agora é:

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

Isto parece funcionar, mas o fundo agora é preto, não transparente, eu tentei fazer a saída diferentes tipos de arquivos (avi, mov etc.), mas isso não tem efeito. O próximo comando que estou executando é:

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

Isso também parece funcionar, mas novamente o vídeo que estou sobrepondo não tem a transparência, então parece ruim. Existe uma maneira que eu possa fazer o primeiro vídeo honrar a transparência dos pngs originais? Se for necessário um único comando, fico feliz em fazer isso, mas neste momento, atingi uma parede. Qualquer ajuda é apreciada.

    
por Jamie Stenhouse 04.05.2017 / 06:59

1 resposta

0

No primeiro comando, altere format=yuv420p para format=yuva420p . A transparência requer um canal alfa, mas você está, no momento presente, convertendo para um formato sem um. format=yuva444p fornecerá uma qualidade ligeiramente melhor.

E mais importante, a saída para -map "[v]" -c:v png out.mov

    
por 04.05.2017 / 08:11