Mencoder y Ffmpeg

Desde hace algún tiempo se han publicado varios post que hacen referencia al mencoder y al ffmpeg, incluso si revisamos los repos de verano los encontraremos, entonces se imponen dos preguntas:
¿Qué son estos paquetes?

Mencoder es un codificador de vídeo libre liberado bajo licencia GPL que se incluye en el reproductor multimedia MPlayer mientras que Ffmpeg es una colección de software que permite grabar y convertir videos y audio.

¿Qué podemos hacer con ellos?

Para darle respuesta a esta segunda interrogante les traigo unos “trucos” y dejo en sus manos juzgar si se merecen o no un lugar en nuestra computadora.

1– Extraer la pista de audio de un video:

mplayer -vo null -hardframedrop -ao pcm:file=audio.wav video.avi

Datos:
video.avi: video al que deseamos extraer el audio.
audio.wav: nombre del archivo generado con el audio.

2– Rotar un video:

mencoder -vop rotate=2 -oac pcm -ovc lavc ./normal.avi -o ./rotada.avi

Datos:
rotate=<0-7>: Rota  y  voltea  (opcional)  la  imagen  +/-  90  grados. Para parámetros entre 4-7 la rotación se hace solo si la geometría de la película es en vertical y no en horizontal.
normal.avi: video al que deseamos hacer la rotación.
rotada.avi: nombre del video generado con la rotación especificada.

3– Ver un video a partir de imágenes JPG:

mplayer "mf://*.jpg" -mf fps=15

crear el video:

mencoder "mf://*.jpg" -mf fps=15 -ovc lavc -o ./dest.avi

Datos:
mf://*.jpg: toma todas la imágenes con esta extensión, también podemos utilizarlo con PNG: mf://*.png
fps: establece la velocidad de transición entre imágenes.
dest.avi: nombre del video generado.

4– Mezclar un video y un audio:

ffmpeg -i sonido.wav -i video.avi videoconaudio.avi

Datos:
sonido.wav: fichero de sonido.
video.avi: fichero de video.
videoconaudio.avi: nombre del fichero de video con el audio especificado.

5– Convertir un avi a gif.

ffmpeg -i video.avi -pix_fmt rgb24 gif_generado.gif

Datos:
video.avi: video que deseamos transformar en un GIF.
gif_generado.gif: nombre del fichero obtenido a partir del video.
rgb24: especificamos los colores.

6– Grabar el escritorio:

ffmpeg -f x11grab -s 1024x768 -r 25 -i :0.0 -sameq /home/carpeta-personal/mi-video.mpg

Datos:
-f: Indica el formato.
-s: Indica la resolución, puede ser: 1024×768, hd720, 640×480, svga.
-r: Tasa de frames.
-/home/carpeta-personal/…: Lugar en donde el vídeo se va a guardar. Tener en cuenta que en el directorio especificado se debe tener permiso de escritura.
mi-video.mpg: nombre y extensión del archivo.

Para detener la grabación pulsamos la combinación de teclas: Ctrl + C

7– Para finalizar les detallo como arreglar una película desfasada con respecto los subtítulos. La solución se bifurca pues tenemos dos opciones: entrar al fichero de subtítulos e ir modificando los tiempos en cada diálogo lo cual es tedioso, o trucar el tiempo de nuestro filme adicionando o quitando un segmento de video. Veamos entonces como trucar el tiempo, lo primero es determinar el desfasaje. Simplemente observando la línea de tiempo y escuchando podemos establecer cuanto se demora o adelanta el texto con respecto a la voz. Supongamos que determinamos que el texto sale en pantalla 20 segundos después que se pronunció, la solución es adicionarle 20 segundos al video.

Así lo podemos hacer:

Necesitamos obtener 20 segundos de video y para hacerlo más fácil los obtenemos de la propia película ya que generalmente el desfasaje es pequeño y podemos tomar la presentación en ese intervalo.

mencoder pelicula.avi -o 20segundos.avi -oac copy -ovc copy -ss 0 -endpos 20

Datos:
pelicula.avi: es nuestra película.
20segundos.avi: es el nombre del video con 20 segundos de duración.
-ss 0: la copia va a comenzar a partir de 0 segundos.
-endpos 20: la copia va a finalizar a los 20 segundos partiendo del tiempo de comienzo que en este caso es 0.

Ahora tenemos dos videos: pelicula.avi y 20segundos.avi. Solo nos falta unirlos.

 

mencoder 20segundos.avi pelicula.avi -o peliculasindesfasaje.avi -oac copy -ovc copy

La salida peliculasindesfasaje.avi es la unión de los archivos pelicula.avi y 20segundos.avi.
Ya nuestro filme tiene 20 segundos más al comienzo, así que está sincronizado correctamente con los subtítulos.

Si desean profundizar pueden consultar desde la consola los manuales:
$man mencoder
$man ffmpeg