Los videos FFMPEG Crossfade cambian la resolución del video

Los videos FFMPEG Crossfade cambian la resolución del video

Actualmente estoy usando el comando de esta pregunta para fundir dos videos:

fundido cruzado entre 2 videos usando ffmpeg

Mi 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 animación de fundido funciona bien, excepto que reduce el vídeo a 480x360 en lugar del deseado 640x360. La metainformación mostrará falsamente que las dimensiones son 640x360, pero estoy seguro de que no lo son.

También estoy seguro de que ambos vídeos de entrada tienen exactamente 640x360.

Supongo que la reducción se debe al formato de píxeles yuva420p, pero no estoy seguro de qué otras opciones tengo. Intenté cambiar el formato de píxeles pero hasta ahora nada funcionó.

El comando proporcionado anteriormente se ejecuta sin errores.

Respuesta1

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

El filtro de color genera un vídeo de 320x240 a menos que se especifique lo contrario. El filtro de escala busca preservar la relación de aspecto de la fuente: 4:3 en este caso, por lo que el video está codificado como 640x360 pero con una relación de aspecto de visualización de 4:3, por lo que se muestra como 480x360.

información relacionada