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

1

No momento, estou usando o comando desta pergunta para filtrar dois vídeos:

crossfade entre dois vídeos usando o 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 de crossfade funciona bem, exceto pelo fato de encolher 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 elas não são.

Também estou certo de que os dois vídeos de entrada são exatamente de 640x360.

Acredito que o encolhimento se deva ao formato de pixel yuva420p , mas não tenho certeza sobre as outras opções que tenho. Eu tentei mudar o formato de pixel, mas nada funcionou até agora.

O comando dado acima é executado sem erros.

    
por kmoney12 04.05.2016 / 10:04

1 resposta

1

Use

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 cor produz um vídeo de 320x240, salvo indicação em contrário. O filtro de escala procura preservar a taxa de 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, portanto, mostra como 480x360.

    
por 04.05.2016 / 10:39