Contempo: Edición video/audio: MEncoder y MPlayer (Parte 2)

Edición video/audio: MEncoder y MPlayer (Parte 2)

Esta es la continuación y final del artículo anterior sobre Edición video/audio: MEncoder y MPlayer (Parte 1).

Nueva guía 2013: Encodear con FFmpeg

Recortar imagen del video (Cropping)


Al final de la primera parte del artículo anterior, hablé sobre las opción que se utiliza para recortar la imagen del video, y sobre el problema que se presenta en los DVDs con las lineas negras pequeñas que aparecen en los costados de la imagen (derecha, izquierda, arriba y abajo). Esta opción también es útil para cualquier tipo de recorte de imagen, prácticamente se puede remover la mitad de la imagen del video si uno quisiera.

Menciono que la mejor forma de previsualizar un video antes de su codificación (encodeo) con MEncoder, es reproduciendo el video con MPlayer, así tendremos una clara idea sobre como quedará finalmente el video con la imagen recortada.

La opción del filtro de video "crop" se activa gracias al filtro de video: "-vf", y se utiliza de la siguiente forma en su previsualización, para ver como como quedará:
mplayer video.avi -vf crop=w:h:x:y

Ahora explicaré que significa cada letra: crop=w:h:x:y
w: Ancho de la imagen del video que quedará al final.
h: Alto de la imagen del video que quedará al final.
x: Moviendo la imagen de derecha a izquierda, para dejarla centrada.
y: Moviendo la imagen de abajo hacia arriba, para dejarla centrada.

A la hora de tener recortada la imagen es muy recomendable agregar la opción "scale", que sivre para escribir la nueva resolución con la que quedará finalmente el video.

En este caso estaremos recortando la imagen de un video con una resolución de 720x480, y que finalmente quedará con una resolución de 640x480. Y notar que solamente recortaremos el ancho de la imagen, y moveremos de derecha a izquierda la imagen para que quede centrada:
mplayer video.avi -vf crop=699:480:12:0,scale=640:480

Para el resultado final del video, solamente se cambiara por mencoder, y se agregaran algunas opciones como la salida del nombre del video (-o), la salida del codec de audio (-oac), y la salida del codec de video (-ovc), y agregaremos las opciones simples de Xvid que expliqué en la Parte I para no gastar espacio, y el audio lo dejaremos intacto, sin encodear:
mencoder video.avi -o video_imagen_recortada.avi -vf crop=699:480:12:0,scale=640:480 -oac copy -ovc xvid -xvidencopts pass=1:bitrate=2050

Resolución y dimensión imagen del video


Como nombré más arriba, el filtro de video "scale", sirve para cambiar la resolución de la imagen de un video, esto sirve para disminuir o aumentar la resolución del tamaño de la imagen del video.

Al cambiar la resolución, el aspecto proporcional del video lo ajustará automáticamente en MPlayer y MEncoder, pero para utilizarlo como un profesional es mejor seguir los siguientes consejos:

Si queremos una imagen de pantalla ancha (widescreen), y no sabemos que resolución se utiliza para ello, es mejor tener una idea solamente del ancho en que queremos que quede.
La opción "-2" determina automáticamente el alto del video en que quedara nuestra imagen de video, y la opción "dsize=16/9" se encargara de dejarla en el aspecto 16:9 que es propio de los videos con una imagen de pantalla ancha (widescreen) para televisores del tipo HDTV. El  resultado de esto será una imagen de 704x396: 
mplayer video.avi -vf scale=704:-2,dsize=16/9

Ahora haremos lo mismo, pero con una imagen semicuadrada con un aspecto proporcional de 4:3, que es común en televisores convencionales CRT. El resultado de esto será una imagen de 640x480:
mplayer video.avi -vf scale=640:-2,dsize=4/3

En este caso ocuparemos las opciones de encodeo simple para no gastar mucho espacio en el artículo:
mencoder video.avi -o video_imagen_aspecto_escalado.avi -vf crop=699:480:12:0,scale=640:-2,dsize=4/3 -oac copy -ovc xvid -xvidencopts pass=1:bitrate=2050

Dividir un video


Para dividir un video, solamente se requiere de dos opciones: "-ss" y "-endpos" y se utilizan de la siguiente manera...

Primero previsualizaremos lo que cortaremos del video, eso se realiza seleccionando desde que segundo queremos que empiece a cortar y cuantos segundos queremos que encodeé. Con "-ss " indicamos que parta en los segundos que le indiquemos, y "-endpos " le indicamos cuantos segundos queremos que encodeé o procese. 
O sea; que parta desde el segundo 180 y se muestren solamente o encodeé (si es el caso de MEncoder) 240 segundos:
mplayer video.avi -ss 180 -endpos 240

