Ffmpeg y el "height not divisible by 2"

Minipost de trivialidades nardogeeks, estaba queriend convertir un video de formato WEBM a MP4, nada del otro mundo ¿Qué uso? Handbrake me tiró un error raro así que pasé al inconfundible ffmpeg, el mejor de todos.

Pero he aquí que me encontré con un error "height not divisible by 2" WTF?

Pues bien, resulta que el formato MP4 requiere que las dimensiones sean pares así se pueden dividir por dos, sí, no tenía idea de esto, pero es lo que es y... a fumarla... ¿O no? Pues no mi ciela, porque ffmpeg es una usina de opciones extrañas que te permiten hacer cualquier cosa con los datos.

Encontré un método genial en StackOverflow (dónde sino?) que implica

Dividir la altura y el ancho original por dos, redondear al pixel más cercano, multiplicar por dos de nuevo (ahora será un número par), agregar píxeles negros donde requiera. Todo esto con un simple comando:

ffmpeg -i gato.webm -vcodec libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -r 24 -y -an gato.mp4 

Y el resultado es el correcto!

también está la versión cropeadora que es igual:

ffmpeg -i gato.webm -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" gato.mp4

El video en cuestión:

Re serio lo mío 😁

Si te gustó esta nota podés...
Invitame un café en cafecito.app

Categoría: Informática Etiquetas:  conversión ffmpeg mp4 mpeg4 video

Otros posts que podrían llegar a gustarte...

Comentarios

  • eduqlm     22/03/2023 - 11:00:29

    Yo uso AviDemux, funciona de maravillas y te permite hacer todas esas chanchadas desde GUI

    • Fabio Baccaglioni     23/03/2023 - 00:04:49

      también uso mucho AviDemux pero a veces la caga con algunos videos porque no sabe cómo lidiar con problemas como éste, al hacerse todo visual, debe cargarlo y poder mostrarlo. Ffmpeg, en cambio, podés cagarla tranquilo que no se va a colgar por no poder mostrar porque... bueno, no muestra nada!

  • MaC     23/03/2023 - 10:58:15

    Los odio...que conste en actas

  • CoYo     28/03/2023 - 16:39:37

    Llegue tarde, pero este problema te lo vas a encontrar muy seguido. Los muchachos que suelen encodear material, se ve, no la tienen muy clara. Terminan sacando material en resoluciones mas que bizarras con el solo objetivo de achicar el flow de datos (y corrigiendo con DAR y SARs (relaciones de aspecto) mas bizarros aún que muchos reproductores no logran interpretar, estropeando todo)
    Como laburo mucho con videos, y ffmpeg es, por lejos, la mejor herramienta para ello, mi approach para solucionar esto es mas preciso.
    Basheando, y haciendo el ajuste de 1 línea de píxeles nomás si es que la altura o el ancho, re escalado, da impar.

    alto=$(ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height ${origen} | grep -m 1 -o -P ´(?<=height.*´)

    ancho=$(ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width ${origen} | grep -m 1 -o -P ´(?<=width.*´)

    anchosalida=$(( ${ancho} / ${factor} ))
    altosalida=$(( ${alto} / ${factor} ))
    echo "salida alto "$altosalida" ancho "$anchosalida

    if (( $altosalida % 2 == 0 )); then ajustealto=0; echo "NO AJUSTANDO ALTO"; else ajustealto=1; ((altosalida++)); echo "AJUSTANDO ALTO a" $altosalida; fi

    if (( $anchosalida % 2 == 0 )); then ajusteancho=0; echo "NO AJUSTANDO ANCHO"; else ajusteaancho=1; ((anchosalida++)); echo "AJUSTANDO ANCHO a" $anchosalida; fi

    costó armar los IF, pero sin duda, la combinación bash + ffmpeg la rompe

    Esto no lo vas a encontar en StackOverflow Guiño

    • Fabio Baccaglioni     28/03/2023 - 16:58:26

      sabés en qué formato lo encontré? En webm, lo usan muchos sitios para achicar tamaño y acepta valores impares, así que cuando hacen un escalado te lo dejan incompatible, todo sea por ahorrar ancho de banda y espacio, claro.

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https

Negrita Cursiva Imagen Enlace


Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.