mkvmerge -- Multiplexa secuencias multimedia en un archivo Matroska(tm)

# 1. Sinopsis

mkvmerge opciones globales {-o salida} opciones1 {archivo1} opciones2 {archivo2} @archivo-opciones.json

# 2. Descripción

Este programa toma de la entrada diversos archivos multimedia y une sus secuencias (todas ellas o sólo las seleccionadas) en un archivo Matroska(tm); mire la página web de Matroska.

Important:

El orden de las opciones en la línea de comandos es importante. Por favor, lea la sección "Orden de opciones" si eres nuevo usando el programa.

## 2.1. Opciones generales

Option | Description
--- | ---
-v, --verbose | Incrementa el detalle (verbose).
-q, --quiet | Suprime la salida.
-o, --output nombre-archivo | Escribe el nombre-archivo. Si la división es usada entonces este parámetro es tratado de distinta manera. Mire la explicación sobre la opción --split para obtener más detalles.
-w, --webm | Crea un archivo compatible WebM. Esto también se habilita si el nombre de la extensión del archivo de salida es "webm". Este modo impone ciertas restricciones. Los únicos códecs permitidos son VP8, VP9 para video y Opus, Vorbis para pistas de audio. La entrada DocType de la cabecera se cambia a "webm".

Para capítulos y etiquetas sólo se permite un subconjunto de elementos. mkvmerge(1) eliminará automáticamente todos los elementos no permitidos por la especificación.

--title título | Establece el título general para el archivo de salida, p.e. el nombre de la película.
--default-language código-lenguaje | Establece el código de lenguaje predefinido que será usado para todas las pistas a menos que se sobrescriban con la opción --language. El código del lenguaje predefinido es 'und' para 'Indeterminado'.

## 2.2. Manipulación de información del segmento (opciones generales)

Option | Description
--- | ---
--segmentinfo nombre-archivo.xml | Lee la información del segmento a partir de un archivo XML. Este archivo puede contener el UID de la familia del segmento: el UID del segmento, el UID del segmento anterior y el UID del segmento siguiente. Un archivo de muestra así como un DTD están incluidos en el paquete de MKVToolNix.

Consulte la sección de más adelante sobre los archivos XML de información del segmento para más detalles.

--segment-uid SID1,SID2,... | Establece los UIDs del segmento que se usarán. Esto es una lista separada por comas con UIDs del segmento con una longitud de 128 bits en la forma típica del UID: números hexadecimales con o sin el prefijo "0x" con o sin espacios y siendo 32 dígitos exactos.

Si el SID comienza con = entonces el resto se interpreta como el nombre de un archivo Matroska cuyo UID del segmento es leído y usado.

Cada archivo creado contiene un segmento, y cada segmento tiene un SID (UID del segmento). Si se especifican más SIDs que segmentos entonces los UIDs que sobren son ignorados. Si se especifican menos UIDs que segmentos entonces se crearán de manera aleatoria los UIDs que faltan.

## 2.3. Manipulación de capítulos y etiquetas (opciones generales)

Option | Description
--- | ---
--chapter-language código-idioma | Establece el código de idioma ISO 639-2 que se escribe en cada entrada de capítulo. Por defecto se establece a 'eng'. Consulte la sección de más adelante sobre los capítulos para obtener más detalles. Esta opción puede ser usada tanto para archivos simples de capítulos como para archivos de entrada que contengan capítulos sin información del idioma de los capítulos, p.e. archivos MP4 y OGM.

El idioma establecido con esta opción se usa también cuando los capítulos se generan con la --generate-chapters opción.

--chapter-charset conjunto-caracteres | Establece el conjunto de caracteres que se usará para la conversión a UTF-8 para archivos simples de capítulos. Consulte la sección sobre la conversión de archivos de texto y conjunto de caracteres para ver una explicación sobre cómo mkvmerge(1) realiza la conversión entre conjunto de caracteres.

Este ajuste también se aplica a los capítulos que se copian desde ciertos tipos de contenedores, p.e. archivos Ogg/OGM y MP4. Consulte la sección de más adelante sobre capítulos para obtener más detalles.

--chapter-sync d[,o[/p]] | Ajusta los códigos de tiempo de los capítulos en el siguiente archivo de origen en d ms. Como alternativa, se puede usar la opción --sync con el ID -2 de pista especial (consulte la sección IDs de pista especiales) o/p: ajusta las marcas de tiempo por o/p para fijar desfases lineales. Si se omite, p por defecto es 1. Tanto o y p pueden ser números decimales.

Por defecto: no hay ninguna sincronización manual (que es lo mismo que d = 0 y o/p = 1.0).

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--generate-chapters modo | mkvmerge(1) puede crear capítulos automáticamente. Actualmente, se admiten los siguientes dos modos:

- 'when-appending' – Este modo crea un capítulo al inicio y cada vez que se une un archivo.

  Este modo también funciona con los tipos de corte 'partes:' y 'partes-fotogramas:'. Para estos modos se generará un capitulo por cada rango de marcas de tiempo unidas (aquellos cuyas marcas de tiempo inicien con '+').

  Note:

  mkvmerge(1) requiere una pista de video o audio a fin de poder determinar cuando se une un nuevo archivo. Si una o más pistas de vídeo se multiplexan, se utiliza la primera. Por el contrario, se utiliza la primera pista de audio.

- 'interval:time-spec' – Este modo crea un capítulo conforme a un intervalo establecido mediante time-spec. El formato es HH:MM:SS.nnnnnnnnn o un número seguido por una unidad 's', 'ms' o 'us'.

  Ejemplo: --generate-chapters interval:45s

Los nombres para los nuevos capítulos se controlan con la opción --generate-chapters-name-template. El idioma se establece con --chapter-language que se debe establecer antes de --generate-chapters.

--generate-chapters-name-template plantilla | Esto establece el nombre de la plantilla para los nombres de los capítulos creados con la opción --generate-chapters. Si no se usa la opción entonces se usa por defecto 'Chapter <NUM:2>'. Hay diversas variables que se pueden usar en la plantilla que son reemplazadas por sus valores correspondientes cuando se genera un capítulo. La cadena de texto '<NUM>' será reemplazada por el número de capítulo. La cadena de texto '<START>' será reemplazada por la marca de tiempo inicial del capítulo.

Las cadenas de texto '<FILE_NAME>' y '<FILE_NAME_WITH_EXT>' sólo serán establecidas cuando se generen capítulos para los archivos unidos. Serán reemplazadas por el nombre de los archivos unidos sin sus extensiones. Tenga en cuenta, que sólo se inserta el nombre del archivo y su extensión, descartando la ruta y la unidad.

Puede especificar el número mínimo de dígitos del número del capítulo con '<NUM:places>', p.e. '<NUM:3>'. Se le añadirán ceros a la izquierda si el número resultante tiene menos dígitos de los especificados.

Puede controlar el formato a usar según la marca de tiempo inicial con <START:format>. Por defecto, se usará '%H:%M:%S'. Los códigos válidos de formato son:

- %h – horas

- %H – horas con dos dígitos que admiten ceros a la izquierda

- %m – minutos

- %M – minutos con dos dígitos que admiten ceros a la izquierda

- %s – segundos

- %S – segundos con dos dígitos que admiten ceros a la izquierda

- %n – nanosegundos con nueve digitos

- %<1-9>n – nanosegundos con hasta nueve dígitos (p.e. tres dígitos con %3n)

--cue-chapter-name-format formato | mkvmerge(1) puede leer CUE sheets de archivos de audio como entrada para capítulos. Los CUE sheets normalmente contiene las entradas PERFORMER y TITLE para cada entrada del índice. mkvmerge(1) usa estos dos textos a fin de construir el nombre del capítulo. Con esta opción, se puede configurar el formato usado para este nombre.

Si esta opción no se establece entonces mkvmerge(1) usa por defecto el formato '%p - %t' (el artista, seguido por un espacio, una barra, otro espacio y el título).

Si el formato está establecido entonces todo es copiado tal y como está excepto los siguientes meta caracteres que serán reemplazados por:

- %p es reemplazado por el texto de la entrada PERFORMER,

- %t es reemplazado por el texto de la entrada TITLE,

- %n es reemplazado por el número de la pista y,

- %N es reemplazado por el número de la pista, agregándole un cero a la izquierda si el número es menor de 10.

--chapters nombre-archivo | Lee la información de capítulo de nombre-archivo. Consulte la sección de más adelante sobre capítulos para obtener más detalles.
--global-tags nombre-archivo | Lee las etiquetas globales de nombre-archivo. Consulte la sección de más adelante sobre etiquetas para obtener más detalles.

## 2.4. Control general de salida (opciones generales avanzadas)

Option | Description
--- | ---
--track-order FID1:TID1,FID2:TID2,... | Esta opción cambia el orden en el que se crean las pistas de un archivo de entrada. El argumento es una lista separada por comas de pares de IDs. Cada par contiene primero el ID de archivo (FID1) que es tan sólo es el número del archivo en la línea de comandos partiendo de cero. El segundo es el ID de pista (TID1) de ese archivo. Si algunos IDs de pista son omitidos entonces esas pistas se crean después de que se hayan creado las establecidas con esta opción.
--cluster-length especificación | Limita el número de bloques de datos o la duración de los datos en cada clúster. El parámetro especificación puede ser un número n sin unidad o un número d con el sufijo 'ms'. Si no se usa ninguna unidad entonces mkvmerge(1) pondrá como máximo n bloques de información en cada clúster. El número máximo de bloques es 65535.

Si el número d tiene el sufijo 'ms' entonces mkvmerge(1) pondrá como máximo d milisegundos de información en cada clúster. El valor mínimo para d es '100ms', y el máximo es '32000ms'.

mkvmerge(1) por defecto pone como máximo 65535 bloques de información y 5000ms de información en cada clúster.

Los programas al tratar de encontrar cierto fotograma tan sólo pueden buscar directamente un clúster y posteriormente leer todo el clúster. Por lo tanto, crear clústeres muy grandes podría conllevar una búsqueda lenta e imprecisa.

--clusters-in-meta-seek | Le dice a mkvmerge(1) crear un elemento meta seek al final del archivo que contendrá todos los clústeres. Consulte también la sección sobre diseño de archivos Matroska.
--timestamp-scale factor | Fuerza el factor de escala de los códigos de tiempo con factor. Los valores admitidos están comprendidos en el rango 1000..10000000 o el valor especial -1. Normalmente, mkvmerge(1) usará el valor 1000000 lo que significa que los códigos de tiempo y duraciones tendrán una precisión de 1ms. Para los archivos que no vayan a contener una pista de video pero si al menos una de audio entonces mkvmerge(1) elegirá automáticamente un factor de escala de códigos de tiempo por lo que todos los códigos de tiempo y duraciones tendrán una precisión de una muestra (sample) de audio. Esto causa una sobrecarga mayor pero permite que la búsqueda y extracción sea más precisa.

Si se usa el valor especial -1 entonces mkvmerge(1) usará la precisión de la muestra incluso si existe una pista de video.

--enable-durations | Escribe las duraciones para todos los bloques. Esto incrementará el tamaño del archivo y por ahora, no ofrece ningún valor adicional para los reproductores.
--no-cues | Le dice a mkvmerge(1) no crear y escribir la información del índice (cue) que puede ser comparada al índice de un AVI. Los archivos Matroska(tm) se pueden reproducir sin la información del índice, pero la búsqueda será probablemente imprecisa y lenta. Usa esto tan sólo si realmente estás desesperado por ahorrar espacio o con fines de testeo. Mire también la opción --cues que puede ser especificada para cada archivo de entrada.
--no-date | Por defecto mkvmerge(1) establece en el campo "fecha" de información del segmento el tiempo & fecha del inicio del multiplexado. Con esta opción, este campo no será escrito.
--disable-lacing | Deshabilita el lacing para todas las pistas. Esto incrementará el tamaño del archivo, especialmente si hay muchas pistas de audio. Esta opción no está diseñada para su uso frecuente.
--disable-track-statistics-tags | Normalmente, mkvmerge(1) escribirá algunas etiquetas con estadísticas para cada pista. Si dichas etiquetas ya están presentes entonces serán sobrescritas. Las etiquetas BPS, DURATION, NUMBER_OF_BYTES y NUMBER_OF_FRAMES. Habilitar esta opción impide que mkvmerge(1) escriba y edite las etiquetas existentes con los mismos nombres.
--disable-language-ietf | Normalmente mkvmerge(1) escribirá los nuevos elementos de idioma IETF BCP 47 junto con los elementos de idioma heredados en los encabezados de pista, capítulos y etiquetas. Si se usa esta opción, únicamente serán escritos los elementos heredados.

## 2.5. División, vinculación, unión y concatenación de archivos (más opciones generales)

Option | Description
--- | ---
--split especificación | Divide el archivo generado después de un tamaño o tiempo especificado. Por favor, tenga en cuenta que estas pistas sólo pueden ser divididas justo antes de un fotograma clave. Por lo tanto, el punto de división podría ser algo distinto del especificado por el usuario.

Por el momento mkvmerge(1) soporta los siguientes modos:

1. División por tamaño.

   Sintaxis: --split [size:]d[k|m|g]

   Ejemplos: --split size:700m or --split 150000000

   El parámetro d puede acabar con 'k', 'm' o 'g' para indicar que el tamaño están en KB, MB o GB, respectivamente. De cualquier otro modo, se asume el tamaño en bytes. Después de que el archivo de salida alcance el tamaño limite, comienza la creación de otro archivo.

   El prefijo 'size:' se puede omitir por motivos de compatibilidad.

2. División por duración.

   Sintaxis: --split [duration:]HH:MM:SS.nnnnnnnnn|ds

   Ejemplos: --split duration:00:60:00.000 o --split 3600s

   El parámetro puede tener la forma HH:MM:SS.nnnnnnnnn para especificar la duración en precisión de nanosegundos o puede ser un número d seguido por la letra 's' para una duración en segundos. HH es el número de las horas, MM el de los minutos, SS para los segundos y nnnnnnnnn son los nanosegundos. Tanto los números de las horas como los nanosegundos pueden ser omitidos. Hay hasta nueve dígitos después del punto decimal. Después de que la duración del contenido, en el archivo actual, alcance este límite comienza la creación de otro archivo.

   El prefijo 'duration:' puede ser omitido por motivos de compatibilidad.

3. División por códigos de tiempo.

   Sintaxis: --split timestamps:A[,B[,C...]]

   Ejemplo: --split timestamps:00:45:00.000,01:20:00.250,6300s

   Los parámetros A, B, C, etc... pueden tener el mismo formato que el usado para la división por duración (mire más arriba). La lista de códigos de tiempo están separados por comas. Tras alcanzar, en la secuencia de entrada, el código de tiempo del punto de división actual se crea un nuevo archivo. Entonces se usa el siguiente punto de división especificado en la lista.

   El prefijo 'timestamps:' no puede ser omitido.

4. Conservar las partes especificadas por los rangos de códigos de tiempo especificados mientras que las otras que son descartadas.

   Sintaxis: --split parts:inicio1-fin1[,[+]inicio2-fin2[,[+]inicio3-fin3...]]

   Ejemplos:

   1. --split parts:00:01:20-00:02:45,00:05:50-00:10:30

   2. --split parts:00:01:20-00:02:45,+00:05:50-00:10:30

   3. --split parts:-00:02:45,00:05:50-

   El modo parts le dice a mkvmerge(1) conservar ciertos rangos de códigos de tiempo mientras se descartan otros. Los rangos a conservar tienen que ser listados después de la palabra clave parts: y separados por comas. Un rango, en sí mismo, consiste en un inicio y un fin, en el mismo formato y formas que acepta --split (p.e. tanto 00:01:20 y 80s se refieren al mismo código de tiempo).

   Si el código de tiempo de inicio se omite entonces por defecto lo toma del valor del código de tiempo final del rango anterior. Si no existe un rango anterior entonces por defecto lo toma el valor del inicio del archivo (mire el ejemplo 3).

   Si el código de tiempo final se omite entonces por defecto lo toma del valor final de los archivos entrada que básicamente le dice a mkvmerge(1) que conserve el resto (mire el ejemplo 3).

   Por lo general, cada rango será escrito a un nuevo archivo. Esto se puede cambiar para que los rangos consecutivos se escriban en el mismo archivo. Por eso el usuario tiene que asignar el prefijo + al código de tiempo de inicial. Esto le dice a mkvmerge(1) que no cree un nuevo archivo y, en vez de eso, concatene el rango después del último rango escrito en el archivo. Los códigos de tiempo serán ajustados para que no existan discontinuidades en el archivo de salida incluso si había un espacio sin abarcar entre dos rangos del archivo de entrada.

   En el ejemplo 1 mkvmerge(1) creará dos archivos. El primero abarca el contenido a partir de 00:01:20 hasta 00:02:45. El segundo archivo comprende el contenido a partir de 00:05:50 hasta 00:10:30.

   En el ejemplo 2 mkvmerge(1) creará sólo un archivo. Este archivo abarcará tanto el contenido a partir de 00:01:20 hasta 00:02:45, como el contenido a partir de 00:05:50 hasta 00:10:30.

   En el ejemplo 3 mkvmerge(1) creará dos archivos. El primero abarcará el contenido desde el inicio del archivo de entrada hasta 00:02:45. El segundo archivo abarca el contenido a partir de 00:05:50 hasta el final del archivo de entrada.

   Note:

   Tenga en cuenta que mkvmerge(1) sólo realiza divisiones en fotogramas claves. Esto es aplicable tanto al inicio como al final de cada rango. Así que si un código de tiempo final está entre dos fotogramas claves, mkvmerge(1) continuará el procesamiento de los fotogramas hasta el final pero excluirá el siguiente fotograma clave.

5. Conservar partes concretas especificando rangos numéricos de fotogramas/campos mientras se descartan otros.

   Sintaxis: --split parts-frames:inicio1-fin1[,[+]inicio2-fin2[,[+]inicio3-fin3...]]

   Ejemplos:

   1. --split parts-frames:137-258,548-1211

   2. --split parts-frames:733-912,+1592-2730

   3. --split parts-frames:-430,2512-

   El modo parts-frames le dice a mkvmerge(1) para conservar ciertos rangos numéricos de fotogramas/campos mientras se descartan otros. Los rangos a conservan tienen que ser especificados después de la palabra clave parts-frames: y separados por comas. Un rango, en si mismo, es un número de un fotograma/campo inicial y final. La numeración comienza en 1.

   Si el número inicial se omite entonces por defecto lo toma del número final del rango anterior. Si no existe un rango anterior entonces por defecto lo toma del inicio del archivo (mire el ejemplo 3).

   Si el número final se omite entonces por defecto lo toma del final del archivo de entrada que básicamente le dice a mkvmerge(1) que conserve el resto (mire el ejemplo 3).

   Por lo general, cada rango será escrito a un nuevo archivo. Esto se puede cambiar para que los rangos consecutivos se escriban en el mismo archivo. Por eso el usuario tiene que asignar el prefijo + al código de tiempo de inicial. Esto le dice a mkvmerge(1) que no cree un nuevo archivo y, en vez de eso, concatene el rango después del último rango escrito en el archivo. Los códigos de tiempo serán ajustados para que no existan discontinuidades en el archivo de salida incluso si había un espacio sin abarcar entre dos rangos del archivo de entrada.

   Note:

   Tenga en cuenta que mkvmerge(1) sólo realiza divisiones en fotogramas claves. Esto es aplicable tanto al inicio como al final de cada rango. Así que si un código de tiempo final está entre dos fotogramas claves, mkvmerge(1) continuará el procesamiento de los fotogramas hasta el final pero excluirá el siguiente fotograma clave.

   En el ejemplo 1 mkvmerge(1) creará dos archivos. El primero abarca el contenido a partir del primer fotograma clave anterior, posterior o el mismo 137 hasta el primer fotograma clave anterior o el mismo 258. El segundo abarca el contenido a partir del 548 hasta el 1211.

   En el ejemplo 2 mkvmerge(1) creará sólo un archivo. Este archivo contendrá tanto el contenido a partir del 733 hasta el 912 como el contenido a partir del 1592 hasta el 2730.

   En el ejemplo 3 mkvmerge(1) creará dos archivos. El primero abarcará el contenido a partir del inicio del archivo de entrada hasta el 430. El segundo archivo abarcará el contenido a partir del 2512 hasta el final del archivo de entrada.

   Este modo sólo toma en cuenta la primera pista de video que se genera. Si no se genera ninguna pista de video entonces la división no ocurrirá.

   Note:

   Los números especificados con este argumento son interpretados en base al número de bloques Matroska(tm) que se generan. Un único bloque Matroska(tm) contiene un fotograma completo (material progresivo) o sólo un campo(material entrelazado). Mkvmerge no hace distinciones entre estos dos y tan sólo cuenta el número de bloques. Por ejemplo: Si se quiere dividir después del 25º fotograma con material entrelazado, entonces tendría que usar 50 (dos campos por fotograma) como punto de corte.

6. División después fotogramas/campos específicos.

   Sintaxis: --split frames:A[,B[,C...]]

   Ejemplo: --split frames:120,237,891

   Los parámetros A, B, C, etc... deben ser todos enteros positivos. La numeración comienza por 1. La lista de números de fotograma/campo está separada por comas. Después de que la secuencia de entrada haya alcanzado el número de fotograma/campo establecido como punto de división, se crea un nuevo archivo. Entonces se usa el siguiente punto de división especificado en la lista. es usado.

   El prefijo 'frames:' no puede ser omitido.

   Este modo sólo toma en cuenta la primera pista de video que se genera. Si no se genera ninguna pista de video entonces la división no ocurrirá.

   Note:

   Los números especificados con este argumento son interpretados en base al número de bloques Matroska(tm) que se generan. Un único bloque Matroska(tm) contiene un fotograma completo (material progresivo) o sólo un campo(material entrelazado). Mkvmerge no hace distinciones entre estos dos y tan sólo cuenta el número de bloques. Por ejemplo: Si se quiere dividir después del 25º fotograma con material entrelazado, entonces tendría que usar 50 (dos campos por fotograma) como punto de corte.

7. División antes de capítulos específicos.

   Sintaxis: --split chapters:all o --split chapters:A[,B[,C...]]

   Ejemplo: --split chapters:5,8

   Los parámetros A, B, C, etc... deben ser todos enteros positivos. La numeración comienza por 1. La lista de capítulos está separada por comas. La división ocurrirá justo antes del primer fotograma clave cuyo código de tiempo sea igual o mayor que el código de tiempo inicial para los capítulos cuyos números están listados. Un capítulo que comienza a los 0s nunca se tiene en cuenta para la división siendo omitido silenciosamente.

   La palabra clave all puede ser usado en vez de una lista de todos los números de los capítulos.

   El prefijo 'chapters:' no puede ser omitido.

   Note:

   El formato del archivo Matroska(tm) soporta estructuras arbitrarias y profundamente anidadas de capítulos llamadas 'edition entries' y 'chapter atoms'. Sin embargo, esta modalidad sólo tiene en cuenta el nivel más alto de los capítulos a través de todas las entradas de la edición.

En el modo de división el nombre del archivo generado se trata de manera diferente que con el funcionamiento normal. Puede contener un printf como expresión '%d' incluyendo un ancho de campo opcional, p.e. '%02d'. Si se hace entonces el número de archivo actual es formateado apropiadamente e insertado en ese punto del nombre del archivo. Si no existe dicho patrón entonces se asume '-%03d' como patrón justo antes de la extensión del archivo: '-o salida.mkv' resultaría en 'salida-001.mkv' y así en adelante. Si no hay extensión entonces '-%03d' será agregado al nombre.

Otro posible patrón es '%c' que será reemplazado por el nombre del primer capítulo del archivo. Tenga en cuenta que cuando figure '%c', el patrón '-%03d' no será añadido automáticamente.

--link | Archivos vinculados a otros cuando se divide el archivo generado. Consulte la siguiente sección vinculación de archivos para más detalles.
--link-to-previous segmento-UID | Vincula el primer archivo generado al segmento con el UID del segmento especificado mediante el parámetro segmento-UID. Consulte la siguiente sección vinculación de archivos para más detalles. Si el SID comienza con = entonces el resto se interpreta como el nombre de un archivo Matroska cuyo UID del segmento es leído y usado.
--link-to-next segmento-UID | Vincula el último archivo generado al segmento con el UID del segmento especificado por el parámetro segmento-UID. Consulte la siguiente sección vinculación de archivos para más detalles. Si el SID comienza con = entonces el resto se interpreta como el nombre de un archivo Matroska cuyo UID del segmento es leído y usado.
--append-mode modo | Establece cómo se calculan los códigos de tiempo al unir archivos. El parámetro modo puede tener dos valores: 'file' que es la opción por defecto y 'track'. Cuando mkvmerge realiza la unión de una pista (llamada 'pista2_1' de ahora en adelante) procedente de un segundo archivo llamado 'archivo2') a una pista (llamada 'pista1_1') del primer archivo (llamado 'archivo1') entonces tiene que compensar cierta cantidad en todos los códigos de tiempo de 'pista2_1'. En el modo 'file' esta cantidad es el mayor código de tiempo encontrado en el 'archivo1' incluso si ese código de tiempo proviniera de una pista diferente a 'pista1_1'. En el modo track la compensación es el mayor código de tiempo de 'pista1_1'.

Por desgracia, mkvmerge no puede detectar qué modo es más conveniente para ser utilizado. Por lo tanto, por defecto usa el modo 'file'. El modo 'file' por lo general funciona mejor para archivos que fueron creados independientemente los unos de los otros; p.e. cuando se unen archivos AVI o MP4. El modo 'track' podría funcionar mejor para fuentes que esencialmente son partes de un archivo, p.e. para archivos VOB y EVO.

Las pistas de subtítulos siempre son tratadas como si el modo 'file' estuviese activado incluso si el que está activado es el modo 'track'.

--append-to SFID1:STID1:DFID1:DTID1[,...] | Esta opción controla que pista es unida a otra. Cada especificación contiene cuatro IDs: un ID de archivo (FID), un ID de pista (TID), un segundo ID de archivo y un segundo ID de pista. El primera par, "Source File ID" y "Source Track ID", identifica la pista que va a ser unida. El segundo par, "Destination File ID" y "Destination Track ID", identifica la pista a la que será unida la primera.

Si se omite esta opción entonces se usa un mapeo estándar. Este mapeo estándar une cada pista del archivo actual a una pista del anterior archivo con el mismo ID de pista. Esto permite unir fácilmente dos archivos que habían sido divididos a partir de una película, si tienen el mismo número de pistas y el ID de pista, con ayuda del comando: mkvmerge -o salida.mkv parte1.mkv +parte2.mkv.

+ | Un único '+' provoca que el siguiente archivo es unido en vez de añadido. El '+' también se puede poner delante del siguiente nombre del archivo. Por lo tanto, los dos comandos siguientes son equivalentes:
    mkvmerge -o completo.mkv archivo1.mkv + archivo2.mkv
    mkvmerge -o completo.mkv archivo1.mkv +archivo2.mkv
[ archivo1 archivo2 ] | Si varios nombres de archivos están entre corchetes entonces el segundo y los restantes archivos serán añadidos al primer archivo que esté editado entre corchetes. Esta es una sintaxis alternativa a usar '+' entre los nombres de archivos. Por lo tanto, los dos siguientes comandos son equivalentes:
    $ mkvmerge -o completo.mkv archivo1.mkv + archivo2.mkv
    $ mkvmerge -o completo.mkv '[' archivo1.mkv archivo2.mkv ']'
= | Por lo general, mkvmerge(1) busca archivos en el mismo directorio como archivo de entrada que tienen el mismo nombre base y que sólo se diferencian en su número de orden de ejecución (p.e. 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB', etc...) y trata todos estos archivos como si estuviesen unidos en un único archivo. Esta opción, un único '=', hace que mkvmerge no busque estos archivos adicionales.

El '=' también se puede poner delante del siguiente nombre del archivo. Por lo tanto, los dos comandos siguientes son equivalentes:

    mkvmerge -o completo.mkv = archivo1.mkv
    mkvmerge -o completo.mkv =archivo1.mkv

( archivo1 archivo2 ) | Si múltiples nombres de archivos están entre paréntesis entonces estos archivos serán tratados como si estuviesen unidos en un único archivo, el cual consiste en el contenido de cada uno de los archivos uno detrás de otro. Por ejemplo, esto se puede usar con archivos VOB procedentes de de un DVD o de MPEG-TS (transport streams). No se puede usar si cada archivo contiene su propio conjunto de encabezados que suele ser el caso con archivos como AVI o MP4.

Poner el nombre del archivo entre paréntesis también evita que mkvmerge(1) busque archivos adicionales con el mismo nombre base tal y como se ha descrito en opción =. Por lo tanto, los dos comandos siguientes son equivalentes:

    mkvmerge -o salida.mkv = archivo.mkv
    mkvmerge -o salida.mkv "(" archivo.mkv ")"

Varias cosas se deben tener en cuenta:

1. Debe haber espacios antes y después de los signos de paréntesis.

2. Cada parámetro entre paréntesis se interpreta como un nombre de archivo. Por lo tanto, todas las opciones que se deban aplicar a este archivo lógico deben ser introducidas antes del signo de apertura del paréntesis.

3. Algunos entornos tratan a los paréntesis como caracteres especiales. Por lo tanto, deben ser escapados o entrecomillados tal y como se muestra en el ejemplo anterior.

## 2.6. Soporte de adjuntos (más opciones globales)

Option | Description
--- | ---
--attachment-description descripción | Descripción en texto sin formato del siguiente adjunto. Esto afecta a la opción --attach-file o --attach-file-once option.
--attachment-mime-type Tipo MIME | Tipo MIME del siguiente adjunto. Se aplica a una de las siguientes opciones --attach-file o --attach-file-once. Una lista oficial de tipos MIME que son reconocidos se pueden encontrar en la página web de IANA. El tipo MIME es obligatorio para un adjunto.
--attachment-name nombre | Establece el nombre de este adjunto que será almacenado en el archivo de salida. Si no se especificó esta opción entonces el nombre será generado a partir del nombre del archivo del adjunto especificado con la opción --attach-file o --attach-file-once.
--attach-file nombre-archivo, --attach-file-once nombre-archivo | Crea un archivo adjunto dentro del archivo Matroska(tm). El tipo MIME debe establecerse antes de que esta opción pueda ser utilizada. La diferencia entre las dos formas es que durante la división los archivos adjuntos con --attach-file son adjuntados a todos los archivos de salida mientras que con --attach-file-once tan sólo se adjuntan al primer archivo creado. Si no se usa la división entonces ambas opciones hacen lo mismo.

mkvextract(1) puede ser utilizado para extraer los archivos adjuntos de un archivo Matroska(tm).

## 2.7. Opciones que se pueden usar para cada archivo de entrada

Option | Description
--- | ---
-a, --audio-tracks [!]n,m,... | Copia las pistas de audio n, m, etc. Los números son los ID de pista que pueden ser obtenidos con la opción --identify. No son los números de la pista (consulte la sección IDs de pista). Por defecto: copia todas las pistas de audio. En lugar del ID de pista también se puede especificar el código de idioma ISO 639-2. Esto sólo funciona para archivos de entrada que ofrecen etiquetas de idioma para sus pistas.

Por defecto: copia todas las pistas de este tipo.

Si los IDs están prefijados con ! entonces significa lo contrario: copia todas las pistas de este tipo excepto las enumeradas después del !.

-d, --video-tracks [!]n,m,... | Copia las pistas de video n, m, etc. Los números son los ID de pista que pueden ser obtenidos con la opción --identify. No son los números de la pista (consulte la sección IDs de pista). Por defecto: copia todas las pistas de video. En lugar del ID de pista también se puede especificar el código de idioma ISO 639-2. Esto sólo funciona para archivos de entrada que ofrecen etiquetas de idioma para sus pistas.

Si los IDs están prefijados con ! entonces significa lo contrario: copia todas las pistas de este tipo excepto las enumeradas después del !.

-s, --subtitle-tracks [!]n,m,... | Copia las pistas de subtítulos n, m, etc. Los números son los ID de pista que pueden ser obtenidos con la opción --identify. No son los números de la pista (consulte la sección IDs de pista). Por defecto: copia todas las pistas de subtítulos. En lugar del ID de pista también se puede especificar el código de idioma ISO 639-2. Esto sólo funciona para archivos de entrada que ofrecen etiquetas de idioma para sus pistas.

Si los IDs están prefijados con ! entonces significa lo contrario: copia todas las pistas de este tipo excepto las enumeradas después del !.

-b, --button-tracks [!]n,m,... | Copia las pistas de botón n, m, etc. Los números son los ID de pista que pueden ser obtenidos con la opción --identify. No son los números de la pista (consulte la sección IDs de pista). Por defecto: copia todas las pistas de botón. En lugar del ID de pista también se puede especificar el código de idioma ISO 639-2. Esto sólo funciona para archivos de entrada que ofrecen etiquetas de idioma para sus pistas.

Si los IDs están prefijados con ! entonces significa lo contrario: copia todas las pistas de este tipo excepto las enumeradas después del !.

--track-tags [!]n,m,... | Copia las etiquetas de las pistas n, m, etc. Los números son los ID de pista que pueden ser obtenidos con la opción --identify. No son los números de la pista (consulte la sección --identify). Por defecto: copia las etiquetas de todas las pistas.

Si los IDs están prefijados con ! entonces significa lo contrario: copia todas las pistas de este tipo excepto las enumeradas después del !.

-m, --attachments [!]n[:all|first],m[:all|first],... | Copia los adjuntos con los IDs n, m, etc... a todos (all) o sólo al primer archivo generado (first). A cada ID se le puede añadir ':all' (que es la opción predeterminada) o ':first'. Si la división está activada entonces estos adjuntos cuyos IDs especificados con ':all' serán copiados a todos los archivos generados mientras que los especificados con ':first' sólo serán copiados al primer archivo generado. Si la división no está activada entonces ambas variantes producen el mismo efecto.

Por defecto todos los adjuntos se copian a todos los archivos generados.

Si los IDs están prefijados con ! entonces significa lo contrario: copia todas las pistas de este tipo excepto las enumeradas después del !.

-A, --no-audio | No copia ninguna pista de audio de este archivo.
-D, --no-video | No copia ninguna pista de video de este archivo.
-S, --no-subtitles | No copia ninguna pista de subtítulos de este archivo.
-B, --no-buttons | No copia ninguna pista de botón de este archivo.
-T, --no-track-tags | No copia ninguna etiqueta de la pista especificada de este archivo.
--no-chapters | No copia ningún capítulo de este archivo.
-M, --no-attachments | No copia ningún adjunto de este archivo.
--no-global-tags | No copia las etiquetas globales de este archivo.
-y, --sync TID:d[,o[/p]] | Ajusta los códigos de tiempo de la pista con el ID TID por d ms. Los IDs de la pista son los mismos que se muestran con la opción --identify. (consulte la sección IDs de pista). o/p: ajusta las marcas de tiempo por o/p para fijar desfases lineales. Si se omite, p por defecto es 1. Tanto o y p pueden ser números decimales.

Por defecto: no hay ninguna sincronización manual (que es lo mismo que d = 0 y o/p = 1.0).

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--cues TID:none|iframes|all | Controla qué entradas del índice (cue) de la pistas se crean para una pista concreta (consulte la sección IDs de pista). 'None' evita la creación de entradas del índice. Sólo los bloques 'iframes' sin referencias anteriores o posteriores ( = fotogramas I en pistas de video) se insertan en el cue sheet. 'All' provoca que mkvmerge(1) genere las entradas del índice para todos los bloques lo que hará que el archivo sea más grande.

Por defecto es 'iframes' para pistas de video y subtítulos, y 'none' para las pistas de audio. Mire también la opción --no-cues que evita la creación de entradas del índice a pesar de las opciones --cues utilizadas.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--default-track TID[:bool] | Establece el indicador &pista predefinida& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Si el usuario no selecciona de forma explícita una pista entonces el reproductor debería preferir aquella pista que tenga establecido su indicador de &pista predefinida&. Sólo una pista de cada tipo (audio, video, subtítulos, botones) puede tener establecido su indicador &pista predefinida&. Si el usuario quiere que ninguna de las pistas tenga el indicador de pista predefinida entonces debe establecer bool a 0 para todas las pistas.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--forced-track TID[:bool] | Establece el indicador de &visualización forzada& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Úselo para las pistas que incluyan texto en pantalla o diálogos en un idioma extranjero.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--hearing-impaired-flag TID[:bool] | Establece el indicador de &discapacidad auditiva& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Este indicador permite configurar si la pista es apta para usuarios con discapacidad auditiva.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--visual-impaired-flag TID[:boleano] | Establece el indicador de &discapacidad visual& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Este indicador permite configurar si la pista es apta para usuarios con discapacidad visual.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--text-descriptions-flag TID[:boleano] | Establece el indicador de &descripciones de texto& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Este indicador permite configurar si la pista incluye descripciones textuales del contenido del video aptas para reproducirse mediante un sistema de conversión de texto a voz para usuarios con discapacidad visual.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--original-flag TID[:boleano] | Establece el indicador de &idioma original& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Este indicador se puede configurar si la pista está en el idioma original del contenido (no una traducción).

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

--commentary-flag TID[:boleano] | Establece el indicador de &comentario& en la pista especificada (consulte la sección IDs de pista) si el argumento opcional bool está establecido a 1 o si no está presente. Este indicador permite configurar si la pista contiene comentarios. Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.
--blockadd TID:nivel | Conserva sólo los BlockAdditions hasta el nivel nivel de la pista especificada. Por defecto se conservan todos los niveles. Esta opción sólo afecta a ciertos tipos de códecs como WAVPACK4.
--track-name TID:nombre | Establece el nombre de la pista especificada al dado en nombre (consulte la sección IDs de pista).
--language TID:idioma | Establece el idioma de la pista especificada (consulte la sección IDs de pista). Tanto los códigos de idioma ISO 639-2 y los códigos de país ISO 639-1 están permitidos. Los códigos de los países serán convertidos a códigos de idioma automáticamente. Todos los idiomas incluidos sus códigos ISO 639-2 pueden ser listados con la opción --list-languages.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

-t, --tags TID:nombre-archivo | Lee las etiquetas para la pista con el número TID del archivo nombre-archivo. Consulte la sección de más adelante acerca de las etiquetas para más detalles.
--aac-is-sbr TID[:0|1] | Le dice a mkvmerge(1) que la pista con el ID TID es SBR AAC (también conocido como HE-AAC o AAC+). Estas opciones son necesarias si: a) el archivo de entrada es un archivo AAC (no para un archivo Matroska(tm)) y b) el archivo AAC contiene datos SBR AAC. La razón para esta opción es que es técnicamente imposible distinguir los datos AAC de los datos SBR AAC sin decodificar un fotograma completo de AAC. Cómo hay diversos problemas de patentes con los decodificadores AAC, mkvmerge(1) nunca realizará esta fase de decodificación. Por lo que, para archivos SBR AAC esta opción es obligatoria. El archivo generado podría no reproducirse correctamente, o ni si quiera hacerlo, si esta opción es omitida.

