mkvpropedit -- Modifica les propietats dels fitxers Matroska(tm) existents sense un multiplexat complet

# 1. Sinopsis

mkvpropedit opcions {nom_fitxer_origen} {accions}

# 2. Descripció

Aquest programa analitza un fitxer Matroska(tm) i modifica algunes de les seves propietats. Després escriu aquestes modificacions en el fitxer existent. Entre les propietats que es poden modificar es troben els elements sobre la informació del segment (p. ex., el títol), les capçaleres de les pistes (p. ex., el codi de l'idioma, l'etiqueta «Pista predeterminada» o el nom).

Opcions:

Option | Description
--- | ---
-l, --list-property-names | Llista tots els noms de propietat coneguts i editables, el seu tipus (cadena, enter, booleà, etc.) i una petita descripció. El programa després sortirà. Per tant, el paràmetre nom_fitxer_origen no té per què subministrar-se.
-p, --parse-mode mode | Estableix el mode d'anàlisi. El paràmetre «mode» pot ser «fast» (ràpida, el qual és el predeterminat) o «full» (completa). El mode «fast» no analitzarà tot el fitxer, però emprarà els elements meta de cerca per a localitzar els elements requerits d'un fitxer d'origen. En el 99% dels casos n'hi haurà prou. No obstant això, per als fitxers que no contenen elements meta de cerca o que estan malmesos, l'usuari hauria d'emprar el mode d'anàlisi «full». L'anàlisi completa d'un fitxer pot trigar alguns minuts, mentre que una anàlisi ràpida només prendrà alguns segons.

Accions que tenen a veure amb les propietats d'informació de la pista i del segment:

Option | Description
--- | ---
-e, --edit selector | Estableix la secció del fitxer Matroska(tm) (informació del segment o una certa capçalera d'una pista) sobre la qual se centraran les següents accions: add (afegir), set (establir) i delete (suprimir). Aquesta opció es pot emprar múltiples vegades de manera que es pot modificar més d'un element alhora. De manera predeterminada, el mkvpropedit(1) editarà la secció d'informació del segment. Vegeu la secció sobre els selectors per a l'edició, per a una completa descripció de la sintaxi.
-a, --add nom=valor | Afegeix una propietat nom amb el contingut de valor. Aquesta propietat serà afegida fins i tot si ja existeix. Cal tenir en compte que la majoria de les propietats són úniques i només es troben una vegada.
-s, --set nom=valor | Estableix totes les ocurrències de la propietat nom amb el contingut de valor. Si no existeix dita propietat, llavors serà afegida.
-d, --delete nom | Suprimeix totes les ocurrències de la propietat nom. Cal tenir en compte que algunes propietats són requerides i no es poden suprimir.

Accions que tenen a veure amb les etiquetes i capítols:

Option | Description
--- | ---
-t, --tags selector:nom_fitxer | Afegeix o substitueix les etiquetes al nom_fitxer o l'elimina si està buit. El mkvpropedit(1) llegirà els mateixos formats d'etiquetes en XML que pugui llegir el mkvmerge(1). El selector serà una de les paraules all, global o track. Per a all, el mkvpropedit(1) substituirà o eliminarà totes les etiquetes en un fitxer. Amb global només se substituiran o eliminaran les etiquetes globals. Amb track, el mkvpropedit(1) substituirà les etiquetes d'una pista específica. A més, les etiquetes llegides des de nom_fitxer seran assignades a la mateixa pista. La pista s'especifica de la mateixa manera que amb els selectors per a l'edició (vegeu a continuació), p. ex., --tags track:a1:etiquetes_d_àudio_noves.xml.
--add-track-statistics-tags | Calcula les estadístiques per a totes les pistes en un fitxer i hi afegeix etiquetes d'estadístiques noves. Si el fitxer ja conté dites etiquetes, llavors seran actualitzades.
--delete-track-statistics-tags | Suprimeix totes les etiquetes d'estadístiques existents a la pista d'un fitxer. Si el fitxer no conté etiquetes d'estadístiques de la pista, llavors no serà modificat.
-c, --chapters nom_fitxer | Afegeix o substitueix els capítols al nom_fitxer o els elimina si està buit. El mkvpropedit(1) llegirà els mateixos formats de capítols senzills i en XML que pugui llegir el mkvmerge(1).

Accions per a manejar els adjunts:

Option | Description
--- | ---
--add-attachment nom_fitxer | Afegeix un adjunt nou des de nom_fitxer. Si s'ha emprat abans l'opció --attachment-name, llavors s'emprarà el seu valor com a nom de l'adjunt nou. D'altra manera, s'obtindrà a partir del nom_fitxer. Si s'ha emprat abans l'opció --attachment-mime-type, llavors s'emprarà el seu valor com a tipus MIME del nou adjunt. D'altra manera, es detectarà automàticament del contingut de nom_fitxer. Si s'ha emprat abans l'opció --attachment-description, llavors s'emprarà el seu valor com a descripció del nou adjunt. D'altra manera, no s'establirà cap descripció. Si s'ha emprat abans l'opció --attachment-uid, llavors s'emprarà el seu valor com a UID del nou adjunt. D'altra manera, es generarà automàticament un UID aleatori.
--replace-attachment selector:nom_fitxer | Substitueix un o més adjunts que coincideixin amb el selector del nom_fitxer. Si coincideix més d'un adjunt, llavors tot el seu contingut serà substituït per al contingut del nom_fitxer. El selector pot tenir una d'entre quatre formes. Estan explicades a continuació, a la secció els selectors per a l'adjunt. Si s'ha emprat abans l'opció --attachment-name, llavors s'emprarà el seu valor com a nom per a cada adjunt modificat. D'altra manera, no es canviarà cap nom. Si s'ha emprat abans l'opció --attachment-mime-type, llavors s'emprarà el seu valor com a tipus MIME per a cada adjunt modificat. D'altra manera, no es canviarà cap tipus MIME. Si s'ha emprat abans l'opció --attachment-description, llavors s'emprarà el seu valor com a descripció per a cada adjunt modificat. D'altra manera, no es canviarà cap descripció. Si s'ha emprat abans l'opció --attachment-uid, llavors s'emprarà el seu valor com a UID per a cada adjunt modificat. D'altra manera, no es canviarà cap UID.
--update-attachment selector | Estableix les propietats d'un o més adjunts que coincideixen amb el selector. Si coincideix més d'un adjunt, llavors s'actualitzaran totes les seves propietats. El selector pot tenir una d'entre quatre formes. Estan explicades a continuació, a la secció els selectors per a l'adjunt. Si s'ha emprat abans l'opció --attachment-name, llavors s'emprarà el seu valor com a nom per a cada adjunt modificat. D'altra manera, no es canviarà cap nom. Si s'ha emprat abans l'opció --attachment-mime-type, llavors s'emprarà el seu valor com a tipus MIME per a cada adjunt modificat. D'altra manera, no es canviarà cap tipus MIME. Si s'ha emprat abans l'opció --attachment-description, llavors s'emprarà el seu valor com a descripció per a cada adjunt modificat. D'altra manera, no es canviarà cap descripció. Si s'ha emprat abans l'opció --attachment-uid, llavors s'emprarà el seu valor com a UID per a cada adjunt modificat. D'altra manera, no es canviarà cap UID.
--delete-attachment selector | Suprimeix un o més adjunts que coincideixin amb el selector. El selector pot tenir una d'entre quatre formes. Estan explicades a continuació, a la secció els selectors per a l'adjunt.

Opcions per a les accions en els adjunts:

Option | Description
--- | ---
--attachment-name nom | Estableix el nom a emprar per a les opcions --add-attachment o --replace-attachment.
--attachment-mime-type tipus_MIME | Estableix el tipus MIME a emprar per a les opcions --add-attachment o --replace-attachment.
--attachment-description descripció | Estableix la descripció a emprar per a les opcions --add-attachment o --replace-attachment.
--enable-legacy-font-mime-types | Permet l'ús de tipus MIME heretats per a determinats tipus d'adjunts de lletra tipogràfica. Per exemple, s'usarà «application/x-truetype-font» per a les lletres TrueType en lloc de «fonts/ttf». Això afecta tant a afegir adjunts nous aixi com a substituir els existents, però només si no s'especifica el tipus MIME nou. No es canviaran els altres adjunts existents. Els tipus MIME afectats són «font/sfnt», «font/ttf» i «font/collection» els quals seran tots assignats a «application/x-truetype-fonts» i «font/otf» el qual serà assignat a «application/vnd.ms-opentype».

Altres opcions:

Option | Description
--- | ---
--disable-language-ietf | Normalment, quan l'usuari sol·licita canvis en la propietat de la capçalera «Language» de la pista, el mkvpropedit(1) aplicarà el mateix canvi a l'element nou de la capçalera LanguageIETF de la pista a més de l'element Language heretat. Si s'utilitza aquesta opció, el canvi només s'aplicarà a l'element Language heretat. Aquesta opció no afectarà els canvis sol·licitats mitjançant la propietat de la capçalera «language-IETF» de la pista.
--normalize-language-ietf mode | Permet normalitzar totes les etiquetes d'idioma BCP 47 de la IETF a la seva forma canònica amb el mode «canonical», a la seva forma d'idioma estès amb el mode «extLang» o la desactiva amb el mode «off». Per defecte, s'aplicarà la normalització a la forma canònica. En la forma canònica, totes les subetiquetes per a les quals existeixen els valors preferits se substitueixen per aquells valors preferits. Això es converteix, p. ex. «zh-yue-jyutping» a «yue-jyutping» o «fr-FX» a «fr-FR». Per a la forma de les subetiquetes d'idioma estès, primer es construeix la forma canònica. Després, tots els idiomes principals per als quals existeix una subetiqueta d'idioma estès se substitueixen per aquesta subetiqueta i el seu prefix d'idioma estès. Això converteix, p. ex. «yue-jyutping» torna a «zh-yue-jyutping», però no té cap efecte sobre «fr-FR», ja que «fr» no és una subetiqueta d'idioma estès. Aquesta normalització només s'aplica als elements que realment es modifiquen: Quan editeu les capçaleres de les pistes, només es veuran afectats els elements d'idioma de les pistes que s'estableixen mitjançant especificacions d'edició. Els idiomes de les pistes que no s'editen no es canviaran. L'edició d'una pista, però configurant només propietats diferents de l'idioma, tampoc no afectarà l'idioma. Quan editeu els capítols, es veuran afectats tots els elements d'idioma de tots els elements del capítol, ja que els capítols existents sempre se substitueixen completament. Quan editeu les etiquetes, només es veuran afectats els elements d'idioma de les etiquetes que realment se substitueixen. Per exemple, quan substituïu les etiquetes globals, les etiquetes de pista existents no es veuran afectades. La millor manera de normalitzar totes les etiquetes d'idioma existents en un fitxer és fer un multiplexat amb mkvmerge(1) i establir la seva opció «--normalize-language-ietf» al mode desitjat.
--command-line-charset joc_de_caràcters | Estableix el joc de caràcters al qual convertir les cadenes indicades des de la línia d'ordres. De manera predeterminada serà el joc de caràcters donat per la configuració regional actual del sistema.
--output-charset joc_de_caràcters | Estableix el joc de caràcters al qual convertir les cadenes de la sortida. De manera predeterminada serà el joc de caràcters donat per la configuració regional actual del sistema.
-r, --redirect-output nom_fitxer | Escriu tots els missatges al nom_fitxer en lloc de la consola. Si bé això es pot fer fàcilment amb la redirecció de la sortida, hi ha casos en què cal aquesta opció: quan el terminal torna a interpretar la sortida abans d'escriure-la a un fitxer. Es respectarà el joc de caràcters establert amb --output-charset.
--ui-language codi | Força l'ús de les traduccions per al codi d'idioma (p. ex., «de_DE» per a les traduccions en alemany). Introduint «list» com a codi, es farà que el programa ofereixi a la sortida una llista de les traduccions disponibles.
--abort-on-warnings | Indica al programa que interrompi després d'emetre el primer avís. El codi de sortida del programa serà 1.
--debug tema | Activa la depuració per a una característica específica. Aquesta opció només és útil per als desenvolupadors.
--engage característica | Activa les característiques experimentals. Es pot sol·licitar una llista de les característiques disponibles amb mkvpropedit --engage list. Aquestes característiques no estan destinades a ser emprades en situacions normals.
--gui-mode | Activa el mode IGU. En aquest mode, les línies surten amb un format especial que pot explicar-vos el que està succeint per tal de controlar la IGU. Aquests missatges segueixen el format «#IGU#missatge». El missatge pot estar seguit per parells clau/valor com «#IGU#missatge#clau1=valor1#clau2=valor2…». Ni els missatges ni les claus seran traduïdes, sempre sortiran en anglès.
-v, --verbose | Serà detallat i mostrarà tots els elements importants del Matroska(tm) a mesura que es llegeixin.
-h, --help | Mostra la informació d'ús i surt.
-V, --version | Mostra la informació sobre la versió i surt.
@fitxer_d_opcions.json | Llegeix els arguments addicionals per a la línia d'ordres des del fitxer fitxer_d_opcions. Per a més informació sobre els formats admesos, vegeu la secció anomenada «Fitxers d'opcions» a la pàgina man del mkvmerge(1).

# 3. Selectors per a l'edició

L'opció --edit estableix la secció del fitxer Matroska(tm) (informació del segment o certes capçaleres d'una pista) sobre la qual se centraran les següents accions: add, set i delete. Aquestes seran vàlides fins que es trobi la següent opció --edit. L'argument per a aquesta opció s'anomena selector per a l'edició.

