Saltar al contenido

Mantener la relación de aspecto con FFmpeg

Solución:

-vf "scale=640:-1"

funciona muy bien hasta que encuentre un error

[libx264 @ 0x2f08120] height not divisible by 2 (640x853)

Entonces, el enfoque más genérico es usar expresiones de filtro:

scale=640:trunc(ow/a/2)*2

Toma el ancho de salida (ow), lo divide por la relación de aspecto (a), divide por 2, trunca los dígitos después del punto decimal y multiplica por 2. Garantiza que la altura resultante sea divisible por 2.

Créditos a ffmpeg trac

ACTUALIZAR

Como señalaron los comentarios, una forma más sencilla sería utilizar -vf "scale=640:-2". Créditos a @BradWerth por una solución elegante

Por ejemplo:

Relación de aspecto de 1920×1080 16: 9 => Aspecto de 640×480 4: 3:

ffmpeg -y -i import.media -aspect 16:9 scale=640x360,pad=640:480:0:60:black output.media

relación de aspecto 16: 9, ancho de tamaño 640 píxeles => altura 360 píxeles:

Con un tamaño de salida final de 640×480 y una imagen negra de almohadilla de 60 píxeles (superior e inferior):

"-vf scale=640x360,pad=640:480:0:60:black"

Le pregunté esto hace mucho tiempo, pero en realidad tengo una solución que no conocía en ese momento: para mantener la relación de aspecto, debe usar la escala del filtro de video, que es una herramienta muy poderosa. filtrar.

Simplemente puede usarlo así:

-vf "scale=640:-1" 

Lo que fijará el ancho y proporcionará la altura requerida para mantener la relación de aspecto. Pero también puede usar muchas otras opciones e incluso funciones matemáticas, consulte la documentación aquí: http://ffmpeg.org/ffmpeg.html#scale

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *