table of contents
- NOMBRE
- SINOPSIS
- DESCRIPCIÓN
- USO
- ORDEN DE OPCIONES
- EJEMPLOS
- IDS DE PISTA
- MANIPULADOR DE IDIOMAS
- CONVERSIÓN DE ARCHIVOS DE TEXTO Y CONJUNTO DE CARACTERES
- ARCHIVOS DE OPCIONES
- VINCULACIÓN DE ARCHIVOS
- VALORES PREDETERMINADOS
- ATTACHMENTS
- CHAPTERS
- TAGS
- INFORMACIÓN DEL SEGMENTO
- DISEÑO DE ARCHIVO MATROSKA
- ARCHIVOS DE CÓDIGOS DE TIEMPO EXTERNOS
- CÓDIGOS DE SALIDA
- VARIABLES DE ENTORNO
- VEA TAMBIÉN
- WWW
- AUTOR
- NOTAS
MKVMERGE(1) | Comandos de usuario | MKVMERGE(1) |
NOMBRE¶
mkvmerge - Multiplexa secuencias multimedia en un archivo Matroska
SINOPSIS¶
mkvmerge [opciones globales] {-o salida} [opciones1] {archivo1} [[opciones2] {archivo2}] [@archivo-opciones.json]
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; mire la página web de Matroska[1].
Importante
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.
Opciones generales¶
-v, --verbose
-q, --quiet
-o, --output nombre-archivo
-w, --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
--default-language código-lenguaje
El código de idioma predefinido es 'und' para 'indeterminado'.
Manipulación de información del segmento (opciones generales)¶
--segmentinfo nombre-archivo.xml
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,...
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.
Manipulación de capítulos y etiquetas (opciones generales)¶
--chapter-language código-idioma
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
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]]
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
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 '+').
Nota
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.
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
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 '<FILE_NAME>' y '<FILE_NAME_WITH_EXT>' sólo se rellenan cuando se generan capítulos para los archivos anexados. Serán reemplazados por el nombre del archivo anexado con su extensión, no respectivamente. Tenga en cuenta que sólo se insertan el nombre base y la extensión del archivo, no sus componentes de directorio o 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:
--cue-chapter-name-format formato
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:
--chapters nombre-archivo
--global-tags nombre-archivo
Control general de salida (opciones generales avanzadas)¶
--track-order FID1:TID1,FID2:TID2,...
Si no se especifica esta opción, en primer lugar, las pistas se ordenarán en por su tipo & y en segundo lugar, por el orden de su archivo de origen. Las pistas de vídeo aparecen en primer lugar, seguidas de las pistas de audio y subtítulos. Otros tipos de pistas poco utilizados aparecen en último lugar.
--cluster-length especificación
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
--timestamp-scale factor
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
--no-cues
--no-date
--disable-lacing
--disable-track-statistics-tags
Habilitar esta opción impide que mkvmerge(1) escriba y edite las etiquetas existentes con los mismos nombres.
--disable-language-ietf
--normalize-language-ietf modo
En la forma canónica todas las sub-etiquetas para las que existe valores preferidos se reemplazan por esos valores preferidos. Por ejemplo, convierte esto 'zh-yue-jyutping' a 'yue-jyutping' o 'fr-FX' a 'fr-FR'.
Para las sub-etiquetas de idioma extendido, primero se crea la forma canónica. Después se reemplazan por esa sub-etiqueta de idioma extendido y su prefijo todos los idiomas principales para los que existe una sub-etiqueta de idioma extendido. Por ejemplo, esto convierte 'yue-jyutping' a 'zh-yue-jyutping' y no sucede nada en 'fr-FR' ya que 'fr' no es una sub-etiqueta de idioma extendido.
--stop-after-video-ends
División, vinculación, unión y concatenación de archivos (más opciones generales)¶
--split especificación
Por el momento mkvmerge(1) soporta los siguientes modos:
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.
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.
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.
Sintaxis: --split parts:inicio1-fin1[,[+]inicio2-fin2[,[+]inicio3-fin3...]]
Ejemplos:
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.
Nota
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.
Sintaxis: --split parts-frames:inicio1-fin1[,[+]inicio2-fin2[,[+]inicio3-fin3...]]
Ejemplos:
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.
Nota
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 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á.
Nota
Los números especificados con este argumento son interpretados en base al número de bloques Matroska que se generan. Un único bloque Matroska 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.
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á.
Nota
Los números especificados con este argumento son interpretados en base al número de bloques Matroska que se generan. Un único bloque Matroska 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.
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.
Nota
El formato del archivo Matroska 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
--link-to-previous segmento-UID
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
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
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[,...]
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.
+
mkvmerge -o completo.mkv archivo1.mkv + archivo2.mkv mkvmerge -o completo.mkv archivo1.mkv +archivo2.mkv
[ archivo1 archivo2 ]
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 ']'
=
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.vob $ mkvmerge -o completo.mkv =archivo1.vob
( archivo1 archivo2 )
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:
Soporte de adjuntos (más opciones globales)¶
--attachment-description descripción
--attachment-mime-type Tipo MIME
Si no especifica el tipo MIME para un adjunto, su tipo se detecterá automáticamente.
--attachment-name nombre
--attach-file nombre-archivo, --attach-file-once nombre-archivo
mkvextract(1) puede ser utilizado para extraer los archivos adjuntos de un archivo Matroska.
--enable-legacy-font-mime-types
Esto afecta tanto a los nuevos adjuntos, si su tipo MIME se detecta automáticamente, como a los adjuntos existentes cuyos tipos MIMEalmacenados serán reasignados a los heredados.
Los tipos MIME afectados son 'font/sfnt', 'font/ttf' y 'font/collection' los cuales están asignados a 'application/x-truetype-fonts' y 'font/otf', que está asignado a 'application/vnd.ms-opentype'.
Opciones que se pueden usar para cada archivo de entrada¶
-a, --audio-tracks [!]n,m,...
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,...
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,...
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,...
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,...
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],...
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
-D, --no-video
-S, --no-subtitles
-B, --no-buttons
-T, --no-track-tags
--no-chapters
-M, --no-attachments
--no-global-tags
--regenerate-track-uids
Este comportamiento se habilita automáticamente para los archivos Matroska creados por el software MakeMKV. La razón es que MakeMKV usa números consecutivos (1, 2, 3...) como UID en lugar de generar números aleatorios.
-y, --sync TID:d[,o[/p]]
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
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-flag TID[:bool]
Si el usuario no selecciona de forma explícita una pista durante la visualización, el reproductor debe seleccionar una de las pistas que tenga configurado el indicador de "pista predefinida", teniendo en cuenta las preferencias de usuario, como su idioma preferido.
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.
--track-enabled-flag TID[:bool]
Sólo aquellas pistas con indicador de "pista habilitada" configurado se tendrán en cuenta para su reproducció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.
--forced-display-flag TID[:bool]
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]
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]
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]
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]
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]
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.
--track-name TID:nombre
--language TID:idioma
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
--aac-is-sbr TID[:0|1]
Si el archivo de entrada es un archivo Matroska 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.
--audio-emphasis TID:n|nombre-simbólico
--reduce-to-core TID
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
Actualmente sólo las pistas AC-3, DTS y TrueHD están relacionadas con esta opción.
--timestamps TID:nombre-archivo
--default-duration TID:x
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]
Nota
Por ahora, sólo ha sido implementado para pistas AVC/H.264.
--compression TID:n
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'.
Opciones que sólo afectan a pistas de video¶
-f, --fourcc TID:FourCC
--display-dimensions TID:anchoxalto
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
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 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
--color-matrix-coefficients TID:n
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
--color-bits-per-channel TID:n
--chroma-subsample TID:hori,vert
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
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
--color-range TID:n
--color-transfer-characteristics TID:n
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)
--color-primaries TID:n
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
--max-frame-light TID:n
--chromaticity-coordinates TID:rojoj-x,rojo-y,verde-x,verde-y,azul-x,azul-y
--white-color-coordinates TID:x,y
--max-luminance TID:decimal
--min-luminance TID:decimal
--projection-type TID:método
--projection-private TID:data
--projection-pose-yaw TID:decimal
--projection-pose-pitch TID:decimal
--projection-pose-roll TID:decimal
--field-order TID:n
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|nombre-simbólico
Opciones que sólo afectan a pistas de subtítulos¶
--sub-charset TID:conjunto-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.
Otras opciones¶
-i, --identify nombre-archivo
El formato de salida usado para el resultado se puede cambiar con la opción --identification-format.
--chapters nombre-archivo
-F, --identification-format formato
Este formato no está pensado para ser analizado. La salida se traducirá en el idioma que mkvmerge(1) utiliza (mire también --ui-language).
mkvmerge-identification-output-schema-v20.json[3]
Todas las versión del esquema JSON están disponibles online y en los archivos del código fuente liberado.
--probe-range-percentage porcentaje
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.
--list-audio-emphasis
--list-languages
--list-stereo-modes
-l, --list-types
--priority prioridad
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
--output-charset conjunto-caracteres
-r, --redirect-output nombre-archivo
--flush-on-close
--ui-language código
--abort-on-warnings
--deterministic valor inicial
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:
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
--engage característica
--gui-mode
@options-file.json
--capabilities
-h, --help
-V, --version
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.
Importante
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.
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:
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
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:
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 y disfruta. Si tienes múltiples pistas de audios (o incluso pistas de video) entonces le puedes decir a mplayer 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) o el paquete subrip que se puede encontrar en fuentes de transcodificación(1) en el directorio 'contrib/subrip'. El proceso general es:
tccat -i /ruta/a/copiar/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtítulo2pgm -o MiPelícula
pgm2txt MiPelícula
ispell -d americano *txt
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 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-flag 3 sin-códigos-idioma.mkv --language 0:eng inglés.srt --default-track-flag 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
IDS DE PISTA¶
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:
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.
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 ....
MANIPULADOR DE IDIOMAS¶
Matroska admite dos tipos diferentes de elementos de idioma: el antiguo y obsoleto elemento "Language", que contiene códigos ISO 639-2 alfa 3, y las nuevas etiquetas "LanguageIETF", que contienen etiquetas de idioma BCP 47 del IETF. Todas las opciones de mkvmerge(1) que aceptan un idioma también admiten una etiqueta de idioma BCP 47. mkvmerge(1) obtendrá, siempre que sea posible, el valor del elemento "Idioma" obsoleto a partir de las etiquetas de idioma BCP 47.
Al identificar un archivo en modo JSON, los elementos existentes de cabecera de pista "LanguageIETF" se mostrarán como la propiedad de pista language_ietf.
Al escribir un archivo mkvmerge(1) siempre escribirá los elementos "LanguageIETF", "ChapLanguageIETF" y "TagLanguageIETF" (los dos últimos sólo si se escriben capítulos o etiquetas respectivamente). Además de esos elementos, se escribirán los elementos antiguos correspondientes; se ajustarán a la parte del código ISO 639-2 de la etiqueta de idioma BCP 47. Por ejemplo, cuando el idioma de la pista se establece a sr-Cyrl-RS "LanguageIETF" se establecerá asr-Cyrl-RS y el antiguo elemento "Language" se establecerá asrp.
Al leer archivos existentes (archivos Matroska, archivos de capítulos o etiquetas XML, etc.) que ya contengan elementos "...LanguageIETF", se conservarán los elementos previos. En caso contrario, se añadirán elementos "...LanguageIETF" en función de las opciones de la línea de comandos y de otros elementos "...Language" obsoletos existentes.
La creación de los nuevos elementos puede desactivarse por completo con la opción de línea de comandos --disable-language-ietf, que actúa sobre los tres nuevos elementos.
Puede elegir el método de normalización aplicado a las subetiquetas de idioma extendidas con el parámetro --normalize-language-ietf.
CONVERSIÓN DE ARCHIVOS DE TEXTO Y CONJUNTO DE CARACTERES¶
Nota
Esta sección se aplica a todos los programas de MKVToolNix aunque sólo se mencione mkvmerge(1).
Introducción¶
Todos los textos en un archivo Matroska 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.
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)
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.
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.
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:
Opciones de línea de comandos¶
Las siguientes opciones permiten especificar los conjuntos de caracteres:
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[4].
El nombre del archivo de opciones debe especificarse como un argumento de línea de comandos con el carácter '@' como prefijo.
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" ]
El comando correspondiente debería ser entonces 'mkvmerge @options.json'.
VINCULACIÓN DE ARCHIVOS¶
Matroska 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. Como la mayoría de archivos probablemente sólo contienen un segmento Matroska 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.
VALORES PREDETERMINADOS¶
La especificación Matroska 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).
ATTACHMENTS¶
Es posible que desee conservar algunas fotos junto con su archivo Matroska, 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. 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').
Aquí está un ejemplo de cómo adjuntar una foto y fuente TrueType 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 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.
CHAPTERS¶
El sistema de capítulos de Matroska 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[1].
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.
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).
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 o líneas en un Matroska ChapterAtom. No 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.
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:
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)
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
Leyendo capítulos del DVDs¶
Cuando MKVToolNix se compila con la librería libdvdread, 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
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, Ogg, Matroska, 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 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.
TAGS¶
Introducción¶
El sistema de etiquetas de Matroska es parecido al de otros contenedores: un conjunto de pares KEY=VALUE. Sin embargo, en Matroska 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.
Alcance de las etiquetas¶
Las etiquetas Matroska 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[5] 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, 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 o que se copian desde el archivo de origen si el archivo de origen de la pista es un archivo Matroska. 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: 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.
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
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[5]. 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:
Tipos de datos¶
El nuevo sistema de etiquetado de Matroska 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.
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. Como mkvmerge(1) ya no admite este sistema estos tipos no serán descritos.
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)
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. 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)
DISEÑO DE ARCHIVO MATROSKA¶
El diseño de archivo Matroska 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:
El archivo Matroska 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.
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 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.
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
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
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
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.
CÓDIGOS DE SALIDA¶
mkvmerge(1) finaliza con uno de estos tres códigos de salida:
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:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG y su forma abreviada MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE y su forma abreviada MTX_ENGAGE
VEA TAMBIÉN¶
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
WWW¶
La última versión se puede encontrar siempre en la página de MKVToolNix[6].
AUTOR¶
Moritz Bunkus <moritz@bunkus.org>
NOTAS¶
- 1.
- la página web de Matroska
- 2.
- IANA
- 3.
- mkvmerge-identification-output-schema-v20.json
- 4.
- RFC 7159
- 5.
- La especificación de Matroska
- 6.
- la página de MKVToolNix
2024-09-07 | MKVToolNix 87.0 |