Si el archivo de entrada es un archivo Matroska(tm) entonces el CodecID debería ser suficiente para detectar SBR AAC. Sin embargo, si el CodecID es erróneo entonces esta opción puede ser usada para corregirlo.

Si mkvmerge detecta erróneamente que es un archivo AAC es SBR entonces puedes añadir ':0' al ID de pista.

--reduce-to-core TID | Algunos códecs de audio tienen un núcleo (core) con pérdidas y una extensión adicional que realiza una decodificación sin pérdidas. Esta opción le dice a mkvmerge(1) que sólo copie el núcleo y no la extensión. Por defecto, mkvmerge(1) copia tanto el núcleo como la extensión.

Actualmente sólo a las pistas DTS les afecta esta opción. Sin embargo, las pistas TrueHD que contienen un núcleo AC-3 se presentan como dos pistas independientes para que el usuario puede seleccionar que pista quiere copiar. Para un DTS esto no funcionaría ya que las extensiones HD no puede ser decodificadas en si misma - a diferencia de lo que pasa con los datos TrueHD.

--remove-dialog-normalization-gain TID | Algunos códecs de audio contienen campos de cabecera que informan al decodificador o reproductor la ganancia (normalmente negativa) a aplicar para la normalización de diálogo. Esta opción le dice a mkvmerge(1) que elimine o minimice esa ganancia al modificar el correspondiente campo de la cabecera.

Actualmente sólo las pistas AC-3, DTS y TrueHD están relacionadas con esta opción.

--timestamps TID:nombre-archivo | Lee los códigos de tiempo que se utilizarán para el ID de pista especificado de nombre-archivo. Estos códigos de tiempo reemplazan de manera forzosa los códigos de tiempo que mkvmerge(1) normalmente calcula. Lea la sección acerca de archivos de códigos de tiempo externos.
--default-duration TID:x | Fuerza la duración predeterminada de una pista a un valor específico. También modifica los códigos de tiempo para que coincidan con la duración predeterminada. El argumento x debe tener el sufijo 's', 'ms', 'us', 'ns', 'fps', 'p' o 'i' para especificar la duración predeterminada en segundos, milisegundos, microsegundos, nanosegundos, 'fotogramas por segundo', 'fotogramas progresivos por segundo', o 'fotogramas entrelazados por segundo, respectivamente. El número x en si mismo puede ser un número decimal o fracción.

Si no se fuerza la duración predeterminada entonces mkvmerge intentará generar la duración predeterminada de la pista a partir del contenedor y/o el bitstream codificado para ciertos tipos de pista, p.e. AVC/H.264 o MPEG-2.

Esta opción también puede ser utilizado para cambiar los FPS de las pistas de video sin tener que usar códigos de tiempo externos.

--fix-bitstream-timing-information TID[:0|1] | Por lo general, mkvmerge(1) no cambia la información del tiempo (frecuencia de fotograma/campo) almacenada en el bitstream de video. Con esta opción esa información se ajusta para coincidir con la información del tiempo. La información del tiempo del contenedor puede provenir de varias fuentes: desde la línea de comandos (consulte la sección --default-duration), el contenedor de la fuente o generado a partir del bitstream.

Note:

Por ahora, sólo ha sido implementado para pistas AVC/H.264.

--compression TID:n | Selecciona el método de compresión que se usará para la pista. Tenga en cuenta que el reproductor debe soportar este método. Los valores válidos son 'none', 'zlib' y 'mpeg4_p2'/'mpeg4p2'. El método de compresión 'mpeg4_p2'/'mpeg4p2' es un método especial llamado 'eliminador de encabezado' que sólo está disponible para pistas de video MPEG4 part 2.

La compresión por defecto para algunas pistas de subtítulos es 'zlib'. Este método de compresión es para el que casi todas, si no todas, las aplicaciones de reproducción son compatibles. No se puede asegurar la compatibilidad para otros métodos de compresión que no sea 'ninguna'.

## 2.8. Opciones que sólo afectan a pistas de video

Option | Description
--- | ---
-f, --fourcc TID:FourCC | Fuerza el FourCC a un valor especificado. Sólo funciona para pistas de video en el modo 'modo compatibilidad de MS'.
--display-dimensions TID:anchoxalto | Los archivos Matroska(tm) contienen dos valores que establecen las propiedades de visualización a las que un reproductor debería usar para redimensionar la imagen en la reproducción a: ancho y alto de visualización. Estos valores pueden ser establecidos con esta opción, p.e. '1:640x480'.

Otra manera de especificar los valores de visualización es usar la opción --aspect-ratio o --aspect-ratio-factor (mire más abajo). Estas opciones son mutuamente excluyentes.

--aspect-ratio TID:proporción|ancho/alto | Los archivos Matroska(tm) contienen dos valores que establecen las propiedades de visualización que un reproductor debería usar para redimensionar la imagen para reproducir a: ancho y alto de visualización. Con esta opción Matroska(tm) calculará automáticamente el ancho y alto de reproducción basado en el ancho y alto original de la imagen y la relación de aspecto especificada con esta opción. La relación de aspecto puede ser especificada como un número decimal de proporción o una fracción 'ancho/alto', p.e. '16/9'.

Otra manera de especificar los valores de visualización es usar la opción --aspect-ratio-factor o --display-dimensions (mire más abajo). Estas opciones son mutuamente excluyentes.

