Linux.Multimedia.Mencoder.

Ismael Royano Gómez
Enredando con Linux.
6 min readMay 6, 2016

Mencoder. Es una herramientas muy potente para la manipulación de audio y video incluida en el paquete mplayer.

Antes de meternos en los detalles, vamos a observar los elementos básicos para comprimir un archivo de vídeo:

mencoder movie.mkv -o movie.avi -ovc lavc -oac lavcmovie.mkv #Es el archivo de entrada con el que vamos a trabajar.
-o #Es el archivo de salida o resultante.
-ovc #Output Video Codec. El codec de vídeo que vamos a utilizar para la compresión
-oac #Output Audio Codec. El codec de audio que vamos a utilizar para la compresión.

En este ejemplo hemos comprimido el vídeo a divx (mpeg4) y el audio a mp2, estos son los parámetros por defecto si no indicamos nada a mencoder.

Codec de vídeo que soporta;

mencoder -ovc help-copy #No comprime, copia exactamente la misma calidad que el video de origen.
-frameno #Se utiliza solo para archivos de audio. No lo he usado nunca.
-raw #Vídeo sin comprimir.
-lavc #Usa los codec de la librería libavcodec, es la mejor opción para comprimir.
-xvid #Codec específico para xvid.
-x264 #Codec específico para H.624.

Codec de audio que soporta;

mencoder -oac help- copy #No comprime, copia exactamente la misma calidad que el audio de origen.
- pcm #Audio sin comprimir.
- mp3lame #Formato mp3 usando la librería libmp3lame.
- lavc #Usa los codec de audio de FFmpeg.
- faac #Codec específico para FAAC y ACC.

Codecs de la librería libavcodec (codec lavc).

Audio codecs.

- ac3 #Dolby digital.
- adpcm #Formatos pcm.
- flac #Free Lossless Audio Codec.
- g726 #G.726 ADPCM.
- libfaac #Advanced Audio Coding (AAC).
- libgsm #ETSI GSM 06.10 full rate
- libgsm_ms #Microsoft GSM.
- libmp3lame #MPEG-1 audio layer 3 (MP3).
- mp2 #MPEG-1 audio layer 2 (MP2).
- pcm #Formatos PCM.
- roq_dpcm #Id Software RoQ DPCM.
- sonic #Experimental FFmpeg lossy code.
- sonicls #Experimental FFmpeg lossless codec.
- vorbis #Vorbis.
- wmav1 #Windows Media Audio v1.
- wmav2 #Windows Media Audio v2.

Vídeo Codecs.

- mjpeg #Motion JPEG.
- ljpeg #Lossless JPE.
- jpegls #JPEG LS.
- targa #Targa image.
- gif #GIF image.
- bmp #BMP image.
- png #PNG image.
- h261 #H.261.
- h263 #H.263.
- h263p #H.263+.
- mpeg4 #ISO standard MPEG-4 (DivX, Xvid compatible).
- msmpeg4 #Pre-standard MPEG-4 variant by MS, v3 (AKA DivX3).
- msmpeg4v2 #Pre-standard MPEG-4 by MS, v2 (used in old ASF files).
- wmv1 #Windows Media Vídeo, version 1 (AKA WMV7).
- wmv2 #Windows Media Vídeo, version 2 (AKA WMV8).
- rv10 #Realvideo 1.0.
- rv20 #Realvideo 2.0.
- mpeg1video #MPEG-1 vídeo.
- mpeg2video #MPEG-2 vídeo.
- huffyuv #Lossless compressio.
- ffvhuff #FFmpeg modified huffyuv lossless.
- asv1 #Asus vídeo v1.
- asv2 #Asus vídeo v2.
- ffv1 #FFmpeg’s lossless vídeo codec.
- svq1 #Sorenson vídeo 1.
- flv #Sorenson H.263 used in Flash Vídeo.
- flashsv #Flash Screen Vídeo.
- dvvideo #Sony Digital Vídeo.
- snow #FFmpeg’s experimental wavelet-based codec.
- zmbv #Zip Motion Blocks Video.
- dnxhd #AVID DNxHD.

