Eu uso esse comando para inserir vídeo .mov com canal alfa no vídeo de fundo. Mas o vídeo do canal alfa está sendo reproduzido apenas 1 vez. Como devo usar o comando -loop e posso usar loop a cada 30 segundos?
ffmpeg -i "output_all.mp4" -i "logo\logovid.mov" -filter_complex "[1:v]scale=in_w/2:-2[over];[0:v][over]overlay=main_w-overlay_w-5:50" -codec:v:0 libx264 -b:v 3M "final\gotovo.mp4"
Podemos completar o tempo do logovid para 30 segundos, então fazer um loop usando o filtro de loop e usar o vídeo em loop como
[over]
:ffmpeg -y -i "input.mp4" -i "logo\logovid.mov" -filter_complex "[1:v]scale=in_w/2:-2,format=rgba[logo];color=black@0:100x100:r=30:d=30,format=rgba[c];[c][logo]scale2ref[c0][logo0];[c0][logo0]overlay=repeatlast=0[logo1];[logo1]loop=-1:30000[over];[0:v][over]overlay=main_w-overlay_w-5:50:shortest=1" -codec:v libx264 -b:v 3M "final\gotovo.mp4"
Para testar, baixe vecteezy_countdown-leader-movie-intro-graphic-saber-fire-transparent_16911493.mov aqui e renomeie para logovid.mov.
Também podemos usar o seguinte input.mp4 para testes:
ffmpeg -y -f lavfi -i testsrc=s=1920x1080:r=30:d=250 input.mp4
Explicando as etapas:
Primeira etapa: Sobreposição
logovid
sobre fundo transparente (Defina a duração do fundo transparente para 30 segundos):ffmpeg -y -i logo\logovid.mov -filter_complex "[0:v]format=rgba[logo];color=black@0:100x100:r=30:d=30,format=rgba[c];[c][logo]scale2ref[c0][logo0];[c0][logo0]overlay=repeatlast=0" -c:v prores -pix_fmt yuva444p10le test30sec.mov
O resultado são 10 segundos
logovid
seguidos de 20 segundos de vídeo transparente.Segundo estágio: faça um loop da saída do primeiro estágio várias vezes usando
loop
o filtro:ffmpeg -y -i logo\logovid.mov -filter_complex "[0:v]format=rgba[logo];color=black@0:100x100:r=30:d=30,format=rgba[c];[c][logo]scale2ref[c0][logo0];[c0][logo0]overlay=repeatlast=0[logo1];[logo1]loop=-1:30000" -t 250 -c:v prores -pix_fmt yuva444p10le test250sec.mov
O resultado é:
10sec,20sec
,10sec,20sec
,10sec,20sec
...Terceiro estágio: Use a saída do segundo estágio como
[over]
(aplique também o filtro de escala original):ffmpeg -y -i "input.mp4" -i "logo\logovid.mov" -filter_complex "[1:v]scale=in_w/2:-2,format=rgba[logo];color=black@0:100x100:r=30:d=30,format=rgba[c];[c][logo]scale2ref[c0][logo0];[c0][logo0]overlay=repeatlast=0[logo1];[logo1]loop=-1:30000[over];[0:v][over]overlay=main_w-overlay_w-5:50:shortest=1" -codec:v libx264 -b:v 3M "final\gotovo.mp4"