--aspect-ratio-factor TID:factor|n/d | Otra manera de establecer la relación de aspecto es especificar un factor. La relación de aspecto original es primero multiplicada por este factor y después se usa como la relación de aspecto definitiva. Otra manera de especificar los valores de visualización es usar la opción --aspect-ratio o --display-dimensions (mire más abajo). Estas opciones son mutuamente excluyentes.
--cropping TID:izquierda,arriba,derecha,abajo | Establece los valores especificados como los parámetros de recorte de píxeles para una pista de video.
--colour-matrix-coefficients TID:n | Establece los coeficientes matriciales del video para generar los valores de luminancia y crominancia a partir de los colores primarios rojo, verde y azul. El parámetro n es un número entero entre 0 y 10. Los valores válidos y su significado son: 0: GBR, 1: BT709, 2: indeterminado, 3: reservado, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 luminancia no constante, 10: BT2020 luminancia constante
--colour-bits-per-channel TID:n | Establece el número de bits codificados para un canal de color. Un valor de 0 indica que el número de bits no se ha especificado.
--chroma-subsample TID:hori,vert | La cantidad de píxeles a eliminar en los canales Cr y Cb por cada pixel no eliminado horizontal/verticalmente. Ejemplo: Para un video con submuestreo de crominancia 4:2:0, el parámetro se debe establecer a TID:1,1.
--cb-subsample TID:hori,vert | La cantidad de píxeles a eliminar en el canal Cb por cada pixel no eliminado horizontal/verticalmente. Esto se adiciona a la opción --chroma-subsample. Ejemplo: Para un video con submuestreo de crominancia 4:2:1, el parámetro --chroma-subsample se debe establecer a TID:1,0 y el submuestreo de Cb se debe establecer a TID:1,0.
--chroma-siting TID:hori,vert | Establece como se situa horizontal/verticalmente la crominancia (0: indeterminado, 1: arriba, 2: mitad).
--colour-range TID:n | Establece los valores de recorte -clipping- de los rangos de color (0: indeterminado, 1: rango de retransmisión, 2: rango completo (sin recorte), 3: definido por CoeficientesMatriciales/CaracterísticasTransferencia).
--colour-transfer-characteristics TID:n | Las características de transferencia del video. Los valores válidos y su significado son: 0: reservado, 1: ITU-R BT.709, 2: indeterminado, 3: reservado, 4: curva gamma 2.2, 5: curva gamma 2.8, 6: SMPTE 170M, 7: SMPTE 240M, 8: lineal, 9: logarítmica, 10: raiz cuadrada logarítmica, 11: IEC 61966-2-4, 12: ITU-R BT.1361 gama de color extendida, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--colour-primaries TID:n | Establece los colores primarios del video. Los valores válidos y su significado son: 0: reservado, 1: ITU-R BT.709, 2: indeterminado, 3: reservado, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: JEDEC P22 fósforo
--max-content-light TID:n | Establece el brillo máximo de un único pixel (Nivel Máximo de Contenido de Luz) en candelas por metro cuadrado (cd/m²). El valor de n debe ser un número entero positivo.
--max-frame-light TID:n | Establece el brillo máximo de un único fotograma (Nivel Máximo de Luz del Promedio del Fotograma ) en candelas por metro cuadrado (cd/m²). El valor de n debe ser un número entero positivo.
--chromaticity-coordinates TID:rojoj-x,rojo-y,verde-x,verde-y,azul-x,azul-y | Establece las coordenadas cromáticas del color rojo/verde/azul definidas por CIE 1931.
--white-colour-coordinates TID:x,y | Establece las coordenadas cromáticas del color blanco definidas por CIE 1931.
--max-luminance TID:decimal | Establece la luminancia máxima en candelas por metro cuadrado (cd/m²). El valor debe ser menor de 9999.99.
--min-luminance TID:decimal | Establece la luminancia mínima en candelas por metro cuadrado (cd/m²). El valor debe ser menor de 999.9999.
--projection-type TID:método | Establece el método usado de la proyección del video. Los valores admitidos son 0 (proyección rectangular), 1 (proyección equirectangular), 2 (proyección de mapeo cúbico) y 3 (proyección de malla).
--projection-private TID:data | Establece los datos privados que sólo se aplican a una proyección en concreto. Los datos deben ser números hexadecimales con o sin el prefijo "0x", con o sin espacios.
--projection-pose-yaw TID:decimal | Especifica la rotación vertical de la proyección.
--projection-pose-pitch TID:decimal | Especifica la rotación transversal de la proyección.
--projection-pose-roll TID:decimal | Especifica la rotación longitudinal de la proyección.
--field-order TID:n | Establece el orden de campos para la pista de video con el ID de pista TID. El orden debe ser uno de los siguientes números: 0: progresivo; 1: entrelazado con campo superior mostrado y almacenado primero; 2: orden de campo indeterminado; 6: entrelazado con campo inferior mostrado y almacenado primero; 9: entrelazado con campo inferior mostrado primero y campo superior almacenado primero; 14: entrelazado con campo superior mostrado primero y campo inferior almacenado primero
--stereo-mode TID:n|palabraclave | Establece el modo estereoscópico para la pista de video con el ID de pista TID. El modo puede ser un número n entre 0 y 14 o una de estas palabras clave: 'mono', 'side_by_side_left_first', 'top_bottom_right_first', 'top_bottom_left_first', 'checkerboard_right_first', 'checkerboard_left_first', 'row_interleaved_right_first', 'row_interleaved_left_first', 'column_interleaved_right_first', 'column_interleaved_left_first', 'anaglyph_cyan_red', 'side_by_side_right_first', 'anaglyph_green_magenta', 'both_eyes_laced_left_first', 'both_eyes_laced_right_first'.

## 2.9. Opciones que sólo afectan a pistas de subtítulos

Option | Description
--- | ---
--sub-charset TID:conjunto-caracteres | Establece el conjunto de caracteres para realizar la conversión a UTF-8 para los subtítulos UTF-8 de un ID de pista especificada. Si no se especifica el conjunto de caracteres será generado a partir de la configuración regional actual. Tenga en cuenta que un conjunto de caracteres no es necesario para leer subtítulos desde archivos mkvmerge(1) o desde secuencias Kate, ya que estos siempre se almacenan en UTF-8. Consulte la sección acerca de archivos de texto y conjunto de caracteres para una explicación sobre cómo mkvmerge(1) realiza la conversión entre conjunto de caracteres.

Esta opción se puede utilizar varias veces para un archivo de entrada aplicándola a diversas pistas seleccionando IDs de pista diferente de pista cada vez.

## 2.10. Otras opciones

Option | Description
--- | ---
-i, --identify nombre-archivo | Le permitirá a mkvmerge(1) analizar el archivo e informar de qué tipo es, las pistas que contiene y los IDs de pista. Si se usa esta opción entonces la unica opción permitida es el nombre-archivo. El formato de salida usado para el resultado se puede cambiar con la opción --identification-format.
--chapters nombre-archivo | Este es un alias apropiado para "--identification-format json --identify file-name".
-F, --identification-format formato | Determina el formato de salida usado por la opción --identify. Los siguientes formatos son válidos: text (el valor por defecto si esta opción no se usa), y json.

1. El formato de text es corto y legíble. Se compone de una línea por cada elemento encontrado (contenedor, pistas, adjuntos, etc...).

   Este formato no está pensado para ser analizado. La salida se traducirá en el idioma que mkvmerge(1) utiliza (mire también --ui-language).

2. El formatojson genera una representación JSON legible por máquina. Este formato sigue el esquema JSON descrito en el siguiente archivo:

   mkvmerge-identification-output-schema-v14.json

   Todas las versión del esquema JSON están disponibles online y en los archivos del código fuente liberado.

--probe-range-percentage porcentaje | Algunos tipos de archivos tales como secuencias de programa MPEG y transporte (.vob, .m2ts), necesitan analizar cierta cantidad de datos para detectar todas las pistas almacenadas en el archivo. Esta cantidad es un 0.3% del tamaño del archivo original o 10 MB, dependiendo cual sea mayor.

Si se conocen las pistas presentes en el archivo pero no son encontradas, entonces se puede cambiar el porcentaje de exploración con esta opción. El mínimo de 10 MB está definido por defecto y no se puede cambiar.

-l, --list-types | Muestra una lista de archivos de entrada compatibles.
--list-languages | Muestra una lista de idiomas y sus códigos ISO 639-2 que se pueden utilizar con la opción --language.
--priority prioridad | Establece la prioridad de procesamiento con la que mkvmerge(1) se ejecutará. Los valores válidos son 'muy baja', 'baja', 'normal', 'alta' y 'muy alta'. Si no se especifica nada entonces se usa la opción 'normal'. En sistemas basados en Unix, mkvmerge(1) usará la función nice(2). Por lo tanto, sólo el súper usuario puede usar 'alta' y 'muy alta'. En Windows todos los valores pueden se usados por todos los usuarios.

Seleccionando 'muy baja' también provocará que mkvmerge(1) seleccione la más baja prioridad de entrada y salida, así como la de procesamiento.

--command-line-charset conjunto-caracteres | Establece el conjunto de caracteres para convertir las cadenas de texto especificadas en la línea de comandos. Por defecto, el conjunto de caracteres está especificado por la configuración regional actual. Esta configuración se aplica a los argumentos de las siguientes opciones: --title, --track-name y --attachment-description.
--output-charset conjunto-caracteres | Establece el conjunto de caracteres para convertir las cadenas de texto que serán usadas en el archivo de salida. Por defecto, se ajusta al conjunto de caracteres dado por la configuración local del sistema.
-r, --redirect-output nombre-archivo | Escribe todos los mensajes al archivo nombre-archivo en vez de en la consola. Aunque esto se puede hacer fácilmente con la opción de redirección hay casos en los que es necesaria esta opción: cuando el terminal reinterpreta la salida antes de escribirlo al archivo. El conjunto de caracteres establecido con --output-charset se respeta.
--flush-on-close | Le dice al programa que libere de datos la memoria cache cuando se cierren los archivos para su escritura. Esto se puede usar para evitar la pérdida de datos en cortes de energía o para evitar ciertos problemas en el sistema operativo o los controladores. La desventaja es que el multiplexado tardará más, ya que mkvmerge deberá esperar hasta que todos los datos se hayan escrito en el almacenamiento antes de salir. Ver falos #2469 y #2480 en el servidor de MKVToolNix para analizar los pros y los contras en profundidad.
--ui-language código | Fuerza la traducción al código de idioma que será usado (p.e. 'de_DE' para la traducción al Alemán). Introduciendo 'list' como código provocará que el programa muestre una lista de las traducciones disponibles.
--abort-on-warnings | Le dice al programa que cancele después de emitir la primera advertencia. El código de salida del programa será 1.
--deterministic valor inicial | Habilita la creación de archivos idénticos en bytes si se usa la misma versión de mkvmerge(1) con los mismos archivos de origen, el mismo conjunto de opciones y valor inicial. Tenga en cuenta que el campo "fecha" de información del segmento no se escribe en este modo.

El valor inicial puede ser una cadena arbitraria sin tener que ser un número.

Únicamente se garantiza la obtención de archivos idénticos en bytes bajo las siguientes condiciones:

1. Si utiliza una versión de mkvmerge(1) construída con las mismas versiones de libEBML y libMatroska.

2. Los archivos de origen son idénticos en bytes.

3. Las mismas opciones de la línea de comandos se utilizan en el mismo orden (con la especial excepción de --output …).

Al usar otras versiones de mkvmerge(1) u otras opciones de la línea de comandos, puede que obtenga el mismo archivo con idénticos bytes pero no se puede asegurar.

--debug topic | Habilita la depuración para una característica concreta. Esta opción sólo es útil para desarrolladores.
--engage característica | Habilita características experimentales. Una lista de características disponibles puede ser solicitada con la instrucción mkvmerge --engage list. Estas características no están indicadas para ser usadas en situaciones normales.
--gui-mode | Habilita el modo GUI. En este modo las líneas especialmente formateadas pueden ser generadas para decirle a un control de la GUI lo que está pasando. Estos mensajes se rigen bajo el formato '#GUI#mensaje'. El mensaje puede ser continuado por pares de valores/claves como en '#GUI#mensaje#clave1=valor1#clave2=valor2…'. Ni los mensajes ni las claves pueden ser traducidas y siempre se generan en inglés.
@options-file.json | Lee argumentos adicionales de la línea de comandos desde el archivo archivo-opciones. Consulte la sección acerca de archivos de opciones para más información.
--capabilities | Muestra información sobre las características adicionales que han sido compiladas y sale. La primera línea generada será la información de la versión. El resto de líneas contienen exactamente una palabra cuya presencia indica que esa característica ha sido compilada. Estas características son:

- 'FLAC' -- lee archivos en bruto FLAC y manipula pistas FLAC en otros contenedores. p.e. Ogg(tm) o Matroska(tm).

-h, --help | Muestra información de uso y sale.
-V, --version | Muestra la información de la versión y sale.

# 3. Uso

Para cada archivo, el usuario puede seleccionar qué pistas mkvmerge(1) debe tomar. Todos se almacenan en un archivo especificado con -o. Una lista de formatos conocidos (y soportados) se pueden obtener con la opción -l.

Important:

El orden de las opciones en la línea de comandos es importante. Por favor, lea la sección "Orden de opciones" si eres nuevo usando el programa.

# 4. Orden de opciones

El orden en el qué las opciones son especificadas son importantes para algunas opciones. Las opciones se dividen en dos categorías:

1. Opciones que afectan a todo el programa y no están vinculadas a ningún archivo de entrada. Estas son, entre otras, --command-line-charset, --output o --titlee. Estas pueden aparecer en cualquier parte de la línea de comandos.

2. Opciones que afectan a un solo archivo de entrada o una sola pista de un archivo de entrada. Estas opciones se aplican al siguiente archivo en la línea de comandos. Todas las opciones que se aplican al mismo archivo de entrada (o las pistas del mismo archivo de entrada) se pueden especificar en cualquier orden, siempre y cuando, todas aparezcan antes del nombre del archivo de entrada. Ejemplos para las opciones que se aplican a un archivo de entrada son --no-chapters o --chapter-charset. Ejemplos para las opciones que se aplican a una única pista son --default-duration o --language.

Las opciones se procesan de izquierda a derecha. Si una opción aparece varias veces en el mismo ámbito, se utilizará la última. Por lo tanto, el título se establecerá a "Otra cosa" en el siguiente ejemplo:

    mkvmerge -o salida.mkv --title "Esto y eso" entrada.avi --title "Algo más"