Esos si, los tiempos no siempre son precisos, MEncoder/MPlayer sólo pueden empezar o terminar una codificación en una keyframe (llave de un fotograma) ya estipulada en el video.

Copia directa del resultado

En el caso de cortar un video no es necesario volver a encodear un video, y dejaremos el audio y video intactos en lo que respecta a calidad o cambio en la tasa de bits.
Tengo un video de 10 minutos y quiero encodear solamente desde el minuto 3 al 7, perdiendo el resto:
mencoder -nobps video.avi -o video_cortado.avi -ss 180 -endpos 240 -oac copy -ovc copy

Unir varios videos


Lo siguiente solo funciona si los videos a unir tienen la misma resolución (obvio), y el mismo codec de video y audio. También si tiene el mismo contenedor, ya sea .AVI, .WMV, .MP4, etc.

Dicho y entendido lo de arriba, se pueden unir la cantidad que uno quiera de videos en uno solo, y dejando intactos, sin encodear, los codecs de audio y video:
mencoder -nobps -forceidx video1.bla video2.bla -o video_unido.bla -oac copy -ovc copy

Copias directas de audio o video


En algunos casos, como DVDs o videos con contenedor .AVI, vienen con múltiples pistas de audio, y si queremos seleccionar una determina, solamente emplearemos lo siguiente, y como dice el subtitulo, haremos copias directas sin encodear el audio o el video:
mencoder video1.avi -o video2.avi -oac copy -aid 1 -ovc copy

Ahora haremos lo mismo, pero encodearemos solo el audio, y dejando el video intacto:
mencoder video1.avi -o video2.avi -oac -aid 1 mp3lame -lameopts cbr:br=192 -ovc copy

Ahora lo haremos al revés, encodearemos solo el video con una opción simple de encodeo de Xvid, y dejando el audio intacto:
mencoder video.mp4 -o video.avi -oac copy -ovc xvid -xvidencopts bitrate=2050

MKV

En el caso de utilizar el contenedor MKV, y quieran extraer las pistas, instalan "mkvtoolnix", ese paquete vendrá con la aplicación "mkvextract", la cual permite extraer pistas de los MKV. Y por una termianl sería:

mkvextract tracks video.mkv 1:video.avi 2:audio.aac 3:subtitulo.srt

Arriba primero se muestra el archivo MKV que se tiene (video.mkv), luego el número de la pista en que se encuentra el video a extraer (1:video.avi), luego el número de pista del audio (2:audio.aac), y luego el número de la pista del subtitulo (3:audio.srt), usualmente es en ese orden.
Si trae más pistas de audio, solamente se selecciona en que pista de audio se encuentra la que ustedes quieran. Si no quieren extraer el subtitulo o el video, solamente remueven esas opciones.

DVD

Ahora pasaremos su uso a DVD. Pasando el video DVD (MPEG-2) en bruto RAW y el audio PCM, a un video con contenedor .MPG (para pasar toda la película, hay que borrar la opción -chapter 1-1, y si queremos el audio AC-3, agregaremos la opción -aid 129, o el número en que se encuentre la pista del AC-3 visto con MPlayer):
mencoder dvd://1 -chapter 1-1 -ovc copy -oac pcm -o video.mpg

Estas opciones también sirven para pasar copias directas... Y ahora pasaremos el video DVD (MPEG-2) más el audio deseado (AC-3 ó PCM) a un video con contenedor .MPG:
mplayer dvd://1 -aid 129 -dumpstream -dumpfile video.mpg

Extraer o agregar audio/video


En algunas ocasiones, nos dará por extraer solo el audio o el video de un archivo multimedia, para después agregarlo a otro archivo, eso es lo que haremos ahora...

Extrayendo solo el audio MP3 de un video (utilizar -aid por si hay mas de un audio). Esto también sirve para otros tipos de audio, como: AAC, Ogg, WMA, PCM, etc:
mplayer video_con_audio.avi -dumpaudio -dumpfile audio.mp3

Extrayendo solo el video, sin audio.
mencoder video_con_audio.avi -nosound -ovc copy -o video_sin_audio.avi

Dejar una sola pista de audio en un video venga con múltiples pistas de audio (nº: especifica el número de pista de audio deseada)
mencoder entrada.avi -aid nº -oac copy -ovc copy -o salida.avi

Juntando el audio más el video en un solo archivo.
mencoder video_sin_audio.avi -audiofile audio.mp3 -oac copy -ovc copy -o video_con_audio.avi

También serviría utilizar FFmpeg:
ffmpeg -i video.avi -i audio.mp3 -acodec copy -vcodec copy video_con_audio.avi

DVD

