Aprovechando unos días tranquilos hace poco me decidí por fin a organizar mi colección de pelis. En primer lugar porque ocupan un espacio considerable en disco y hace tiempo que había detectado formas de mejorarlo y tener más espacio libre, pero también para tenerlas mejor clasificadas.

Entre otras cosas pensé en aprovechar la capacidad del formato MKV a la hora de gestionar vídeos complejos, para almacenar las películas con sus subtítulos (que tengo en ficheros separados en muchos casos), eliminar las cadenas de audio en otros idiomas, unir las películas que están partidas en varios ficheros, y cosas por el estilo.

Tengo unas notas dispersas sobre los comandos que se deben utilizar para cada caso, y he pensado que podría ser interesante recopilarlos todos en esta entrada.

Hay una estupenda herramienta visual para hacerlo casi todo, llamada mkvmerge GUI, pero encuentro una pesadez usarla para procesar muchos vídeos. La línea de comandos es mucho más ágil para esto, y te permite hacer scripts para procesar los vídeos en bloque.

Cómo unir todas las partes de un vídeo en un único fichero MKV (sin recomprimir)

Algo bastante habitual es tener una peli grabada en varios ficheros, muchas veces a causa de la práctica que había antes de separar las pelis largas en ficheros del tamaño de un CD (700MB).

Sorprendentemente el formato MKV permite tener los dos fragmentos de vídeo en el mismo fichero, y los reproduce uno detrás de otro sin saltos como si nunca hubieran estado separados.

Para conseguir esto debes usar el comando “mkvmerge” y unir todas las partes con la siguiente sintaxis, donde “salida.mkv” es el archivo que vas a conseguir al final y “parte1.avi”, “parte2.avi” y “parte3.avi” son cada uno de los fragmentos:

mkvmerge -o salida.mkv parte1.avi +parte2.avi +parte3.avi ...

Ten cuidado de que cada símbolo “+” tenga un espacio antes, y de que no lo tenga después. Es importante.

Veamos un ejemplo, donde tengo la película de “Tron” en dos ficheros “Tron (CD1).avi” y “Tron (CD2).avi”.

jesus@mediaserver:~$ mkvmerge -o Tron.mkv Tron\ \(CD1\).avi +Tron\ \(CD2\).avi 
mkvmerge v5.1.0 ('And so it goes') creado el Feb  1 2012 11:31:23
'Tron (CD1).avi': Using the demultiplexer for the format 'AVI'.
'Tron (CD2).avi': Using the demultiplexer for the format 'AVI'.
'Tron (CD1).avi' pista 0: Using the output module for the format 'MPEG-4'.
'Tron (CD1).avi' pista 1: Using the output module for the format 'MP3'.
'Tron (CD2).avi' pista 0: Using the output module for the format 'MPEG-4'.
'Tron (CD2).avi' pista 1: Using the output module for the format 'MP3'.
El archivo Tron.mkv ha sido abierto para su escritura.
Uniendo la pista 1 del archivo n.º 1 ('Tron (CD2).avi') a la pista 1 del archivo n.º 0 ('Tron (CD1).avi').
Uniendo la pista 0 del archivo n.º 1 ('Tron (CD2).avi') a la pista 0 del archivo n.º 0 ('Tron (CD1).avi').
Progreso: 100%
El índice está siendo escrito...
Muxing took 1 minuto 14 segundos.

Al final del proceso conviene abrir el resultado con un reproductor. Comprueba que la duración es coherente y salta por varios puntos de la película para verificar que se vea bien y el audio está sincronizado, ya que si el fichero de entrada está corrupto podrías tener un vídeo incompleto en la salida.

Cómo convertir un fichero AVI a uno MKV (sin recomprimir)

En realidad el formato .AVI no es el mejor del mundo, pero si tienes un vídeo en .AVI que te hayas descargado de Internet tampoco es necesario que lo conviertas de formato. Y convertirlo a MKV no va a hacer que tenga más calidad, eso es un mito :)

Sin embargo si eres de los que te gusta tener todo ordenadito y con la misma extensión, debes saber que puedes convertir el formato de cualquier vídeo a .MKV sin recomprimirlo (y por tanto sin pérdida de calidad alguna) usando el comando mkvmerge.