El siguiente ejemplo muestra como usando dos veces la opción --language todo es correcto ya que son usadas en diferentes ámbitos. A pesar de que se aplican al mismo ID de pista, estas se aplican a diferentes archivos de entrada y por lo tanto tienen diferentes ámbitos:

    mkvmerge -o salida.mkv --language 0:spa español.ac3 --language 0:jpn japones.ac3

# 5. Ejemplos

Supongamos que tienes un archivo llamado MiPelícula.avi y una pista de audio en otro archivo, p.e. 'MiPelícula.wav'. Lo primero que necesitas es codificar el audio a OggVorbis(tm):

    oggenc -q4 -o MiPelícula.ogg MiPelícula.wav

Después de unos minutos ya puedes unir el audio y el video:

    mkvmerge -o MiPelícula-con-sonido.mkv MiPelícula.avi MiPelícula.ogg

Si tu AVI ya contiene una pista de audio entonces también será copiada (si mkvmerge(1) soporta el formato de ese audio). Para evitar esto, simplemente hacer lo siguiente:

    mkvmerge -o MiPelícula-con-sonido.mkv -A MiPelícula.avi MiPelícula.ogg

Después de unos minutos decides ripear otra pista de audio, p.e. los comentarios del director u otro idioma, 'MiPelícula-añadir-audio.wav'. La codificas de nuevo y la añades al anterior archivo:

    oggenc -q4 -o MiPelícula-añadir-audio.ogg MiPelícula-añadir-audio.wav
    mkvmerge -o MM-completa.mkv MiPelícula-con-sonido.mkv MiPelícula-añadir-audio.ogg

El mismo resultado se puede lograr con:

    mkvmerge -o MM-completa.mkv -A MiPelícula.avi MiPelícula.ogg MiPelícula-añadir-audio.ogg

Ahora abra el mplayer(tm) y disfruta. Si tienes múltiples pistas de audios (o incluso pistas de video) entonces le puedes decir a mplayer(tm) que pista debe reproducir con las opciones '-vid' y '-aid'. Estos están en base y no distinguen entre video y audio (el índice comienza en el cero).

Si necesitas una pista de audio sincronizada puedes hacerlo fácilmente. Lo primero es averiguar que ID de pista tiene la pista Vorbis, con:

    mkvmerge --identify desincronizado.ogg

Ahora pues usar ese ID en la siguiente línea de comandos:

    mkvmerge -o sincronizado.mkv -A entrada.avi -y 12345:200ms desincronizado.ogg

Esto añadiría 200ms de silencio al inicio de la pista de audio con el ID 12345 obtenido de 'desincronizado.ogg'.

Algunas películas comienzan sincronizadas correctamente pero poco a poco se desincronizan. Para este tipo de películas se puede especificar un factor de desfase que será aplicado a todas las marcas de tiempo (timestamps) -- ningún dato es añadido o eliminado. Si se aplicas un factor muy grande o pequeño el resultado puede ser incorrecto. Un ejemplo sería un episodio transcodificado que tiene 0.2 segundos de desincronización al final de la película, y cuya longitud total es de 77340 fotogramas. Si el framerate es 29.97fps, 0.2 segundos corresponden aproximadamente a 6 fotogramas. Así que se puede hacer:

    mkvmerge -o sincronizado.mkv -y 23456:0,77346/77340 desincronizado.mkv

El resultado fue bueno.

Las opciones de sincronización también pueden ser usadas para subtítulos de igual modo.

Para subtítulos de texto puede utilizar cualquier programa para Windows (como SubRipper(tm)) o el paquete subrip(tm) que se puede encontrar en fuentes de transcodificación(1) en el directorio 'contrib/subrip'. El proceso general es:

1. Extraer una secuencia de subtítulos en bruto para la fuente:

       tccat -i /ruta/a/copiar/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtítulo2pgm -o MiPelícula

2. Convertir las imágenes PGM generadas a texto con gocr:

       pgm2txt MiPelícula

3. Revisar el resultado de los archivos de texto:

       ispell -d americano *txt

4. Convertir los archivos de texto a un archivo SRT:

       srttool -s -w -i MiPelícula.srtx -o MiPelícula.srt

El archivo generado puede ser utilizado como otro archivo de entrada para mkvmerge(1):

    mkvmerge -o MiPelícula.mkv MiPelícula.avi MiPelícula.srt

Si necesitas especificar un idioma para una pista concreta, esto es realmente fácil. Primero busca tu idioma en el código ISO 639-2. mkvmerge(1) puede mostrarte todos esos códigos para ti:

    mkvmerge --list-languages

Busca en la lista de los idiomas el que necesites. Supongamos que tienes dos pistas de audio en un archivo Matroska(tm) y necesitas establecer sus códigos de idioma, y que sus IDs de pista son 2 y 3. Esto se puede hacer con:

    mkvmerge -o con-códigos-idioma.mkv --language 2:spa --language 3:jpn sin-códigos-idioma.mkv

Como puedes ver puedes usar la opción --language varias veces.

Es posible que quiera que el reproductor use el holandés como el idioma predeterminado. También tiene subtítulos adicionales, p.e. en inglés y francés, y desea que el programa de reproducción muestre por defecto en francés. Esto se puede hacer con:

    mkvmerge -o con-códigos-idioma.mkv --language 2:ger --language 3:dut --default-track 3 sin-códigos-idioma.mkv --language 0:eng inglés.srt --default-track 0 --language 0:fre francés.srt

Si no ves en la salida de mkvinfo(1), los flags del idioma o pista predeterminada que ha especificado, por favor lea la sección acerca de valores predeterminados.

Deshabilita la compresión para un archivo de entrada.

    mkvmerge -o sin-compresión.mkv --compression -1:none MiPelícula.avi --compression -1:none MiPelícula.srt

# 6. IDs de pista

## 6.1. IDs de pista normal

Algunas opciones para mkvmerge(1) necesitan un ID de pista para especificar a qué pista se le tienen que aplicar. Estos IDs de pista son mostrados por los lectores cuando desmultiplexan el archivo de entrada actual, o si mkvmerge(1) es invocado con la opción --identify. Un ejemplo para esto:

    mkvmerge -i v.mkv
    File 'v.mkv': container: Matroska
    Track ID 0: video (V_MS/VFW/FOURCC, DIV3)
    Track ID 1: audio (A_MPEG/L3)

No debe confundir los IDs de pista que se asignan a las pistas, que se escriben en el archivo MKV generado, con los IDs de pista del archivo de entrada. Sólo los IDs de pista del archivo de entrada se utilizan para las opciones que necesitan estos valores.

También tenga en cuenta que cada archivo de entrada tiene su propio conjunto de IDs de pista. Por lo tanto, los IDs de pista para el archivo 'archivo1.ext', tal y como había reportado 'mkvmerge --identify' no cambian, no importa cuántos otros archivos de entrada existan o en qué posición se use 'archivo1.ext'.

Los IDs de pista son asignados como estos:

- Archivos AVI: La pista de video tiene el ID 0. Las pistas de audio obtienen sus IDs en orden creciente empezando desde el 1.

- Los archivos AAC, AC-3, MP3, SRT y WAV: La única 'pista' en ese archivo se le asigna el ID 0.

- La mayoría de archivos: Los IDs de pista son asignados en el orden en el qué se encuentran, empezando desde el número 0.

Las opciones que utilizan los IDs de pista son aquellos cuya descripción contiene un 'TID'. Las siguientes opciones también utilizan IDs de pista: --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks y --track-tags.

## 6.2. IDs de pista especial

Existen diversos IDs que tienen un significado especial y no aparecen en la identificación de salida.

El ID de pista especial '-1' es un comodín y aplica la opción especificada a todas las pistas que se leen del archivo de entrada.

El ID de pista especial '-2' se refiere a los capítulos en un archivo de origen. Actualmente sólo la opción --sync usa este ID especial. Como alternativa a la opción --sync -2:… se puede usar --chapter-sync ….

# 7. Conversión de archivos de texto y conjunto de caracteres

Note:

Esta sección se aplica a todos los programas de MKVToolNix aunque sólo se mencione mkvmerge(1).

## 7.1. Introducción

Todos los textos en un archivo Matroska(tm) están codificados en UTF-8. Esto implica que mkvmerge(1) convierte cada archivo de texto que lee, así como cada texto dado en la línea de comandos, desde un conjunto de caracteres a UTF-8. Por contra, esto también significa que la salida de mkvmerge(1) tiene que ser convertida desde UTF-8 a un conjunto de caracteres, p.e. si una traducción no inglesa se usa con --ui-language o para texto que proviene desde un archivo Matroska(tm).

mkvmerge(1) realiza esta conversión automáticamente en función de la presencia de un Marcador de Orden Bytes (abreviado: BOM) o de la configuración regional actual. Cómo el conjunto de caracteres se deduce de la configuración regional depende del sistema operativo donde se ejecute mkvmerge(1)

## 7.2. Marcador de Orden Bytes (BOM)

Los archivos de texto que comienzan con un BOM ya están codificados en una representación de UTF. mkvmerge(1) admite los siguientes cinco modos: UTF-8, UTF-16 Little y Big Endian, UTF-32 Little y Big Endian. Los archivos de texto con un BOM son convertidos automáticamente a UTF-8. Todos los parámetros que, de otra manera, cambian el conjunto de caracteres de un archivo de este tipo (p.e. --sub-charset) son ignorados silenciosamente.

## 7.3. Sistemas Linux y Unix-like incluido macOS

El sistemas Unix, mkvmerge(1) usa la llamada al sistema setlocale(3) que a su vez utiliza las variables de entorno LANG, LC_ALL y LC_CYPE. El conjunto de caracteres resultante es a menudo uno de UTF-8 o de la familia ISO-8859-* y se utiliza para todas las operaciones del archivo de texto y para codificar las cadenas de texto en la línea de comandos y la salida de la consola.

## 7.4. Windows

En Windows el juego de caracteres predeterminado utilizado para la conversión de archivos de texto se determina mediante una llamada a la GetACP() del sistema.

La lectura de la línea de comandos se realiza con la función GetCommandLineW() que ya devuelve una cadena de texto Unicode. Por lo tanto, en Windows la opción --command-line-charset se ignora.

La salida a la consola se presenta en tres escenarios:

1. Si la salida se redirige con la opción --redirect-output entonces el conjunto de caracteres predeterminado es UTF-8. Se puede cambiar con --output-charset.

   Si la salida se redirige con cmd.exe, p.e. con mkvinfo archivo.mkv > info.txt, entonces el conjunto de caracteres siempre es UTF-8 y no se puede cambiar.

   De otra manera, (cuando se escribe directamente a la consola) la función de Windows WriteConsoleW() se utiliza y la opción --output-charset se ignora. La consola debería ser capaz de generar todos los caracteres Unicode del correspondiente idioma que está instalado (p.e. los caracteres chinos podrían no ser mostrados en versiones inglesas de Windows).

## 7.5. Opciones de línea de comandos

Las siguientes opciones permiten especificar los conjuntos de caracteres:

- --sub-charset para archivos y pistas de subtítulos de textos almacenadas en formatos de contenedores para las que el conjunto de caracteres no se puede determinar sin ambigüedad. (p.e. archivo Ogg),

- --chapter-charset para archivos y pistas de capítulos de texto almacenadas en formatos de contenedores para las que el conjunto de caracteres no se puede determinar sin ambigüedad. (p.e. archivos Ogg para información de capítulos, pista y archivos, etc..; archivos MP4 para información del capítulos),

- --command-line-charset para todas las cadenas de texto en la línea de comandos,

- --output-charset para todas las cadenas de texto escritas en la consola o a un archivo si la salida ha sido redirigida con la opción --redirect-output. En los sistemas que no sean Windows, el conjunto de caracteres por defecto, es el del sistema actual. En windows por defecto es a UTF-8, tanto redirigiendo con --redirect-output como con cmd.exe, p.e. mkvinfo archivo.mkv > info.txt.