Por defecto si no indicamos nada en el parámetro lavc el vídeo lo comprime en mpeg4 y el audio en mp2. Sin embargo si queremos usar algún codec diferente de la librería libavcodec (lavc), tenemos que poner el parámetro -lavcopts y a continuación los ajustes que deseemos aplicarle al vídeo, por ejemplo; mencoder movie.mkv -o movie.avi -ovc lavc -oac lavc -lavcopts acodec=libmp3lame. En este caso particular lo que estamos haciendo, es decirle que el vídeo lo comprima en mpg4 (observar que no indico ningún parámetro en lavc) y en el audio utilizaremos el codec libmp3lame.

Si no queremos utilizar la librería libavcodec, algunos parámetros pueden cambiar;

mencoder 2x03.avi -o movie.avi -ovc lavc -oac mp3lame -lameopts abr:br=112
  • -oac mp3lame -lameopts. El codec de audio mp3lame y a continuación -lameopts para indicarle que vamos a introducir más parámetros. En el caso de que no queramos mas parámetros no será necesario -lameopts, por defecto el bitrate o calidad del audio será entorno a 240 kbps.
  • abr:br=112. Con este parámetro le indicamos que va a ser compresión variable y la calidad de audio será de 112 kbps. También podemos indicarle que la compresión puede ser constante con el parámetro cbr:br=112.

En el caso anterior solo hemos cambiado un codec de audio que no sea de la librería libavcodec, vamos a hacerlo con el vídeo y el audio;

mencoder 2x02.avi -o movie.avi -ovc xvid -xvidencopts bitrate=1200 -oac mp3lame -lameopts abr:br=192 -af volume=7
  • -ovc xvid -xvidencopts bitrate=1200. Utilizaremos el codec de vídeo xvid luego añadimos un parámetro -xvidencopts y a continuación indicamos la calidad con bitrate. Otra forma de obtener la calidad es con el parámetro fixed_quant=<1–31>, cuanto menor sera el número mejor calidad tendrá, un buen número para una calidad decente es alrededor de 4–5, quedaría de la siguiente manera; mencoder 2x02.avi -o movie.avi -ovc xvid -xvidencopts fixed_quant=4 -oac mp3lame -lameopts abr:br=192.
  • -af volume=7. Vídeos con volumen muy bajo, de esos que tienes que poner los altavoces muy altos para poder orientarte sobre lo que están hablando. Para esto sirve este esté parámetro, para ampliar el sonido. Yo suelo utilizar entre 10 y 15 como ampliación, si se usa un valor demasiado alto puede llegar a distorsionar y no escucharse bien.

Vamos a introducir algunos parámetros mas para ir explicando como funciona este comando;

mencoder movie.mkv -o movie.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1200:aspect=16/9 -vf scale=640:352 -oac lavc -lavcopts acodec=libmp3lame:abitrate=192
  • vcodec. El codec que vamos a utilizar para la compresión de vídeo.
  • vbitrate. La calidad en kbps a la hora de comprimir.
  • aspect. Proporción de aspecto, es decir, 16/9…4:3….etc. Podemos también haber utilizado autoaspect; Simplemente pone automáticamente la relación de aspecto, es decir, semejante al original para preservarlo.
  • -vf scale. Vídeo filtrer scale. Escala o resolución que le vamos a dar el vídeo resultante. Si hubiese mas filtros que queramos aplicar deberíamos ponerlo seguidamente separado por comas.
  • - vf rotate = numero. El rotate sirve para rotar e invertir el video que vamos a procesar. El parámetro número indica si queremos rotar 90 grados e invertir (0), rotar 90 grados (1), rotar 90 grados en sentido contrario a las agujas del reloj (2) o rotar 90 grados en sentido antihorario e invertir (3). Este parámetro es muy usado para poner derecho aquellos vídeos que solemos hacer con el móvil de forma vertical.
  • acodec. Codec de audio que vamos a utilizar.
  • abitrate. La calidad del audio en kbps.