mkvmerge -o salida.mkv entrada.avi

Y un ejemplo:

jesus@mediaserver:~$ mkvmerge -o Tron.mkv Tron.avi
mkvmerge v5.1.0 ('And so it goes') creado el Feb  1 2012 11:31:23
'Tron.avi': Using the demultiplexer for the format 'AVI'.
'Tron.avi' pista 0: Using the output module for the format 'MPEG-4'.
'Tron.avi' pista 1: Using the output module for the format 'MP3'.
El archivo Tron.mkv ha sido abierto para su escritura.
Progreso: 100%
El índice está siendo escrito...
Muxing took 2 minutos 5 segundos.
jesus@mediaserver:~$ 

Cómo quitar cadenas de audio en otros idiomas

A mí me gusta ver cine en versión original (depende de la peli) pero a la hora de guardarlas para mi colección no me gusta hacerlo más que con el audio en español. Puedes grabar una peli con varias cadenas de audio y subtítulos, por supuesto, pero el audio es algo que ocupa espacio y especialmente si está codificado con AC3.

La forma de extraer las cadenas de audio que no quieres es volver a grabar el vídeo en un nuevo fichero, pero copiando sólo las cadenas de audio que te interesan. Lo primero es identificar la cadena de audio “buena” con el comando:

mkvmerge -i entrada.mkv

Para a continuación crear un nuevo fichero indicando el número de la cadena de audio “buena”:

mkvmerge -o salida.mkv --atracks NUMERO entrada.mkv

O los “números” si quieres conservar más de de una cadena de audio:

mkvmerge -o salida.mkv --atracks NUMERO,NUMERO entrada.mkv

Veamos un ejemplo con la peli de “Wanted” que tengo en mi disco.

jesus@mediaserver:/media/CINE$ mkvmerge -i Wanted\ \(2008\)\ \[720p\].mkv 
Archivo 'Wanted (2008) [720p].mkv': contenedor: Matroska
La ID de la pista 1: video (V_MPEG4/ISO/AVC)
La ID de la pista 2: audio (A_AC3)
La ID de la pista 3: audio (A_AC3)
La ID de la pista 4: subtitles (S_TEXT/UTF8)
jesus@mediaserver:/media/CINE$ 

Como ves, tiene dos pistas de audio y una de subtítulos. Lo normal es que la primera cadena de audio sea en español y la siguiente en inglés, pero puedes asegurarte usando el comando “mkvinfo”.

jesus@mediaserver:/media/CINE$ mkvinfo Wanted\ \(2008\)\ \[720p\].mkv
...
| + Una pista
|  + Número de pista: 2
...
|  + Idioma: spa
|  + Nombre: Castellano AC3 5.1

De forma que el audio en español es la cadena 2. Ahora vamos con mkvmerge:

jesus@mediaserver:/media/CINE$ mkvmerge -o salida/Wanted\ \(2008\)\ \[720p\].mkv --atracks 2 Wanted\ \(2008\)\ \[720p\].mkv 
mkvmerge v5.1.0 ('And so it goes') creado el Feb  1 2012 11:31:23
'Wanted (2008) [720p].mkv': Using the demultiplexer for the format 'Matroska'.
'Wanted (2008) [720p].mkv' pista 1: Using the output module for the format 'AVC/h.264'.
'Wanted (2008) [720p].mkv' pista 2: Using the output module for the format 'AC3'.
'Wanted (2008) [720p].mkv' pista 4: Using the output module for the format 'text subtitles'.
El archivo salida/Wanted (2008) [720p].mkv ha sido abierto para su escritura.
Progreso: 100%
El índice está siendo escrito...
Muxing took 1 minuto 8 segundos.
jesus@mediaserver:/media/CINE$

El resultado es un fichero que pasa de 2,6GB a 2,2GB.

-rwxrwxrwx 1 jesus jesus 2,6G jul 13  2010 Wanted (2008) [720p].mkv
-rw-rw-r-- 1 jesus jesus 2,2G ene 19 19:24 salida/Wanted (2008) [720p].mkv