Extrayendo audio PCM del primer capitulo de un DVD (para extraer todo el audio, hay que borrar la opción "-chapter 1-1")
mplayer dvd://1 -chapter 1-1 -vo null -aid 160 -ao pcm:file=track1.wav

Extrayendo audio AC3 del primer capitulo de un DVD (para extraer todo el audio, hay que borrar la opción -chapter 1-1)
mplayer dvd://1 -chapter 1-1 -vo null -aid 129 -dumpaudio -dumpfile audio.ac3

Extrayendo video del DVD (MPEG-2) a un video con contenedor MPG sin audio (para extraer toda la película, hay que borrar la opción -chapter 1-1)
mencoder dvd://1 -chapter 1-1 -nosound -ovc copy -o video_sin_audio.mpg

Suprimir logo en video


En muchos casos, los videos grabados desde la televisión o creados por otros usuarios, traen logos, animaciones en las esquinas del video, o en otros casos, traen leyendas en la parte bajar o arriba de la imagen del video.

Para tapar el logo, o lo que sea que moleste, se puede emplear el filtro de video "delogo", y que funciona de la siguiente manera: delogo=x:y:w:h:t
mplayer -vf delogo=x:y:w:h:t

Ahora explicaré que significa cada letra: delogo=x:y:w:h:t
x: La ubicación de la transparencia en el ancho del video.
y: La ubicación de la transparencia en el alto del video.
w: El ancho de la transparencia final.
h: El alto de la transparencia final.
t: Tono del color de la transparencia.

Y como ejemplo:
mplayer video.avi -vf delogo=624:29:42:25:0

Pegar subtitulos al video (Hardsub)


En el mundo de los Fansubs esto es muy común, pero para conservar el video intacto no es muy recomendable. Pero si quieres "fansubear" o "hardsubear" un video, ahí tu. Aunque yo siempre dejo los subtitulo SubRip (SRT) por separados, dejando el subtitulo con el mismo nombre que el video o dentro de un MKV.

La configuración es la siguiente (escribe el nombre del subtitulo SRT):
mencoder video.avi -o video_harsubeado.avi -sub subtitulo.srt -subfont-text-scale 2.8 -subfont-blur 0 -subfont-outline 1.8 -ffactor 0.90 -subcp iso-8859-15 -font * -oac copy -ovc xvid -xvidencopts pass=1:bitrate=2050

En el caso de un DVD que viene con los subtitulos seleccionable, y quisieramos encodearlo junto con los subtitulos, solo necesitamos la opción "-sid", para que haga todo el trabajo de pegado del subtitulo:
mplayer dvd://1 -o video_hardsubeado.avi -sid 0 -oac copy -ovc xvid -xvidencopts pass=1:bitrate=2050

Extras


En los casos de recortar la imagen de un video (cropping), o cambiar la resolución de este, es también aconsajable para algunos casos el filtro "harddup", el filtro forza los marcos de imagen duplicados para codificarse en la salida del video. Este filtro se agrega al final de la cadena de filtros para video "-vf".

Si quieren crear una imagen en movimiento GIF, eso se puede lograr facilmente según está linea de comandos:
mplayer video.avi -ss 10 -endpos 5 -vo gif89a -vf scale=100:100

Ver video en blanco y negro:
mplayer video.avi -vf hue=0:0

Efecto espejo, reflejar la imagen:
mplayer video.avi -vf mirror

Dar vuelta el video:
mplayer video.avi -flip
mplayer video.avi -vf flip

Poner el video parado:
mplayer video.avi -vf rotate=1
mplayer video.avi -vf rotate=2

Reproducir DVD con subtitulos y desentrelazado:
mplayer dvd://1 -sid 0 -vf filmdint

Reproducir CD de audio:
mplayer cdda://1

Pasar Track #1 de CD de audio a WAV:
mplayer cdda://1-1 -ao pcm:file=track1.wav

Ver los codecs de video que hay para encodear:
mencoder -ovc help

Ver los codecs de audio que hay para encodear:
mencoder -oac help

Y recordar que los ejemplos que tengan la opción "pass=1" en el encodeo de Xvid, hay que realizar una segunda pasada luego de terminar la primera pasada.

Y también recordar que en el sitio de MPlayer hay mucha documentación sobre todas las opciones que se pueden emplear, todo disponible en inglés y español. O también se puede ver el manual que viene incluido con MEncoder/MPlayer en Linux, ahí vienen todas las opciones para echarle un ojo. Solo tipear lo siguiente en una Terminal (las dos te llevaran al mismo manual):
man mplayer 
man mencoder

Con esto doy por finalizado (hasta el momento) las guías de Edición multimedia. La Parte 1 de este artículo ya fue publicado.