De manera predeterminada, el mkvpropedit(1) editarà la secció d'informació del segment.

## 3.1. Informació del segment

La informació del segment es pot seleccionar amb una d'aquestes tres paraules: «info», «segment_info» o «segmentinfo». Aquestes contenen propietats com el títol o l'UID del segment.

## 3.2. Capçaleres de la pista

Les capçaleres de la pista es poden seleccionar amb un selector lleugerament més complex. Totes les variants comencen amb «track:». Les propietats de la capçalera de la pista inclouen elements com el codi d'idioma, l'etiqueta de «pista predeterminada» o el nom de la pista.

Option | Description
--- | ---
track:n | Si el paràmetre n és un número, llavors se seleccionarà la pista amb el número n. L'ordre de les pistes és el mateix que surt amb l'opció --identify del mkvmerge(1). La numeració comença per l'1.
track:t n | Si el paràmetre comença amb un únic caràcter t seguit per n, llavors se seleccionarà la pista número n d'un tipus de pista específica. El paràmetre del tipus de pista t, haurà de ser un d'aquests quatre caràcters: «a» per a una pista d'àudio, «b» per a una pista de botó, «s» per a una pista de subtítols i «v» per a una pista de vídeo. L'ordre de les pistes és el mateix que surt amb l'opció --identify del mkvmerge(1). La numeració comença per l'1.
track:=UID | Si el paràmetre comença amb un signe «=» seguit per un número UID, llavors se seleccionarà la pista on l'element UID de la pista sigui igual que aquest UID. L'UID de la pista es pot obtenir amb el mkvinfo(1).
track:@número | Si el paràmetre comença amb un signe «@» seguit per un número, llavors se seleccionarà la pista on l'element número de la pista sigui igual que aquest número. El número de la pista es pot obtenir amb el mkvinfo(1).

