mkvpropedit -- Modifica las propiedades existentes en archivos Matroska(tm) sin multiplexar

# 1. Sinopsis

mkvpropedit opciones {archivo-origen} {acciones}

# 2. Descripción

Este programa analiza un archivo Matroska(tm) y modifica alguna de sus propiedades. Entonces escribe estas modificaciones en el archivo existente. Entre las propiedades que pueden ser modificadas están los elementos de la información del segmento (p.e. el título) y los encabezados de pista (p.e. el código del idioma, el flag de 'pista predefinida' o el nombre).

Opciones:

Option | Description
--- | ---
-l, --list-property-names | Enumera todos los conocidos y editables nombres, su tipo (texto, entero, booleano, etc...) y una pequeña descripción. El programa después sale. Por lo tanto, el parámetro nombre-archivo no tiene que ser suministrado.
-p, --parse-mode modo | Establece el modo de análisis. El parámetro 'modo' puede ser 'fast' (que es el predeterminado) o 'full'. El modo 'fast' no analiza el archivo entero pero usa los elementos de meta búsqueda para localizar los elementos necesarios del archivo original. En el 99% de los casos es suficiente. Sin embargo, para archivos que no contienen elementos de meta búsqueda o que están dañados, el usuario debería de usar el modo de análisis 'full'. Un análisis completo de un archivo puede llevar bastantes minutos mientras que un análisis rápido sólo lleva unos segundos.

Acciones que tienen que ver con las propiedades de información de la pista y segmento:

Option | Description
--- | ---
-e, --edit selector | Establece la sección del archivo Matroska(tm) (información del segmento o ciertos encabezados de pista) sobre la que se centrarán todas las acciones: add, set y delete. Esta opción puede ser múltiples veces de manera que puede ser modificado más de un elemento a la vez. Por defecto, mkvpropedit(1) editará la sección de información del segmento. Consulte la sección sobre selectores de edición para una completa descripción de la sintaxis.
-a, --add name=valor | Añade una propiedad name con el contenido de valor. Esta propiedad será añadida incluso si dicha propiedad ya existe. Tenga en cuenta que la mayoría de propiedades son únicas y sólo existe una instancia de ellas.
-s, --set name=valor | Establece todas las instancias de la propiedad name con el contenido valor. Si no existe dicha propiedad entonces será añadida.
-d, --delete nombre | Borra todas las instancias de la propiedad name. Tenga en cuenta que algunas propiedades son necesarias y no pueden ser eliminadas.

Acciones que tienen que ver con las etiquetas y capítulos:

Option | Description
--- | ---
-t, --tags selector:nombre | Reemplaza o añade las etiquetas del archivo llamado nombre o las elimina si nombre está vacío. mkvpropedit(1) lee el mismo formato de etiquetas XML que mkvmerge(1) también puede leer. El selector debe ser una de estas palabras: all, global o track. Para all, mkvpropedit(1) reemplazará o eliminará todas las etiquetas del archivo. Con global sólo las etiquetas globales serán reemplazadas o eliminadas. Por ejemplo: mkvpropedit "nombre-archivo.mkv" --tags global:etiquetas.xml mkvpropedit "nombre-archivo.mkv" --tags global: Con track, mkvpropedit(1) reemplazará las etiquetas de la pista especificada. Además, las etiquetas leídas desde nombre serán asignadas a la misma pista. La pista se especifica de la misma manera que con los selectores de edición (mire abajo). Por ejemplo: mkvpropedit "nombre-archivo.mkv" --tags track:a1:nuevas-etiquetas-audio.xml.
--add-track-statistics-tags | Calcula las estadísticas de todas las pistas en un archivo y añade nuevas etiquetas de estadística para ellas. Si el archivo ya contiene dichas etiquetas entonces serán actualizadas.
--delete-track-statistics-tags | Elimina las etiquetas de estadística de todas las pistas de un archivo. Si el archivo no contiene etiquetas de estadística, entonces no habrá ninguna modificación.
-c, --chapters nombre | Reemplaza o añade los capítulos del archivo llamado nombre o las elimina si nombre está vacío. mkvpropedit(1) lee el mismo formato de capítulos simple y XML que mkvmerge(1) también puede leer.

Acciones para manipular adjuntos:

Option | Description
--- | ---
--add-attachment nombre-archivo | Añade un nuevo adjunto a nombre-archivo. Si la opción --attachment-name es usada antes de esta opción entonces su valor es usado como el nuevo nombre del adjunto. Por el contrario, se generará a partir del nombre-archivo. Si la opción --attachment-mime-type es usada antes de esta opción entonces su valor es usado como el nuevo tipo MIME del adjunto. Por el contrario, es auto-detectado a partir del contenido del nombre-archivo. Si la opción --attachment-description es usada antes de esta opción entonces su valor es usado como la nueva descripción del adjunto. Por el contrario, ninguna descripción será establecida. Si la opción --attachment-uid se usa delante de esta opción entonces su valor se usará como el nuevo UID del adjunto. De lo contrario, un UID aleatorio se generará automáticamente.
--replace-attachment selector: nombrearchivo | Reemplaza uno o más adjuntos que coincidan con el selector del archivo nombre-archivo. Si más de un adjunto existente coincide con el selector entonces todo su contenido será reemplazado por el contenido del nombre-archivo. El selector puede tener una de estas cuatro formas: ID, UID, Name y MIME type. Están explicadas más abajo en la sección selectores de adjuntos. Si la opción --attachment-name se usa delante de esta opción entonces su valor se establece como el nuevo nombre para cada adjunto modificado. De lo contrario, los nombres no se modificarán. Si la opción --attachment-mime-type se usa delante de esta opción entonces su valor se establece como el nuevo tipo MIME para cada adjunto modificado. De lo contrario, los tipo MIMES no se modificarán. Si la opción --attachment-description se usa delante de esta opción entonces su valor se establece como la nueva descripción de cada adjunto modificado. De lo contrario, las descripciones no se modificarán. Si la opción --attachment-uid se usa delante de esta opción entonces su valor se establece como el nuevo UID para cada adjunto modificado. De lo contrario, los UIDs no se modificarán.
--update-attachment selector | Establece las propiedades de uno o más adjuntos que coincidan con el selector. Si más de un adjunto coincide con el selector, entonces todas sus propiedades serán actualizadas. El selector puede tener una de estas cuatro formas: ID, UID, Name y MIME type. Están explicadas más abajo en la sección selectores de adjuntos. Si la opción --attachment-name se usa delante de esta opción entonces su valor se establece como el nuevo nombre para cada adjunto modificado. De lo contrario, los nombres no se modificarán. Si la opción --attachment-mime-type se usa delante de esta opción entonces su valor se establece como el nuevo tipo MIME para cada adjunto modificado. De lo contrario, los tipo MIMES no se modificarán. Si la opción --attachment-description se usa delante de esta opción entonces su valor se establece como la nueva descripción de cada adjunto modificado. De lo contrario, las descripciones no se modificarán. Si la opción --attachment-uid se usa delante de esta opción entonces su valor se establece como el nuevo UID para cada adjunto modificado. De lo contrario, los UIDs no se modificarán.
--delete-attachment selector | Elimina uno o más adjuntos que coincida con el selector. El selector puede tener una de estas cuatro formas: ID, UID, Name y MIME type. Están explicadas más abajo en la sección selectores de adjuntos.

Opciones para acciones sobre adjuntos:

Option | Description
--- | ---
--attachment-name nombre | Establece el nombre a usar en la operación --add-attachment o --replace-attachment.
--attachment-mime-type mime-type | Establece el tipo MIME a usar en la operación --add-attachment o --replace-attachment.
--attachment-description descripción | Establece la descripción a usar en la operación --add-attachment o --replace-attachment.
--enable-legacy-font-mime-types | Habilita el uso de tipos MIME heredados para ciertos tipos de fuentes adjuntas. Por ejemplo, 'application/x-truetype-font' se usará para fuentes TrueType en vez de 'fonts/ttf'. Esto afecta tanto al añadir nuevos adjuntos como al reemplazar los adjuntos existentes, pero sólo si no se especifica el nuevo tipo MIME. Otros adjuntos existentes no serán modificados. 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'.

Otras opciones:

Option | Description
--- | ---
--disable-language-ietf | Normalmente cuando el usuario solicita realizar cambios en la propiedad de cabecera de pista 'language' , mkvpropedit(1) aplicará el mismo cambio en el nuevo elemento de cabecera de pista LanguageIETF junto con el elemento heredado Language. Si se usa esta opción, el cambio sólo es aplicado en el elemento heredado Language. Esta opción no afecta a los cambios solicitados mediante la propiedad de cabecera de pista 'language-ietf' .
--normalize-language-ietf modo | Habilita la normalización de todas las etiquetas de idioma IETF BCP 47 a su forma canónica con el modo 'canonical', a su forma de sub-etiquetas de idioma extendido con el modo 'extlang' o lo desactiva con el modo 'off'. Por defecto, se aplica la normalización a la forma canónica. 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. Esta normalización sólo se aplica a elementos que realmente han cambiado: Al editar cabeceras de pista sólo se ven afectados los elementos del idioma de la pista que se establecen a través de las especificaciones de edición. Los idiomas de las pistas que no son editados no son modificados. Editar una pista y sólo configurar distintas propiedades del idioma tampoco afectará al idioma. Cuando se editan los capítulos todos los elementos del idioma, de todos los elementos del capítulo, se ven afectados; ya que los capítulos existentes siempre se reemplazan por completo. Al editar etiquetas sólo se ven afectados los elementos de idioma de las etiquetas que realmente son sustituidos. Por ejemplo, cuando se reemplazan las etiquetas globales no se ven afectadas las etiquetas de pista existentes. La mejor forma de normalizar todas las etiquetas de idioma existentes en un archivo es volver a multiplexarlas con mkvmerge(1) y configurarles su opción '--normalize-language-ietf' al modo deseado.
--command-line-charset conjunto-caracteres | Establece el conjunto de caracteres a convertir las cadenas de texto dadas desde la línea de comandos. Por defecto, se ajusta al conjunto de caracteres dado por la configuración local del sistema.
--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.
--no-bom | Normalmente, los archivos de texto creados y codificados en una de las variantes UTF comienzan con un marcador de orden de bytes (BOM). Usar esta opción deshabilita la escritura de dicho marcador.
--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.
--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 mkvpropedit --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.
-v, --verbose | Habilita el modo detallado y muestra todos los elementos Matroska(tm) importantes que pueden ser leídos.
-h, --help | Muestra información de uso y sale.
-V, --version | Muestra la información de la versión y sale.
@options-file.json | Lee argumentos adicionales de la línea de comandos desde el archivo archivo-opciones. Para más información sobre los formatos admitidos para esos archivos consulte la sección acerca de "archivos de opciones" en la página del manual de mkvmerge(1)

# 3. Selectores de edición

La opción --edit establece la sección del archivo Matroska(tm) (información del segmento o ciertos encabezados de pista) sobre la que se centrarán todas las acciones: add, set y delete. Esto es válido hasta que se encuentra el siguiente parámetro --edit. El argumento para esta opción se llama el selector de edición.

Por defecto, mkvpropedit(1) editará la sección de información del segmento.

## 3.1. Información del segmento

La información del segmento puede ser seleccionada con una de estas tres palabras: 'info', 'segment_info' o 'segmentinfo'. Contiene propiedades como el título o el UID del segmento .

## 3.2. Encabezados de pista

Los encabezados de la pista pueden ser seleccionados con un selector ligeramente más complejo. Todas las variantes comienzan con 'track:'. Las propiedades del encabezado de pista incluye elementos como el código de idioma, el flag de 'pista predefinida' o el nombre de la pista.

Option | Description
--- | ---
track: n | Si el parámetro n es un número entonces la pista con número n será seleccionada. El orden de pista es el mismo que se genera con la opción --identify de mkvmerge(1). La numeración empieza en 1.
track: tn | Si el parámetro empieza con el carácter t seguido por n entonces la pista con número n de un tipo específico de pista será seleccionada. El parámetro del tipo de pista t debe ser uno de estos cuatro caracteres: 'a' para una pista de audio, 'b' para un pista de botón, 's' para una pista de subtítulo y 'v' para una pista de video. El orden de pista es el mismo que se genera con la opción --identify de mkvmerge(1). La numeración empieza en 1.
track:=uid | Si el parámetro empieza con un '=' seguido por un número de uid, se seleccionará la pista cuyo elemento UID coincida con este uid. Los UIDs de pista se pueden obtener con mkvinfo(1).
track:@número | Si el parámetro empieza con un '@' seguido por un número, se seleccionará la pista cuyo número de elemento coincida con este número. El número de pista puede ser obtenido con mkvinfo(1).

## 3.3. Notas

Debido a la naturaleza de los selectores de edición de pista es posible que actualmente algunos selectores coincidan con los mismos encabezados de pista. En muchos casos, todas las acciones para estos selectores de edición serán combinados y ejecutados en el orden en el que fueron dadas en la línea de comandos.

# 4. Selectores de adjuntos

Un selector de adjuntos se utiliza con las dos acciones --replace-attachment y --delete-attachment. Puede tener una de las cuatros formas siguientes:

1. Selección mediante el ID de adjunto. De esta forma el selector es un simple número, el ID del adjunto tal y como se genera con el comando de identificación de mkvmerge(1).

2. Selección mediante el UID de adjunto (Único ID). De esta forma el selector es el signo igual = acompañado por un número, el UID del adjunto tal y como se genera con el comando de identificación detallado (verbose) de mkvmerge(1).

3. Selección mediante el name (nombre) de adjunto. De esta forma el selector es la palabra literal name: seguida por el nombre del adjunto. Si el selector es usado con --replace-attachment entonces los dos puntos que pudiera contener el nombre deberán ser escapados con \c.

