cambiar la relación de aspecto sin estirar el video ffmpeg

ffmpeg -i "a.mov" -i "b.mp4" -filter_complex "[0:v]setsar=sar=${SAR}[a]; [1:v]setsar=sar=${SAR}[b]; [a][0:a] [b][1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -preset veryfast -crf 18 "merged.mp4"

Usando el código anterior, puedo fusionar con éxito a.mov (1920x816) con b.mov (1920x816). Sin embargo, Youtube end screensrequiere que el video sea 16:9 aspect ratio.Por lo tanto, probé el filtro de escala y configuré SAR en 16:9. sin embargo, esto lleva a que el video de salida se estire para adaptarse al formato 16:9 ratio.

¿Cómo puedo generar un video con una 16:9relación con el video real con resolución 1920x816? Esencialmente, el espacio vertical restante debe ser negro sin estirar la 816altura del video para que se ajuste a la 1080altura.

Respuestas (1)

¿Has probado a subirlo a Youtube? La ventana de su reproductor tendrá una proporción fija de 16:9 (en YT.com), pero deben aceptar videos fuente de cualquier proporción y simplemente centrarlos en su ventana durante la reproducción.

De todos modos, aquí está el método:
ffmpeg -i "a.mov" -i "b.mp4" -filter_complex "[0:v]scale=iw*sar:ih,pad=if(gt(dar,16/9),iw,2*trunc(ih*16/9/2)):if(gt(dar,16/9),2*trunc(iw*9/16/2),ih):(ow-iw)/2:(oh-ih)/2,setsar=1[a]; [1:v]scale=iw*sar:ih,pad=if(gt(dar,16/9),iw,2*trunc(ih*16/9/2)):if(gt(dar,16/9),2*trunc(iw*9/16/2),ih):(ow-iw)/2:(oh-ih)/2,setsar=1[b]; [a][0:a] [b][1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -preset veryfast -crf 18 "merged.mp4

La misma pregunta que el otro comentario, ¿qué sucede si la relación de aspecto es, por ejemplo, 13: 6? ¿Funcionará si cambio el comando a - "-filter_complex", "[0:v]pad=iw:if(lte(ih\\,iw)\\,ih\\,2*trunc(iw*13/6/2)):(ow-iw)/2:(oh-ih)/2[v0];[1:v][v0]scale2ref[v1][v0];[v0][v1]overlay=x=(W-w)/2:y=(H-h)/2[v]" ?
Suponiendo que 13/6 es el DAR de salida requerido, reemplace 16/9 en mi comando con 13/6 y 9/16 con 6/13.
Este es el filtro que usé para un video que tiene una relación de aspecto de 16/9 [0:v]pad=iw:if(lte(ih\\,iw)\\,ih\\,2trunc(iw*16/9/2)):(ow-iw)/2:(oh-ih)/2[v0];[1:v][v0]scale2ref[v1][v0];[v0][v1]overlay=x=(W-w)/2:y=(H-h)/2[v]. ¿Estoy en lo correcto al cambiar el filtro al siguiente si la relación de aspecto es de 13/6 [0:v]pad=iw:if(lte(ih\\,iw)\\,ih\\,2*trunc(iw*13/6/2)):(ow-iw)/2:(oh-ih)/2[v0];[1:v][v0]scale2ref[v1][v0];[v0][v1]overlay=x=(W-w)/2:y=(H-h)/2[v]?
El primer filtro mencionado anteriormente funciona perfectamente para videos que tienen una relación de aspecto de 16/9 (sin usar DAR), es por eso que me preguntaba si podría cambiar el valor trunc en iw*13/6/2lugar de iw*16/9/2.
Hice una nueva pregunta, ¿puedes echar un vistazo? video.stackexchange.com/questions/28036/…