## 3.3. Notes

A causa de la naturalesa dels selectors per a l'edició de la pista, és possible que realment alguns selectors coincideixin amb les mateixes capçaleres de les pistes. En molts casos, totes les accions d'aquests selectors per a l'edició seran combinades i executades en l'ordre en el qual es van indicar a la línia d'ordres.

# 4. Selectors per a l'adjunt

Un selector per a l'adjunt s'empra amb les dues accions --replace-attachment i --delete-attachment. Aquest pot tenir una de les quatre formes següents:

1. Selecció mitjançant l'ID de l'adjunt. D'aquesta forma, el selector és un senzill número, l'ID de l'adjunt tal com surt amb l'ordre d'identificació del mkvmerge(1).

2. Selecció mitjançant l'UID de l'adjunt (ID únic). D'aquesta forma, el selector és el signe = seguit per un número, l'ID únic de l'adjunt tal com surt amb l'ordre d'identificació del mkvmerge(1).

3. Selecció mitjançant el nom de l'adjunt. D'aquesta forma el selector és la paraula literal name: seguida pel nom de l'adjunt existent. Si aquest selector és emprat amb --replace-attachment, llavors per a que pugui coincidir s'haurà d'escapar el signe dels dos punts amb \c.

4. Selecció mitjançant el tipus MIME de l'adjunt. D'aquesta forma el selector és la paraula literal mime-type: seguida pel tipus MIME de l'adjunt existent. Si aquest selector és emprat amb --replace-attachment, llavors per a que pugui coincidir s'haurà d'escapar el signe dels dos punts amb \c.

