Los mejores ajustes preestablecidos para escalar videos heredados 4: 3 y 5: 4 usando ffmpeg

Tenemos videos en formato fila (.mov) que son 4:3 (768x576) y 5:4 (720x576). Tenemos un ajuste preestablecido recomendado para transmitir a través de DASH a reproductores HTML5 y Silverlight (este es el segundo paso):

ffmpeg -i input.mp4 -an -vcodec libx264 -profile:v main -pass 2 \
-vf scale=320:180 -pix_fmt yuv420p -g 75 -keyint_min 25 -b:v 384k \
-maxrate 384k -bufsize 384k -passlogfile passlogfile_fp output_320x180_384.mp4 

con 5 más, pero diferente resolución y bitrate:

  • 480:270 -b:v 700k
  • 800:450 -b:v 1300k
  • 960:540 -b:v 1300k
  • 1280:720 -b:v 3500k
  • 1920:1080 -b:v 5000k

Con los videos fuente 4:3 estamos contentos con el resultado: la imagen no se estira, pero los reproductores agregan un borde negro para ajustarse al ancho. Aunque no estamos seguros de si este ajuste preestablecido es adecuado para estos videos fuente.

Con el 5:4 no estamos muy contentos, porque la imagen se estira para una visualización de 16:9. ¿Cómo podemos lograr el mismo efecto que con los videos fuente 4:3? ¿Son estos ajustes preestablecidos adecuados para estos formatos de video o deberíamos buscar algo más?

Aprecio tu ayuda. Nuestro conocimiento sobre la codificación es bastante limitado.

Respuestas (1)

Para mantener la relación de aspecto de la película de origen a través del escalador de FFMpeg, debe especificar una escala con una incógnita:

ffmpeg -i input.mp4 -an -vcodec libx264 -profile:v main \
  -pass 2 -vf scale=-1:180 -pix_fmt (etc...)

El "-1" le indicará al escalador que haga que la salida tenga una altura de 180 px, y sin importar cuántos píxeles de ancho debe tener la salida para preservar su relación de aspecto original.

Esto le daría películas con la relación de aspecto anterior, necesita una forma de forzar la película original en un rectángulo arbitrario. La documentación da un ejemplo de cómo hacer esto:

ffmpeg -i input.mp4 -vf scale="'if(gt(a,4/3),320,-1)':'if(gt(a,4/3),-1,240)'"  

Este ejemplo creará una película de 320x240 y conservará la relación de aspecto de píxeles original, sea cual sea. La salida se colocará contra la esquina superior izquierda (creo), por lo que tendrá que hacer un filtro para volver a colocarla.