# 8. Archivos de opciones

Un archivo de opciones es un archivo que mkvmerge(1) puede leer argumentos adicionales de la línea de comandos. Esto se puede utilizar para eludir ciertas limitaciones en el shell (entorno) o el sistema operativo como una longitud limitada de la línea de comandos cuando se ejecutan programas externos.

Un archivo de opciones que contiene datos con formato JSON. El contenido debe ser un vector JSON compuesto únicamente de cadenas de caracteres JSON. El archivo debe estar codificado en formato UTF-8. El archivo no debe comenzar con un marcador de orden de bits (BOM), pero si lo hiciese, será omitido.

Las reglas de los caracteres especiales de escape dentro de JSON son las unicas que existen en la especificación oficial JSON, RFC 7159.

La línea de comandos 'mkvmerge -o "mi archivo.mkv" -A "una película.avi" audio.ogg' se podría convertir al siguiente archivo de opciones JSON llamado p.e. 'opciones.json':

    [
      "-o",
      "c:\\Matroska\\mi archivo.mkv",
      "--title",
      "#65",
      "-A",
      "una película.avi",
      "audio.ogg"
    ]

# 9. Vinculación de archivos

Matroska(tm) admite la vinculación de archivos que simplemente lo que significa que un archivo en especifico es el predecesor o sucesor del archivo actual. Para ser precisos, los archivos están realmente vinculados sino los segmentos Matroska(tm). Como la mayoría de archivos probablemente sólo contienen un segmento Matroska(tm) las siguientes explicaciones usan el término 'vinculación de archivos' aunque realmente 'vinculación de segmentos' sería lo más correcto.

Cada segmento se identifica por un único UID del segmento de 128 bits de longitud. Este UID es automáticamente generado por mkvmerge(1). La vinculación se realiza principalmente insertando los UIDs del segmento (abreviado: SID) del anterior/siguiente archivo en la información del encabezado del segmento. mkvinfo(1) muestra estos SIDs si los encuentra.

Si un archivo se divide en varios archivos más pequeños y se utiliza la vinculación, entonces los códigos de tiempo no comenzarán por 0 si no que continuará desde dónde el último archivo lo dejó. De esta manera el tiempo absoluto se mantiene incluso si los archivos anteriores no están disponibles p.e. cuando se transmiten). Si no se utiliza la vinculación entonces los códigos de tiempo de cada archivo comenzarán desde 0. Por defecto, mkvmerge(1) no usa la vinculación de archivos. Si lo necesita podrá activarlo con la opción --link. Esta opción sólo es útil si la división también se activa.

Independientemente de si la división se activa o no, el usuario le puede decir a mkvmerge(1) que vincule los archivos generados a un especifico SIDs. Esto se consigue con las opciones --link-to-previous y --link-to-next. Estas opciones aceptan un segmento SID en el formato que mkvinfo(1) genera: 16 números hexadecimales comprendidos entre 0x00 y 0xff, cada uno con el prefijo '0x', p.e. '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. De manera alternativa, se puede utilizar una forma más simple: 16 números hexadecimales comprendidos entre 0x00 y 0xff, sin el prefijo '0x' y sin espacios, p.e. '41da7366d9cfb21eae78ebb45ecab393'.

Si se utiliza la división entonces el primer archivo se vincula al SID especificado con SID y el último archivo se vincula al SID especificado con --link-to-next. Si no se utiliza la división entonces el archivo será vinculado a ambos SIDs.

# 10. Valores predeterminados

La especificación Matroska(tm) establece que algunos elementos tienen un valor predeterminado. Por lo general, si el valor es igual al predeterminado entonces no será escrito en el archivo a fin de ahorrar espacio. Los elementos que el usuario podría echar en falta en la salida de mkvinfo(1) son los elementos idioma y flag de pista predefinida. El valor predeterminado para el idioma es Inglés ('eng'), y para flag de pista predefinida es true. Por lo tanto, si utiliza --language 0:eng para una pista entonces no se mostrará en la salida de mkvinfo(1).

# 11. Attachments

Es posible que desee conservar algunas fotos junto con su archivo Matroska(tm), o usar subtítulos SSA que requieren de una fuente especial SSA que es realmente rara. En estos casos puede adjuntar estos archivos al archivo Matroska(tm). No sólo son añadidos al archivo sino que son embebidos. Un reproductor puede entonces mostrar estos archivos (en el caso de las 'fotos') o usarlos para renderizar los subtítulos (en el caso de las fuentes 'TrueType(tm)').

Aquí está un ejemplo de cómo adjuntar una foto y fuente TrueType(tm) al archivo generado:

    $ mkvmerge -o salida.mkv -A video.avi audio.ogg \
      --attachment-description "Yo y la banda detrás del escenario en una reunión" \
      --attachment-mime-type image/jpeg \
      --attach-file yo_y_la_banda.jpg \
      --attachment-description "La rara e increible fuente de la belleza" \
      --attachment-mime-type application/octet-stream \
      --attach-file fuente_guay.ttf

Si un archivo Matroska(tm) contiene adjuntos se utiliza como archivo de entrada entonces mkvmerge(1) copiará todos los adjuntos en el nuevo archivo. La selección de qué archivos serán copiados o no, puede ser cambiada con las opciones --attachments y --no-attachments.

# 12. Chapters

El sistema de capítulos de Matroska(tm) es más potente que el antiguo sistema utilizado con los archivos OGM. Las completas especificaciones se pueden encontrar en la página web de Matroska.

mkvmerge(1) admite dos tipos de archivos de capítulos como entrada. El primer formato, denominado 'formato simple de capítulos', que es el mismo formato que se encuentra en las herramientas OGM. El segundo formato se basa en el formato de capítulos XML que son admitidos por todas las funcionalidades de capítulos de Matroska(tm).

Aparte de los archivos de capítulos propios de mkvmerge(1) También puede leer capítulos de otros formatos de archivo (por ejemplo, MP4, Ogg, Blu-rays o DVD).

## 12.1. El formato simple de capítulos

Este formato consiste en un par de líneas que comienzan con 'CHAPTERxx=' y 'CHAPTERxxNAME=', respectivamente. La primera contiene el código de tiempo inicial mientras que el segundo lo hace al títlo. Ejemplo:

    CHAPTER01=00:00:00.000
    CHAPTER01NAME=Intro
    CHAPTER02=00:02:30.000
    CHAPTER02NAME=El niño se prepara para el rock
    CHAPTER03=00:02:42.300
    CHAPTER03NAME=El niño sacude la casa

mkvmerge(1) transformará cada par de líneas en un ChapterAtom de Matroska(tm). No se establece ningún ChapterTrackNumber lo que significa que todos los capítulos se aplican a todas las pistas del archivo.

Como se trata de un archivo de texto, podría ser necesaria realizar una conversión del conjunto de caracteres. Consulte la sección acerca de archivos de texto y conjunto de caracteres para una explicación sobre cómo mkvmerge(1) realiza la conversión entre conjunto de caracteres.

## 12.2. El formato de capítulos basados en XML

El formato de capítulos basados en XML es similar a este ejemplo:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd">
    <Chapters>
      <EditionEntry>
        <ChapterAtom>
          <ChapterTimeStart>00:00:30.000</ChapterTimeStart>
          <ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
          <ChapterDisplay>
            <ChapterString>Un capítulo corto</ChapterString>
            <ChapterLanguage>spa</ChapterLanguage>
          </ChapterDisplay>
          <ChapterAtom>
            <ChapterTimeStart>00:00:46.000</ChapterTimeStart>
            <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
            <ChapterDisplay>
              <ChapterString>Una parte de un capítulo corto</ChapterString>
              <ChapterLanguage>spa</ChapterLanguage>
            </ChapterDisplay>
          </ChapterAtom>
        </ChapterAtom>
      </EditionEntry>
    </Chapters>

Con este formato, se pueden realizar tres cosas que con el formato simple no se puede:

1. Se puede establecer la marca de tiempo para el final del capítulo,

2. los capítulos se pueden anidar,

3. el idioma y país también.

La distribución mkvtoolnix contiene algunos archivos a modo de ejemplo en el subdirectorio doc que se pueden usar como base.

A continuación, se muestran las etiquetas soportadas por XML, sus tipos de datos y, en dónde corresponda, el rango válido para sus valores:

    Chapters (maestro)
      EditionEntry (maestro)
        EditionUID (entero sin signo, rango válido: 1 <= valor)
        EditionFlagHidden (entero sin signo, rango válido: 0 <= valor <= 1)
        EditionFlagDefault (entero sin signo, rango válido: 0 <= valor <= 1)
        EditionFlagOrdered (entero sin signo, rango válido: 0 <= valor <= 1)
        ChapterAtom (maestro)
          ChapterAtom (maestro)
          ChapterUID (entero sin signo, rango válido: 1 <= valor)
          ChapterTimeStart (entero sin signo)
          ChapterTimeEnd (entero sin signo)
          ChapterFlagHidden (entero sin signo, rango válido: 0 <= valor <= 1)
          ChapterFlagEnabled (entero sin signo, rango válido: 0 <= valor <= 1)
          ChapterSegmentUID (binario, rango válido: 1 <= tamaño en bytes)
          ChapterSegmentEditionUID (entero sin signo, rango válido: 1 <= valor)
          ChapterPhysicalEquiv (entero sin signo)
          ChapterTrack (maestro)
            ChapterTrackNumber (entero sin signo, rango válido: 1 <= valor)
          ChapterDisplay (maestro)
            ChapterString (cadena de texto UTF-8)
            ChapterLanguage (cadena de texto UTF-8)
            ChapterCountry (cadena de texto UTF-8)
          ChapterProcess (maestro)
            ChapterProcessCodecID (entero sin signo)
            ChapterProcessPrivate (binario)
            ChapterProcessCommand (maestro)
              ChapterProcessTime (entero sin signo)
              ChapterProcessData (binario)

## 12.3. Leyendo capítulos del Blu-ray

mkvmerge(1) puede leer capítulos de Blu-rays sin encriptar. Por lo que puedes usar la ruta a uno de las listas de reproducción MPLS con el parámetro --chapters.

Ejemplo: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls

## 12.4. Leyendo capítulos del DVDs

Cuando MKVToolNix se compila con la librería libdvdread(tm), mkvmerge(1) puede leer capítulos de DVDs. Por lo que puede usar la ruta a una de las carpetas o archivos del DVD con el parámetro --chapters. Como los DVDs puede contener más de un título y cada título tiene su propio conjunto de capítulos, puedes añadir dos puntos, al final del nombre del argumento, junto con el número del título que necesite. El número del título por defecto es 1.

Ejemplo: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2

## 12.5. Notas generales

Cuando se dividen los archivos, mkvmerge(1) también ajustará correctamente los capítulos. Esto significa que cada archivo sólo incluye las entradas de capítulo que se aplican a él, y que se compensará el código de tiempo para que coincida con el nuevo código de tiempo de cada archivo generado.

mkvmerge(1) es capaz de copiar los capítulos de los archivos de entrada mkvmerge(1) a menos que explícitamente se deshabilite con la opción --no-chapters. Los capítulos procedentes de todas las fuentes (archivos Matroska(tm), Ogg, Matroska(tm), archivos de texto de capítulos) por lo general no se fusionan y acaban en ChapterEditions independientes. Sólo si los capítulos que se leen de diversos archivos Matroska(tm) o XML, comparten el mismo UID de edición, entonces los capítulos se fusionarán en un único ChapterEdition. Si dicha fusión también se desea realizar en otras situaciones, el usuario tiene que extraer primero los capítulos de todas las fuentes con mkvextract(1), y fusionar los archivos XML manualmente para multiplexarlos después.

# 13. Tags

## 13.1. Introducción

El sistema de etiquetas de Matroska(tm) es parecido al de otros contenedores: un conjunto de pares KEY=VALUE. Sin embargo, en Matroska(tm) estas etiquetas también se pueden anidar, y tanto KEY comoVALUE son elementos propios. El archivo de ejemplo example-tags-2.xml muestra cómo usar este sistema.