# 5. Gestió de l'idioma

El mkvpropedit(1) majoritàriament tracta de fer el correcte de manera predeterminada. Per tant, els canvis a la propietat language faran que el mkvpropedit(1) apliqui el mateix canvi tant a l'element nou «LanguageIETF» com a l'element antic «Language» de manera similar a com el mkvmerge(1) aplica l'idioma a ambdós elements. Per exemple, quan utilitzeu mkvpropedit peli.mkv --edit track:2 --set language=zh-TW, l'element «LanguageIETF» s'establirà a zh-TW i l'element antic «Language» a chi.

A més, hi ha una propietat nova de capçalera de pista anomenada language-ietf que es pot establir o eliminar. Els canvis en aquesta propietat només s'aplicaran a l'element nou de capçalera de pista «LanguageIETF». Un avís és que l'element antic de capçalera de pista «Language» és un element obligatori a Matroska -el qual significa que fins i tot si no és present en el fitxer, encara tindrà un valor implícit-. Quan l'usuari només estableix la propietat language-ietf, però no la propietat language, per tant, el mkvpropedit(1) afegirà l'element antic «Language» en certs casos i l'establirà a und (significa «indeterminat»), ja que l'usuari no ha especificat un valor.

Quan es llegeixen capítols XML o fitxers d'etiquetes, el mkvpropedit(1) funcionarà com ho fa el mkvmerge(1).

La creació d'elements nous es pot desactivar completament amb l'opció de la línia d'ordres «--disable-language-ietf», la qual opera sobre els tres elements nous.

Podeu triar el mètode de normalització aplicat a les subetiquetes d'idioma estès amb el paràmetre --normalize-language-ietf.

# 6. Exemples

El següent exemple edita un fitxer anomenat «peli.mkv». Estableix el títol del segment i modifica el codi d'idioma d'una pista d'àudio i d'una pista de subtítols. Cal tenir en compte que aquest exemple es pot escurçar llevant la primera opció --edit, ja que editar l'element d'informació del segment està inclòs de manera predeterminada per a totes les opcions trobades abans de la primera opció --edit.

    $ mkvpropedit peli.mkv --edit info --set "title=La pel·lícula" --edit track:a1 --set language=cat --edit track:a2 --set language=ita

