Hacer cropping de vídeos con mencoder

Si alguna vez tuvo que recortar un vídeo (para quitar una barra de dirección en un screencast, por ejemplo), sabe que puede ser tedioso.

Si no lo hizo, esperamos este tutorial le sea de gran ayuda, pero tendrá que querer hacerlo en Linux con la pareja mplayer/mencoder y no temer la línea de comando.

Una primera fuente que reusaré ámpliamente es este sitio en Francés:

https://sites.google.com/site/mylinuxpassion/astuces/video/cropping-facile

El autor explica que se puede primero detectar los bordes negros de un vídeo usando cropdetect:

mplayer mivideo.avi -vf cropdetect

Esto nos dará una idea del formato a usar luego: debería encontrar algo así en la salida del script en el terminal:

crop=950:510:5:5

Este valor se expresa así:

crop=w:h:x:y

Donde:

w = el ancho total del vídeo después del corte

h = el alto total del vídeo después del corte

x = el punto horizontal a partir del cual medimos el ancho total (de donde partimos)

y = el punto vertical (a partir de arriba) a partir del cual medimos el alto total (de donde partimos)

Entonces, un crop=950:510:5:5 dice que, de un vídeo más grande que 955×515, partimos del punto 5x,5y (a 5 pixeles del punto de la extrema izquierda arriba) y cortamos solo un cuadrado de 950×510 píxeles a partir de este punto.

El comando para aplicar este corte sería:

mencoder instructivo.mp4 -vf crop=950:510:5:5 -ovc xvid 
  -xvidencopts bitrate=1500 -oac mp3lame 
  -lameopts cbr:br=128 -o resultado.avi

Debería generar el vídeo esperado, recortado justo donde debe ser.

Scale

Lamentablemente, alguna vez puede que le ocurra algo así:

Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
[CROP] Bad position/width/height - cropped area outside of the original!
FATAL: Cannot initialize video driver.

Esto, como indicado en el mensaje en Inglés, significa que, por alguna razón, el sistema considera que la zona de corte dibuja un rectángulo que sale fuera del tamaño real del vídeo.

Ha podido ser inducido en el error por el crop indicado por mplayer, porque este (al parecer) puede contabilizar las medidas de una manera distinta de la de mencoder.

Por ello, puede cambiar primero el tamaño del vídeo, de tal manera que la medida del crop esté mejor controlada.

En este caso, deberá introducir un comando “scale” dentro del comando de mencoder.

Un asunto que no queda claro, es que si pone el “scale” después del “crop”, este también se *ejecutará* después del crop, lo que lleva al mismo error de tamaño de crop que sale de la zona.

Por ello, es importante usar scale *antes* de crop, así:

mencoder instructivo.mp4 -vf scale=960:540,crop=950:510:5:5 
  -ovc xvid -xvidencopts bitrate=1500 -oac mp3lame 
  -lameopts cbr:br=128 -o resultado.avi

No explicaré las demás opciones aquí. En línea de comando, puede usar “man mencoder” para saber más sobre estas.

Esperamos les haya ayudado algo…