4. Selección mediante el MIME type (tipo MIME). De esta forma el selector es la palabra mime-type: seguida por el tipo MIME del adjunto. Si el selector es usado con --replace-attachment entonces los dos puntos que pudiera contener el tipo MIME deberán ser escapados con \c.

# 5. Manipulador de idiomas

mkvpropedit(1) intenta hacer lo correcto por defecto. Por lo tanto, los cambios en la propiedad language harán que mkvpropedit(1) aplique el mismo cambio tanto al nuevo elemento "LanguageIETF" así como al antiguo elemento "Language" de forma similar a como mkvmerge(1) aplica el idioma a ambos elementos. Por ejemplo, al utilizar mkvpropedit movie.mkv --edit track:2 --set language=zh-TW el elemento "LanguageIETF" se establecerá en zh-TW y el antiguo elemento "Language" achi.

Además, hay una nueva propiedad de cabecera de pista llamada language-ietf que se puede establecer o eliminar. Los cambios en esta propiedad sólo se aplican al nuevo elemento de cabecera de pista "LanguageIETF". Hay que tener en cuenta que el antiguo elemento de cabecera de pista "Language" es un elemento obligatorio en Matroska — lo que significa que, aunque no esté presente en el archivo, tiene un valor implícito. Cuando el usuario sólo establece la propiedad language-ietf pero no la propiedad language, mkvpropedit(1) añadirá el antiguo elemento "Language" en algunos casos & lo establecerá en und (que significa "indeterminado") ya que el usuario no especificó un valor para él.

Al leer archivos XML de capítulos o etiquetas mkvpropedit(1) funciona como lo hace mkvmerge(1).

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.

Puedes elegir el método de normalización aplicado a las subetiquetas de idioma extendidas con el parámetro --normalize-language-ietf.

# 6. Ejemplos

El siguiente ejemplo edita un archivo llamado 'película.mkv'. Establece el título del segmento y modifica el código de idioma de una pista de audio y subtítulo. Tenga en cuenta que este ejemplo puede ser acortado al omitir la primera opción --edit ya que editar el elemento de información del segmento está incluido por defecto para todas las opciones encontradas antes de la primera opción --edit.

    mkvpropedit película.mkv --edit info --set "title=La película" --edit track:a1 --set language=spa --edit track:a2 --set language=eng

El segundo ejemplo elimina 'flag de pista predefinida' de la primera pista de subtítulo y la establece para la segunda. Tenga en cuenta que mkvpropedit(1), a diferencia de mkvmerge(1), no establece automáticamente a '0' el valor de 'flag de pista predefinida' cuando otra pista se ha establecido a '1'.

    mkvpropedit película.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1

Reemplaza las etiquetas para la segunda pista de subtítulos de un archivo:

    mkvpropedit película.mkv --tags track:s2:nuevas-etiquetas-subtítulo.xml

Elimina todas las etiquetas que hay en el archivo:

    mkvpropedit película.mkv --tags all:

Reemplaza los capítulos en un archivo:

    mkvpropedit película.mkv --chapters nuevos-capítulos.xml

Elimina todos los capítulos del archivo:

    mkvpropedit película.mkv --chapters ""

Añade un archivo de tipo fuente (Arial.ttf) como un adjunto:

    mkvpropedit película.mkv --add-attachment Arial.ttf

Añade un archivo de tipo fuente (89719823.ttf) como un adjunto y proporciona información de como es la fuente Arial:

    mkvpropedit película.mkv --attachment-name Arial.ttf --attachment-description "La fuente Arial como TrueType"
    --attachment-mime-type application/x-truetype-font --add-attachment 89719823.ttf

Reemplaza el archivo adjunto (Comic.ttf) del archivo por otro (Arial.ttf):

    mkvpropedit película.mkv --attachment-name Arial.ttf --attachment-description "La fuente Arial como TrueType"
    --replace-attachment name:Comic.ttf:Arial.ttf

Elimina el segundo archivo adjunto:

    mkvpropedit película.mkv --delete-attachment 2

Elimina todos las fuentes adjuntas por tipo MIME:

    mkvpropedit película.mkv --delete-attachment mime-type:application/x-truetype-font

# 7. Códigos de salida

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

- 0 -- Este código de salida significa que la modificación se ha realizado correctamente.

- 1 -- En este caso mkvpropedit(1) genera una salida con al menos una advertencia, pero 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. mkvpropedit(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.

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

Para una discusión en profundidad sobre como la suite de MkvToolNix manipula las conversiones de caracteres, la codificación entrada/salida y la codificación de la línea de comandos y consola, por favor consulte la sección llamada de igual manera en la pagina del manual para mkvmerge(1).

# 9. Variables de entorno

mkvpropedit(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
--- | ---
MKVPROPEDIT_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.
MKVPROPEDIT_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.

# 10. Vea también

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

# 11. WWW

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