## 13.2. Alcance de las etiquetas

Las etiquetas Matroska(tm) no se aplican automáticamente a todo el archivo. Se puede hacer, pero también a diferentes partes del archivo: a una o más pistas, a una o más capítulos, o incluso a una combinación de ambas. La especificación de Matroska proporciona más detalles sobre esto.

Una cosa importante es que las etiquetas están vinculadas a pistas o capítulos con el elemento de etiquetas Targets de Matroska(tm), además los UIDs usados para vincularlos no son los IDs de la pista que mkvmerge(1) utiliza en todas partes. En cambio, los números usados son los UIDs que mkvmerge(1) calcula automáticamente (si la pista se toma de otro formato de archivo que no sea Matroska(tm) o que se copian desde el archivo de origen si el archivo de origen de la pista es un archivo Matroska(tm). Por lo tanto, es complicado saber que UIDs se van a usar en el archivo de etiquetas antes de que el archivo se proporcione a mkvmerge(1).

mkvmerge(1) tiene dos opciones con las que se pueden añadir etiquetas a los archivos Matroska(tm): las opciones --global-tags y --tags. La diferencia es que la opción anterior, --global-tags, hará que las etiquetas se apliquen al archivo entero mediante la eliminación de cualquiera de los elementos Targets mencionados anteriormente. La última opción, --tags, inserta automáticamente el UID que mkvmerge(1) genera para la etiqueta especificada con la parte TID de la opción --tags.

## 13.3. Ejemplo

Supongamos que necesitas añadir etiquetas a una pista de video leída desde un archivo AVI. Mkvmerge --identify archivo.avi informa que el ID de la pista de video (¡No confundir este ID con el UID!) es 0. Así que creará el archivo de etiquetas, dejando a un lado todos los elementos Targets e invocar a mkvmerge(1):

    mkvmerge -o archivo.mkv --tags 0:etiquetas.xml archivo.avi

## 13.4. Formato del archivo de etiquetas

mkvmerge(1) admite el formato de archivos de etiquetas basadas en XML. El formato es muy similar al modelo de la especificación Matroska. Tanto la distribución binaria como la fuente de MKVToolNix vienen acompañadas de un archivo de ejemplo llamado example-tags-2.xml que enumera simplemente todas las etiquetas conocidas y que pueden ser usadas como base para las etiquetas de la vida real.

Las básicas son:

- El elemento más externo debe ser <Tags>.

- Una etiqueta lógica está contenido dentro de un par de etiquetas XML <Tag>.

- Los espacios en blanco, directamente antes y después del contenido de la etiqueta, se ignoran.

## 13.5. Tipos de datos

El nuevo sistema de etiquetado de Matroska(tm) sólo conoce dos tipos de datos, una cadena de texto UTF-8 y un tipo binario. El primero se usa para el nombre de la etiqueta junto con el elemento <String> mientras que el tipo binario se usa para el elemento <Binary>.

Como dato binario, en si mismo, no tendría sentido en un archivo XML, mkvmerge(1) admite otros dos métodos para almacenar datos binarios. Si el contenido de una etiqueta XML comienza con '@' entonces el texto siguiente se trata como un nombre de archivo. El contenido del archivo correspondiente se copia en el elemento Matroska(tm).

De lo contrario, se espera que la información se codifique en Base64. Esta es una codificación que transforma datos binarios en un conjunto limitado de caracteres ASCII y p.e. se usa en programas de mensajería. mkvextract(1) generará datos codificados en Base64 para elementos binarios.

El obsoleto sistema de etiquetado conoce más tipos de datos que se pueden encontrar en las especificaciones oficiales de etiquetas Matroska(tm). Como mkvmerge(1) ya no admite este sistema estos tipos no serán descritos.

## 13.6. Etiquetas conocidas para el formato de archivos XML

A continuación, se muestran las etiquetas soportadas por XML, sus tipos de datos y, en dónde corresponda, el rango válido para sus valores:

    Tags (maestro)
      Tag (maestro)
        Targets (maestro)
          TargetTypeValue (entero sin signo)
          TargetType (cadena de texto UTF-8)
          TrackUID (entero sin signo)
          EditionUID (entero sin signo)
          ChapterUID (entero sin signo)
          AttachmentUID (entero sin signo)
        Simple (maestro)
          Simple (maestro)
          Name (cadena de texto UTF-8)
          TagLanguage (cadena de texto UTF-8)
          DefaultLanguage (entero sin signo)
          String (cadena de texto UTF-8)
          Binary (binario)

# 14. Archivos XML de información del segmento

Con archivos XML de información del segmento es posible establecer ciertos valores en el campo del encabezado de "información del segmento" de un archivo Matroska(tm). Todos estos valores no se pueden establecer a través de otras opciones de la línea de comandos.

Otros campos del encabezado de "información del segmento" se pueden establecer a través de las opciones de la línea de comandos pero no mediante archivos XML. Eso afecta p.e. las opciones --title y --timestamp-scale.

Hay otros elementos que no pueden establecerse a través de la línea de comandos ni mediante archivos XML. Eso afecta a los siguientes elementos: DateUTC (también conocido como "fecha multiplexado"), MuxingApp, WritingApp y Duration. Estas siempre se establecen mediante mkvmerge(1), en si mismo.

A continuación, se muestran las etiquetas soportadas por XML, sus tipos de datos y, en dónde corresponda, el rango válido para sus valores:

    Info (maestro)
      SegmentUID (binario, rango válido: tamaño en bytes == 16)
      SegmentFilename (cadena de texto UTF-8)
      PreviousSegmentUID (binario, rango válido: tamaño en bytes == 16)
      PreviousSegmentFilename (cadena de texto UTF-8)
      NextSegmentUID (binario, rango válido: tamaño en bytes == 16)
      NextSegmentFilename (cadena de texto UTF-8)
      SegmentFamily (binario, rango válido: tamaño en bytes == 16)
      ChapterTranslate (maestro)
        ChapterTranslateEditionUID (entero sin signo)
        ChapterTranslateCodec (entero sin signo)
        ChapterTranslateID (binario)

# 15. Diseño de archivo matroska

El diseño de archivo Matroska(tm) es bastante flexible. mkvmerge(1) realizará un archivo de una manera concreta. El archivo creado tendrá una apariencia como esta:

[Encabezado EBML] [segmento {meta seek #1} [información segmento] [información pista] {adjuntos} {capítulos} [clúster 1] {clúster 2} ... {clúster n} {índices} {meta seek #2} {etiquetas}]

Los elementos que están entre llaves son opcionales, y dependen del contexto y opciones utilizadas. Unos cuantos apuntes:

- meta seek #1 sólo incluye un pequeño número de elementos de nivel 1, y sólo si realmente existen: adjuntos, capítulos, índices, etiquetas, meta seek #2. Las versiones anteriores de mkvmerge(1) también colocan los clústers en estos elementos meta seek. Por lo tanto, en algunos casos imprecisos era necesario reservar suficiente espacio. Esto a veces fallaba. Ahora sólo los clústeres son almacenados en meta seek#2, y meta seek #1 se refiere al elemento meta seek #2.

- Los elementos de adjuntos, capítulos y etiquetas sólo están presentes si se han añadidos.

El archivo Matroska(tm) más corto posible se parecería a esto:

[Encabezado EBML] [segmento [información segmento] [información pista] [clúster 1]]

Este podría ser el caso para archivos de audio.

# 16. Archivos de códigos de tiempo externos

mkvmerge(1) permite al usuario elegir los códigos de tiempo para una pista en concreto. Se puede usar para crear archivos con video de tasa de fotogramas variable (VFR) o incluir discontinuidades en el audio. En este caso, un fotograma es la unidad que mkvmerge(1) utiliza por cada bloque Matroska(tm) creado. Para el video es exactamente un fotograma, para audio esto es un paquete de un especifico tipo de audio. P.e. para AC-3 esto sería un paquete que contiene 1536 muestras.

Los archivos de códigos de tiempo que se utilizan cuando las pistas se unen a otras, sólo se deben especificar a la primera parte de una sucesión de pistas. Por ejemplo, si unes dos archivos, video1.avi y video2.avi, y deseas usar códigos de tiempo entonces tu línea de comandos se debería parecer a esto:

    mkvmerge ... --timestamps 0:códigos_tiempo.txt video1.avi +video2.avi

Hay cuatro formatos que son reconocidos por mkvmerge(1). La primera línea siempre contiene el número de la versión. Las líneas vacías, con sólo espacios y las que comienzan con '#' se ignoran.

## 16.1. Formato de archivo de código de tiempo v1

Este formato comienza la línea de la versión. La segunda línea declara el número por defecto de fotogramas por segundo. El resto de líneas contienen tres números separados por comas: el fotograma inicial (0 es el primer fotograma), el último fotograma y el número de fotogramas para este rango. Los Fotogramas Por Segundo (FPS) es un número con un punto decimal '.'. Los rangos pueden contener discontinuidades para el FPS usado por defecto. Un ejemplo:

    # Formato de código de tiempo v1
    assume 27.930
    800,1000,25
    1500,1700,30

## 16.2. Formato de archivo de código de tiempo v2

En este formato cada línea contiene un código de tiempo para el fotograma correspondiente. Este código de tiempo se debe especificar con una precisión de milisegundos. Puede ser un número decimal o no. Se deben especificar como mínimo tantas líneas de códigos de tiempo como fotogramas tiene la pista. Los códigos de tiempo deben estar ordenados. Por ejemplo para 25fps:

    # Formato de código de tiempo v2
    0
    40
    80

## 16.3. Formato de archivo de código de tiempo v3

En este formato cada línea contiene una duración en segundos seguida por un número opcional de fotogramas por segundo. Ambos campos pueden ser números decimales. Si el número de fotogramas por segundo no se especifica se utiliza el valor predeterminado. Para el audio se debería dejar al códec calcular, por si mismo, el código de tiempo del fotograma. Para eso, debería utilizar 0.0 como el número de fotogramas por segundo. También es posible crear discontinuidades en la secuencia usando la palabra clave 'gap' seguida por la duración de la discontinuidad. Un ejemplo para el archivo de audio:

    # Formato de código de tiempo v3
    assume 0.0
    25.325
    7.530,38.236
    gap, 10.050
    2.000,38.236

## 16.4. Formato de archivo de código de tiempo v4

Este formato es idéntico al formato v2. La única diferencia es que los códigos de tiempo no tiene que estar ordenados. Este formato casi nunca se debería utilizar.

# 17. Códigos de salida

mkvmerge(1) finaliza con uno de estos tres códigos de salida:

- 0 -- Este código de salida significa que el multiplexado se ha realizado correctamente.

- 1 -- En este caso mkvmerge(1) genera una salida con al menos una advertencia, pero la la extracción continuó. Una advertencia es prefijada con el texto 'Advertencia:'. Dependiendo de los fallos involucrados los archivos creados serán correctos o no. El usuario es instado a que revise tanto las advertencias como los archivos creados.

- 2 -- Este código de salida es usado después de que ocurra un error. mkvmerge(1) aborta el proceso justo después de mostrar el mensaje de error. El rango de los mensajes de error va desde los argumentos de la línea de comandos, por delante de los errores de lectura/escritura, hasta los archivos erróneos.

# 18. Variables de entorno

mkvmerge(1) usa las variables predefinidas que se determinan en la configuración local del sistema (p.e. LANG y la familia LC_*). Variables adicionales:

Option | Description
--- | ---
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG y su forma abreviada MTX_DEBUG | El contenido se trata como si se hubiese pasado a través de la opción --debug.
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE y su forma abreviada MTX_ENGAGE | El contenido se trata como si se hubiese pasado a través de la opción --engage.

# 19. Vea también

mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)

# 20. WWW

La última versión se puede encontrar siempre en la página de MKVToolNix.