El segon exemple elimina l'«etiqueta de pista predeterminada» de la primera pista de subtítols i l'estableix per a la segona. Cal tenir present que el mkvpropedit(1), a diferència del mkvmerge(1), no estableix automàticament a «0» el valor de l'«etiqueta de pista predeterminada» quan una pista diferent s'ha establert a «1».

    $ mkvpropedit peli.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1

Substituir les etiquetes per a la segona pista de subtítols en un fitxer es veu així:

    $ mkvpropedit peli.mkv --tags track:s2:etiquetes_subtítols_noves.xml

Eliminar totes les etiquetes requereix ometre el nom del fitxer d'etiquetes:

    $ mkvpropedit peli.mkv --tags all:

Substituir els capítols en un fitxer es veu així:

    $ mkvpropedit peli.mkv --chapters capítols_nous.xml

Eliminar tots els capítols requereix ometre el nom del fitxer:

    $ mkvpropedit peli.mkv --chapters ''

Afegir un fitxer de lletra tipogràfica (Arial.ttf) com un adjunt:

    $ mkvpropedit peli.mkv --add-attachment Arial.ttf

Afegir un fitxer de lletra tipogràfica (89719823.ttf) com un adjunt i proporcionar alguna informació de com és aquesta lletra:

    $ mkvpropedit peli.mkv --attachment-name Arial.ttf --attachment-description 'La lletra Arial com a lletra TrueType' --attachment-mime-type application/x-truetype-font --add-attachment 89719823.ttf

Substituir un fitxer de lletra tipogràfica adjuntat (Comic.ttf) per un altre (Arial.ttf):

    $ mkvpropedit peli.mkv --attachment-name Arial.ttf --attachment-description 'La lletra Arial com a lletra TrueType' --replace-attachment name:Comic.ttf:Arial.ttf

Suprimir el segon fitxer adjuntat, sigui el que sigui:

    $ mkvpropedit peli.mkv --delete-attachment 2

Suprimir totes les lletres tipogràfiques adjuntades segons el tipus MIME:

    $ mkvpropedit peli.mkv --delete-attachment mime-type:application/x-truetype-font

# 7. Codis de sortida

El mkvpropedit(1) sortirà amb un d'aquests tres codis de sortida:

- 0 -- Aquest codi de sortida significa que la modificació s'ha realitzat correctament.

- 1 -- En aquest cas, el mkvpropedit(1) ha generat una sortida amb almenys un avís, però la modificació ha continuat. Un avís és prefixat amb el text «Avís:». Depenent de les qüestions involucrades, els fitxers resultants seran o no correctes. L'usuari serà instat a revisar tant els avisos com els fitxers.

- 2 -- Aquest codi de sortida s'empra després de produir-se un error. El mkvpropedit(1) interromprà el procés just després de mostrar el missatge d'error. L'interval dels missatges d'error va des d'arguments incorrectes a la línia d'ordres fins a errors de lectura/escriptura en fitxers malmesos.

# 8. Conversió per a fitxers de text i jocs de caràcters

Per a un debat en profunditat sobre com manipula la suite MKVToolNix les conversions entre els jocs de caràcters, codifica l'entrada/sortida, codifica la línia d'ordres i codifica a la consola, si us plau, vegeu la secció anomenada de la mateixa manera a la pàgina man del mkvmerge(1).

# 9. Variables d'entorn

El mkvpropedit(1) empra les variables predeterminades que es determinen a la configuració regional del sistema (p. ex., LANG i la família LC_*). Variables addicionals:

Option | Description
--- | ---
MKVPROPEDIT_DEBUG, MKVTOOLNIX_DEBUG i la seva forma abreujada MTX_DEBUG | El contingut es tractarà com si s'hagués passat l'opció --debug.
MKVPROPEDIT_ENGAGE, MKVTOOLNIX_ENGAGE i la seva forma abreujada MTX_ENGAGE | El contingut es tractarà com si s'hagués passat l'opció --engage.

# 10. Vegeu també

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

# 11. WWW

Sempre trobareu l'última versió a la pàgina de les MKVToolNix.