Para ser exactos el tamaño se redujo en 354MB. No está mal para 1 minuto de procesamiento, si haces esto con 100 pelis tendrás 35GB libres más en tu disco. Y yo tengo más de 100 :)

Cómo añadir audio en otros idiomas

Si lo que quieres hacer es la operación contraria es más sencillo todavía. Y es realmente sencillo porque es para lo que se diseñó la herramienta mkvmerge: para construir archivos MKV a partir de diferentes elementos.

mkvmerge -o salida.mkv video.mp4 audio.aac

Observa que este caso es muy similar al que usábamos para concatenar dos vídeos, pero no utilizamos el símbolo “+”.

Cómo añadir subtítulos desde un fichero externo

Algo muy habitual es descargarte la peli por un lado, y los subtítulos por otro. En mi caso ocurre a menudo con los documentales de la BBC que descargo de mvgroup.org, y acabo teniendo un montón de ficheritos al lado de cada vídeo.

El comando para hacer esto con mkvmerge es el mismo que en el caso anterior, ya que la cadena de subtítulos no es más que una pista adicional para añadir al vídeo.

mkvmerge -o salida.mkv video.mp4 subtitulo.srt

Aunque si el subtítulo es UTF-8 debes tener en cuenta algún parámetro más:

mkvmerge -o salida.mkv video.mp4 --sub-charset 0:UTF8 -s 0 -D -A subtitulo.srt

Veamos un ejemplo, de estos tengo bastantes, de una peli con dos cadenas de audio.

jesus@mediaserver:/media/CINE$ mkvmerge -i Toy\ Story\ 3\ \[HDrip\]-original.mkv 
Archivo 'Toy Story 3 [HDrip]-original.mkv': contenedor: Matroska
La ID de la pista 1: video (V_MS/VFW/FOURCC, XVID)
La ID de la pista 2: audio (A_AC3)
La ID de la pista 3: audio (A_AC3)

Añadimos dos archivos de subtítulos:

jesus@mediaserver:/media/CINE$ mkvmerge -o Toy\ Story\ 3\ \[HDrip\].mkv Toy\ Story\ 3\ \[HDrip\]-final.mkv Toy\ Story\ 3\ \[HDrip\]\ es.srt Toy\ Story\ 3\ \[HDrip\]\ inglés.srt 
mkvmerge v5.1.0 ('And so it goes') creado el Feb  1 2012 11:31:23
'Toy Story 3 [HDrip]-final.mkv': Using the demultiplexer for the format 'Matroska'.
'Toy Story 3 [HDrip] es.srt': Using the demultiplexer for the format 'SRT subtitles'.
'Toy Story 3 [HDrip] inglés.srt': Using the demultiplexer for the format 'SRT subtitles'.
'Toy Story 3 [HDrip]-final.mkv' pista 1: Using the output module for the format 'MPEG-4'.
'Toy Story 3 [HDrip]-final.mkv' pista 2: Using the output module for the format 'AC3'.
'Toy Story 3 [HDrip]-final.mkv' pista 3: Using the output module for the format 'AC3'.
'Toy Story 3 [HDrip] es.srt' pista 0: Using the output module for the format 'text subtitles'.
'Toy Story 3 [HDrip] inglés.srt' pista 0: Using the output module for the format 'text subtitles'.
El archivo Toy Story 3 [HDrip].mkv ha sido abierto para su escritura.
Progreso: 100%
El índice está siendo escrito...
Muxing took 58 segundos.

Para acabar teniendo un archivo con 2 pistas de audio y dos subtítulos:

jesus@mediaserver:/media/CINE$ mkvmerge -i Toy\ Story\ 3\ \[HDrip\].mkv 
Archivo 'Toy Story 3 [HDrip].mkv': contenedor: Matroska
La ID de la pista 1: video (V_MS/VFW/FOURCC, XVID)
La ID de la pista 2: audio (A_AC3)
La ID de la pista 3: audio (A_AC3)
La ID de la pista 4: subtitles (S_TEXT/UTF8)
La ID de la pista 5: subtitles (S_TEXT/UTF8)

Un comentario

  1. Muy buena info pero donde encuentro el comando mkvmerge para poder modificar mis películas en .mkv

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *