Vídeos FFMPEG Crossfade alteram a resolução do vídeo

Vídeos FFMPEG Crossfade alteram a resolução do vídeo

Atualmente estou usando o comando desta pergunta para fazer crossfade de dois vídeos:

crossfade entre 2 vídeos usando ffmpeg

Meu comando:

ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i color=black -    filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v]scale=640x360,trim=duration=9[over];\
[over][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
 -vcodec libx264 -map [outv] output.mp4

Esta animação crossfade funciona bem, exceto que reduz o vídeo para 480x360 em vez dos 640x360 desejados. A meta informação mostrará falsamente que as dimensões são 640x360, mas tenho certeza de que não são.

Também tenho certeza de que ambos os vídeos de entrada têm exatamente 640x360.

Suponho que a redução se deva ao formato do pixel yuva420p, mas não tenho certeza de quais outras opções tenho. Tentei alterar o formato do pixel, mas nada funcionou até agora.

O comando fornecido acima é executado sem erros.

Responder1

Usar

ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i "color=black:s=640x360:d=9" 
-filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
 -vcodec libx264 -map [outv] output.mp4

O filtro de cores gera um vídeo de 320x240, salvo especificação em contrário. O filtro de escala procura preservar a proporção da fonte - 4:3 neste caso, portanto o vídeo é codificado como 640x360, mas com uma proporção de exibição de 4:3 é exibido como 480x360.

informação relacionada