Hasta ahora hemos trabajado solo con archivos avi, el contenedor por defecto de mencoder y con el que menos problemas podemos tener como resultado, pero no tenemos porque usar solo ese contenedor, podemos utilizar muchos mas. Vamos a ver que tipos de contenedores podemos utilizar;

mancoder -of help- avi #Microsoft Audio/Vídeo Interleaved.
- mpeg #MPEG-1/2 system stream format.
- lavf #FFmpeg libavformat muxers.
- rawvideo
- rawaudio

Vamos a definir cuales son los contenedores de la libavformat (lavf).

- mpg #MPEG-1 and MPEG-2 PS.
- asf #Advanced Streaming Format.
- avi #Audio-Vídeo Interleaved.
- wav #Waveform Audio.
- swf #Macromedia flash.
- flv #Macromedia flash vídeo.
- rm #Real media.
- au #Sun au.
- nut #NUT open container.
- mov #Quicktime.
- mp4 #MPEG-4 format.
- dv #Sony Digital Vídeo container.
- mkv #Matroska open audio/vídeo container.

Veamos un ejemplo usando un contenedor de la libavformat (lavf);

mencoder -of lavf -lavfopts format=flv film.avi -o movie.flv -ovc lavc -lavcopts vcodec=flv:vbitrate=1200:aspect=16/9 -vf scale=640:352 -oac lavc -lavcopts acodec=libmp3lame:abitrate=192

Nota. Debemos tener en cuenta que para utilizar un contenedor de la librería libavformat debemos indicarle después el parámetro -lavfopts.

Incluir Subtítulos en un Vídeo. Si alguna vez nos encontramos con algún vídeo que tengas subtítulos, al comprimirlo con mencoder te pega automáticamente los subtítulos en el vídeo de resultado. En el caso de que no tenga subtítulos y nos hagamos de ellos podemos pegarlos de la siguiente manera en el vídeo resultante;

mencoder -ovc lavc -oac mp3lame pelicula.avi -o película_con_subtitulos.avi -sub subtítulos.srt
  • -sub. Pega los subtítulos en el vídeo resultante.

Ripear un DVD.

mencoder dvd://1 -dvd-device /media/MRLAWRENCE_SCN/ -alang es -sid 0 -oac lavc -lavcopts acodec=libmp3lame:abitrate=112 -ovc lavc -lavcopts vcodec=mpeg4:v4mv:mbd=2:trell:aspect=4/3:vbitrate=900 -vf scale=640:352 -o dvd.avi
  • dvd://1. Esto significa que solo vamos a copiar el título 1 del dvd.
  • -dvd-device. Mencoder por defecto monta los dvd en /dev/dvd ó /dvd/cdrom. Por norma general suele ser así pero es posible que algunos sistemas operativos se monten en otro lugar. Esta opción nos permite indicarle el camino donde se monta el dvd realmente, en arch se monta en /media/<nombre del dvd>.
  • -alang. Aquí indicamos el lenguaje del audio, son generalmente 2 letras para indicar el idioma (es-español, fr-francés, en-ingles, ca-catalan…etc). También podemos utilizar la opción -aid <número>. Vamos a imaginar que el audio tiene 3 idiomas, mencoder los organiza de la siguiente manera; español(0), ingles(1), catalán(2). Con esta opción podemos referirnos por ejemplo al español simplemente con -aid 0.
  • -sid. Substítulos. Cuando nos encontramos un dvd que tenga posiblemente varios tipos de subtítulos se organizan por número empezando por el 0, es decir, si tuviera 3 pistas de subtítulos serían ( español(0), ingles(1), francés(2)). Si quisiéramos el español deberíamos indicarle de la siguiente manera; -sid 0.
  • v4mv:mdb=2:trell. Estas 3 opciones aumentará en gran medida la calidad a expensas del tiempo de codificación. Hay pocas razones para dejar estas opciones cuando el objetivo principal es una buena calidad.

Continúa por Ripear un dvd.

--

--

Ismael Royano Gómez
Enredando con Linux.

Técnico Informático curioso, lector activo de las nuevas tecnologías, amante de las series de televisión y usuario del respetable mundo del enredo.