MKVMERGE(1) | Ordres dusuari | MKVMERGE(1) |
mkvmerge - Fusiona fluxos multimèdia dins d'un fitxer Matroska
mkvmerge [opcions_globals] {-o sortida} [opcions_1] {fitxer_1} [[opcions_2] {fitxer_2}] [@fitxer_d_opcions.json]
Aquest programa pren l'entrada des de diversos fitxers multimèdia d'entrada i uneix els seus fluxos (tots o només els seleccionats) en un fitxer Matroska; vegeu el lloc web del Matroska[1].
L'ordre de les opcions a la línia d'ordres és important. Si us plau, si sou novell emprant aquest programa, llegiu la secció «L'ordre de les opcions».
-v, --verbose
-q, --quiet
-o, --output nom_fitxer
-w, --webm
Per a capítols i etiquetes, només es permet un subconjunt d'elements. El «mkvmerge(1)» eliminarà automàticament tots els elements no permesos per l'especificació.
--title títol
--default-language codi_idioma
El codi d'idioma per omissió és «und» per a «undefined» (sense definir).
--segmentinfo nom_fitxer.xml
Per a més detalls, vegeu més endavant la secció sobre els fitxers d'informació del segment en XML.
--segment-uid SID1,SID2...
Si el SID comença amb el signe =, llavors la resta s'interpretarà com el nom d'un fitxer Matroska, es llegirà i emprarà l'UID del segment.
Cada fitxer creat conté un segment, i cada segment té un UID del segment. Si s'especifiquen més UID que segments, llavors els UID que sobrin seran ignorats. Si s'especifiquen menys UID que segments, llavors es crearan de manera aleatòria els UID que faltin.
--chapter-language codi_idioma
Aquesta opció es pot emprar tant per a senzills fitxers de capítols, com per a fitxers d'origen que continguin capítols sense informació sobre l'idioma, p. ex., fitxers MP4 i OGM.
L'idioma establert amb aquesta opció també s'usarà quan es generin els capítols amb l'opció --generate-chapters.
--chapter-charset joc_de_caràcters
Aquest ajustament també s'aplica als capítols que es copien des de certs tipus de contenidors, p. ex., fitxers Ogg/OGM i MP4. Per a més detalls, vegeu més endavant la secció sobre els capítols.
--chapter-sync d[,o[/p]]
o/p: ajusta els codis de temps en o/p, per a fixar desfasaments lineals. Si s'omet, p per omissió serà 1. Tant o com p poden ser nombres decimals.
Per omissió: no hi haurà cap correcció de sincronització manual (el qual és el mateix que d = 0 i o/p = 1.0).
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
--generate-chapters mode
Aquest mode també funciona amb els modes de divisió 'parts:' i 'parts-frames:'. Per a aquests modes, es generarà un capítol per a cada interval de la marca de temps adjunta (aquestes marques del temps d'inici tenen el prefix '+').
Exemple: --generate-chapters interval:45s
Els noms per als capítols nous es controlen mitjançant l'opció --generate-chapters-name-template. L'idioma s'estableix amb --chapter-language, el qual haurà d'anar abans que --generate-chapters.
--generate-chapters-name-template plantilla
Hi ha diverses variables que es poden usar a la plantilla que seran substituïdes amb els valors reals quan es generi un capítol. La cadena «<NUM>» serà substituïda pel número de capítol. La cadena «<START>» serà substituïda pel codi de temps d'inici del capítol.
Les cadenes «<FILE_NAME>» i «<FILE_NAME_WITH_EXT>», que només funcionen quan es generen capítols per a fitxers adjunts. Seran, respectivament substituïdes pel nom del fitxer adjuntat, amb la seva extensió i sense. Recordeu que només s'inseriran el nom base del fitxer i l'extensió, no el seu directori o components de la unitat.
Podeu especificar un nombre mínim de llocs per al número de capítol amb «<NUM:places>», p. ex. «<NUM:3>». El nombre resultant serà emplenat amb zeros a l'esquerra si el nombre de posicions és menor que l'especificat.
Podeu controlar el format emprat per al codi de temps d'inici amb <START:format>. Si no s'indica cap, el format predeterminat és «%H:%M:%S». Els codis de format vàlids són:
--cue-chapter-name-format format
Si no s'indica aquesta opció, llavors el mkvmerge(1) emprarà per omissió el format «%p - %t» (l'artista, seguit per un espai, un guió, un altre espai i el títol).
Si s'indica el format, llavors es copiarà tot tal com està excepte els següents meta caràcters que seran substituïts així:
--chapters nom_fitxer
--global-tags nom_fitxer
--track-order FID1:TID1,FID2:TID2...
--cluster-length especificació
Si no s'empra cap unitat, llavors el mkvmerge(1) tindrà com a màxim n blocs d'informació a cada clúster. El nombre màxim de blocs és 65535.
Si el número d té el sufix «ms», llavors el mkvmerge(1) posarà com a màxim d mil⋅lisegons d'informació de dades en cada clúster. El valor mínim per a d és «100ms», i el màxim és «32000ms».
Per omissió, el mkvmerge(1) posarà com a màxim 65535 blocs de dades i 5000ms d'informació de dades a cada clúster.
Els programes que intenten trobar un cert fotograma només poden cercar directament a un clúster i posteriorment llegir tot el clúster. Per tant, el fet de crear clústers molt grans podria comportar una cerca lenta i poc precisa.
--clusters-in-meta-seek
--timestamp-scale factor
Normalment, el mkvmerge(1) emprarà el valor 1000000, el qual vol dir que els codis de temps i durades tindran una precisió d'1 ms. Per als fitxers que no continguin una pista de vídeo però sí almenys una d'àudio, el mkvmerge(1) triarà automàticament un factor d'escala per als codis de temps, de manera tots els codis de temps i durades tindran una precisió d'una mostra d'àudio. Això causarà una major sobrecàrrega però permetrà que la cerca i extracció siguin més precises.
Si s'usa el valor especial -1, llavors el mkvmerge(1) emprarà la precisió de la mostra, encara que hi hagi una pista de vídeo.
--enable-durations
--no-cues
--no-date
--disable-lacing
--disable-track-statistics-tags
El fet d'habilitar aquesta opció impedeix que el mkvmerge(1) escrigui i editi les etiquetes existents que tinguin els mateixos noms.
--disable-language-ietf
--split especificació
Fins ara, el mkvmerge(1) admet quatre modes diferents.
Sintaxi: --split [size:]d[k|m|g]
Exemples: --split size:700m o --split 150000000
El paràmetre d pot acabar amb «k», «m» o «g» per a indicar que la mida és en KB, MB o GB respectivament. D'altra manera, s'assumirà que la mida és en bytes. Una vegada el fitxer de sortida actual abasti la mida límit, començarà la creació d'un altre fitxer.
El prefix «size:» es pot ometre per motius de compatibilitat.
Sintaxi: --split [duration:]HH:MM:SS.nnnnnnnnn|ds
Exemples: --split duration:00:60:00.000 o --split 3600s
El paràmetre pot tenir la forma HH:MM:SS.nnnnnnnnn per a especificar la durada amb una precisió de nanosegons, o pot ser un número d seguit per la lletra «s» per a una durada en segons. HH és el número de les hores, MM és el dels minuts, SS és el dels segons i nnnnnnnnn és el dels nanosegons. Tant el número de les hores com el dels nanosegons es poden ometre. Hi ha fins a nou dígits després del punt decimal. Una vegada el fitxer de sortida actual abasti la durada límit, començarà la creació d'un altre fitxer.
El prefix «duration:» es pot ometre per motius de compatibilitat.
Sintaxi: --split timestamps:A[,B[,C...]]
Exemple: --split timestamps:00:45:00.000,01:20:00.250,6300s
Els paràmetres A, B, C, etc. poden tenir el mateix format que l'emprat per a la durada (vegeu més amunt). La llista dels codis de temps està separada per comes. Una vegada el flux d'entrada abasti el punt de divisió per al codi de temps actual, es crearà un fitxer nou. Llavors s'emparà el següent punt de divisió especificat a la llista.
El prefix «timestamps:» no es pot ometre.
Sintaxi: --split parts:inici_1-final_1[,[+]inici_2-final_2[,[+]inici_3-final_3...]]
Exemples:
El mode parts li indica al mkvmerge(1) que mantingui certs intervals de codis de temps mentre es descarten altres. Els intervals a mantenir s'han de llistar després de la paraula clau parts: i s'han de separar amb comes. Un interval, en si mateix, consisteix d'un inici i un final, en el mateix format i altres variacions que accepta --split (p. ex., tant 00:01:20 com 80s es refereixen al mateix codi de temps).
Si s'omet un codi de temps d'inici, llavors per omissió s'emprarà el codi de temps final de l'interval anterior. Si no hi ha un interval anterior, llavors per omissió s'emprarà el d'inici del fitxer (vegeu l'exemple 3).
Si s'omet el codi de temps final, llavors per omissió es prendrà el valor final dels fitxers d'origen. El qual bàsicament li indicarà al mkvmerge(1) que mantingui la resta (vegeu l'exemple 3).
Normalment, cada interval serà escrit a un fitxer nou. Això es pot canviar de manera que els intervals consecutius s'escriguin en el mateix fitxer. Per a fer-ho, l'usuari haurà d'assignar el prefix + al codi de temps d'inici. Això li indicarà al mkvmerge(1) que no creï un fitxer nou i en comptes d'això, que annexi l'interval després de l'últim interval escrit al fitxer. Els codis de temps seran ajustats de manera que no hi hagi discontinuïtats en el fitxer de sortida, fins i tot si n'hi havia una entre dos intervals al fitxer d'entrada.
En l'exemple 1, el mkvmerge(1) crearà dos fitxers. El primer abastarà el contingut a partir de 00:01:20 fins a 00:02:45. El segon abastarà el contingut a partir de 00:05:50 fins a 00:10:30.
En l'exemple 2, el mkvmerge(1) crearà un únic fitxer. Aquest abastarà ambdós, el contingut a partir de 00:01:20 fins a 00:02:45 i el contingut a partir de 00:05:50 fins a 00:10:30.
En l'exemple 3, el mkvmerge(1) crearà dos fitxers. El primer abastarà el contingut des del començament dels fitxers d'origen fins a 00:02:45. El segon abastarà el contingut a partir de 00:05:50 fins al final dels fitxers d'origen.
Sintaxi: --split parts-frames:inici_1-final_1[,[+]inici_2-final_2[,[+]inici_3-final_3...]]
Exemples:
El mode parts-frames li indica al mkvmerge(1) que mantingui certs intervals numèrics de fotogrames/camps, mentre es descarten altres. Els intervals a mantenir s'han d'especificar després de la paraula clau parts-frames: i separar-los amb comes. Un interval consisteix en un número de fotograma/camp d'inici i final. La numeració comença per l'1.
Si s'omet un número d'inici, llavors per omissió s'emprarà el número final de l'interval anterior. Si no hi ha un interval anterior, llavors per omissió s'emprarà el d'inici del fitxer (vegeu l'exemple 3).
Si s'omet el número final, llavors per omissió es prendrà el valor final dels fitxers d'origen. El qual bàsicament li indicarà al mkvmerge(1) que mantingui la resta (vegeu l'exemple 3).
Normalment, cada interval serà escrit a un fitxer nou. Això es pot canviar de manera que els intervals consecutius s'escriguin en el mateix fitxer. Per a fer-ho, l'usuari haurà d'assignar el prefix + al número d'inici. Això li indicarà al mkvmerge(1) que no creï un fitxer nou i en comptes d'això, que annexi l'interval després de l'últim interval escrit al fitxer. Els codis de temps seran ajustats de manera que no hi hagi discontinuïtats en el fitxer de sortida, fins i tot si n'hi havia una entre dos intervals al fitxer d'entrada.
En l'exemple 2, el mkvmerge(1) crearà un únic fitxer. Aquest abastarà ambdós, el contingut a partir del 733 fins al 912 i el contingut a partir del 1592 fins al 2730.
En l'exemple 3, el mkvmerge(1) crearà dos fitxers. El primer abastarà el contingut des del començament dels fitxers d'origen fins al 430. El segon abastarà el contingut a partir del 2512 fins al final dels fitxers d'origen.
Aquest mode només considerarà la primera pista de vídeo que es genera. Si no hi ha cap pista de vídeo a la sortida, no es produirà cap divisió.
Sintaxi: --split frames:A[,B[,C...]]
Exemple: --split frames:120,237,891
Els paràmetres A, B, C, etc. hauran de ser tots sencers positius. La numeració comença per l'1. La llista de números de fotograma/camp estarà separada per comes. Una vegada el flux d'entrada hagi abastat el número de fotograma/camp del punt de tall actual, es crearà un fitxer nou. Després s'emprarà el següent punt de tall indicat a la llista.
El prefix «frames:» no es pot ometre.
Aquest mode només considerarà la primera pista de vídeo que es genera. Si no hi ha cap pista de vídeo a la sortida, no es produirà cap divisió.
Sintaxi: --split chapters:all o --split chapters:A[,B[,C...]]
Exemple: --split chapters:5,8
Els paràmetres A, B, C, etc. hauran de ser tots sencers positius. La numeració comença per l'1. La llista de capítols estarà separada per comes. La divisió succeirà just abans del primer fotograma clau on el codi de temps sigui igual o major que el codi de temps d'inici per als capítols dels números llistats. Un capítol que comença al 0 s mai es tindrà en compte per a la divisió i serà omès silenciosament.
La paraula clau «all» es pot emprar en lloc d'una llista manual de tots els números de capítols.
El prefix «chapters:» no es pot ometre.
En aquest mode de divisió, el nom del fitxer de sortida serà tractat de manera diferent que amb el funcionament normal. Pot contenir un printf com l'expressió «%d», incloent-hi una amplada de camp opcional, p. ex., «%02d». Si es fa després del número del fitxer actual, serà formatat adequadament i inserit en aquest punt del nom del fitxer. Si no hi ha aquest patró, llavors s'assumirà «-%03d» com a patró just abans de l'extensió del fitxer: «-o sortida.mkv» resultaria en «sortida-001.mkv» i així en endavant. Si no hi ha extensió, llavors s'annexarà «-%03d» al nom.
Un altre possible patró és «%c», el qual serà substituït pel nom del primer capítol en el fitxer. Recordeu que quan es troba present «%c», el patró «-%03d» no s'afegirà automàticament.
--link
--link-to-previous UID_segment
Si el SID comença amb el signe =, llavors la resta s'interpretarà com el nom d'un fitxer Matroska, es llegirà i emprarà l'UID del segment.
--link-to-next UID_segment
Si el SID comença amb el signe =, llavors la resta s'interpretarà com el nom d'un fitxer Matroska, es llegirà i emprarà l'UID del segment.
--append-mode mode
Quan el mkvmerge annexa una pista (anomenada «pista2_1» d'ara endavant) des d'un segon fitxer (anomenat «fitxer_2») a una pista (anomenada «pista1_1») des del primer fitxer (anomenat «fitxer_1») llavors compensarà una quantitat en tots els codis de temps per a la «pista2_1». En el mode «file» aquesta quantitat serà el codi de temps més gran trobat en el «fitxer_1», fins i tot si aquest codi de temps provingués d'una pista diferent de «pista1_1». En el mode «track», la compensació serà el codi de temps més gran de la «pista1_1».
Malauradament, el mkvmerge(1) no pot detectar quin mode és més convenient emprar. Per tant, per omissió emprarà el mode «file». Aquest mode, en general funciona millor per a fitxers que es creen de manera independent els uns dels altres; p. ex., quan s'annexen fitxers AVI o MP4. El mode «track» podria funcionar millor per a orígens que essencialment només formen part d'un fitxer gran, p. ex., per a fitxers VOB i EVO.
Les pistes de subtítols sempre seran tractades com si estigués actiu el mode «file», fins i tot si el que està actiu és el mode «track».
--append-to SFID1:STID1:DFID1:DTID1[...]
Si s'omet aquesta opció, llavors s'emprarà un mapatge estàndard. Aquest, annexarà cada pista del fitxer actual a una pista del fitxer anterior amb el mateix ID de pista. Això permet annexar amb facilitat dos fitxers que havien estat dividits a partir d'una pel⋅lícula, si tenen el mateix nombre de pistes i ID de les pistes, amb l'ordre: mkvmerge -o sortida.mkv part1.mkv +part2.mkv.
+
$ mkvmerge -o complet.mkv fitxer_1.mkv + fitxer_2.mkv $ mkvmerge -o complet.mkv fitxer_1.mkv +fitxer_2.mkv
[ fitxer_1 fitxer_2 ]
Aquesta és una sintaxi alternativa a l'ús del caràcter «+» entre els noms de fitxer. Per tant, les dues ordres següents són equivalents:
$ mkvmerge -o tot.mkv fitxer_1.mkv + fitxer_2.mkv $ mkvmerge -o tot.mkv '[' fitxer_1.mkv fitxer_2.mkv ']'
=
El signe «=» també es pot posar davant del nom de fitxer següent. Per tant, les dues ordres següents són equivalents:
$ mkvmerge -o complet.mkv = fitxer_1.mkv $ mkvmerge -o complet.mkv =fitxer_1.mkv
( fitxer_1 fitxer_2 )
Per exemple, això es pot emprar amb fitxers VOB procedents d'un DVD o fluxos de transport MPEG. No es pot emprar si cada fitxer conté el seu propi conjunt de capçaleres, el qual sol ser el cas amb fitxers com AVI o MP4.
Posar el nom del fitxer entre parèntesis, també evitarà que el mkvmerge(1) cerqui fitxers addicionals amb el mateix nom base tal com s'ha descrit en l'opció =. Per tant, aquestes dues línies d'ordres són equivalents:
$ mkvmerge -o sortida.mkv = fitxer.mkv $ mkvmerge -o sortida.mkv '(' fitxer.mkv ')'
Hi ha diverses coses que s'han de tenir en compte:
--attachment-description descripció
--attachment-mime-type tipus_MIME
--attachment-name nom
--attach-file nom_fitxer, --attach-file-once nom_fitxer
Es pot emprar el mkvextract(1) per a extreure els fitxers adjunts des d'un fitxer Matroska.
-a, --audio-tracks [!]n,m...
En comptes dels ID de les pistes, també podeu especificar els codis d'idioma ISO 639-2. Això només funcionarà per a fitxers d'origen que proveeixen etiquetes d'idioma per a les seves pistes.
Per omissió: copiarà totes les pistes d'aquest tipus.
Si els ID estan prefixats amb el signe !, llavors s'indicarà el contrari: copiarà totes les pistes d'aquest tipus excepte les llistades després del signe !.
-d, --video-tracks [!]n,m...
En comptes dels ID de les pistes, també podeu especificar els codis d'idioma ISO 639-2. Això només funcionarà per a fitxers d'origen que proveeixen etiquetes d'idioma per a les seves pistes.
Si els ID estan prefixats amb el signe !, llavors s'indicarà el contrari: copiarà totes les pistes d'aquest tipus excepte les llistades després del signe !.
-s, --subtitle-tracks [!]n,m...
En comptes dels ID de les pistes, també podeu especificar els codis d'idioma ISO 639-2. Això només funcionarà per a fitxers d'origen que proveeixen etiquetes d'idioma per a les seves pistes.
Si els ID estan prefixats amb el signe !, llavors s'indicarà el contrari: copiarà totes les pistes d'aquest tipus excepte les llistades després del signe !.
-b, --button-tracks [!]n,m...
En comptes dels ID de les pistes, també podeu especificar els codis d'idioma ISO 639-2. Això només funcionarà per a fitxers d'origen que proveeixen etiquetes d'idioma per a les seves pistes.
Si els ID estan prefixats amb el signe !, llavors s'indicarà el contrari: copiarà totes les pistes d'aquest tipus excepte les llistades després del signe !.
--track-tags [!]n,m...
Si els ID estan prefixats amb el signe !, llavors s'indicarà el contrari: copia-ho tot, excepte els ID llistats després del signe !.
-m, --attachments [!]n[:all|first],m[:all|first]...
El comportament per omissió és copiar tots els adjunts a tots els fitxers de sortida.
Si els ID estan prefixats amb el signe !, llavors s'indicarà el contrari: copia-ho tot, excepte els ID llistats després del signe !.
-A, --no-audio
-D, --no-video
-S, --no-subtitles
-B, --no-buttons
-T, --no-track-tags
--no-chapters
-M, --no-attachments
--no-global-tags
-y, --sync TID:d[,o[/p]]
o/p: ajusta els codis de temps en o/p, per a fixar desfasaments lineals. Si s'omet, p per omissió serà 1. Tant o com p poden ser nombres decimals.
Per omissió: no hi haurà cap correcció de sincronització manual (el qual és el mateix que d = 0 i o/p = 1.0).
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
--cues TID:none|iframes|all
Per omissió és «iframes» per a les pistes de vídeo i subtítols, i «none» per a les pistes d'àudio. Vegeu també l'opció --no-cues, la qual inhibeix la creació de les entrades de l'índex malgrat emprar les opcions --cues.
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
--default-track TID[:booleà]
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
--forced-track TID[:booleà]
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
--blockadd TID:nivell
--track-name TID:nom
--language TID:idioma
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
-t, --tags TID:nom_fitxer
--aac-is-sbr TID[:0|1]
Si el fitxer d'origen és un fitxer Matroska, llavors hi hauria d'haver prou amb el CodecID per a detectar el SBR AAC. No obstant això, si el CodecID és erroni, llavors es pot emprar aquesta opció per a corregir-lo.
Si el mkvmerge detecta erròniament que un fitxer AAC està en SBR, llavors podeu afegir «:0» a l'ID de la pista.
--reduce-to-core TID
Actualment, aquesta opció només afecta a les pistes DTS. No obstant això, les pistes TrueHD que contenen un nucli AC-3 incrustat es presenten com a dues pistes independents de manera que l'usuari pugui seleccionar quina pista vol copiar. Per a les DTS això no funcionarà, ja que les extensions HD no es poden descodificar en si mateixes -a diferència de les dades TrueHD-.
--remove-dialog-normalization-gain TID
En l'actualitat només es veuen afectades per a aquesta opció les pistes AC-3, DTS i TrueHD.
--timestamps TID:nom_fitxer
--default-duration TID:x
Si la durada per omissió no és forçada, llavors el mkvmerge intentarà derivar la durada per omissió de la pista des del contenidor i/o flux de bits codificat per a certs tipus de pista, p. ex., AVC/H.264 o MPEG-2.
Aquesta opció també es pot emprar per a canviar els FPS de les pistes de vídeo sense haver d'emprar un fitxer extern per als codis de temps.
--fix-bitstream-timing-information TID[:0|1]
--nalu-size-length TID:n
--compression TID:n
El mètode de compressió «mpeg4_p2»/«mpeg4p2» és un mètode especial anomenat «eliminador de la capçalera» que només està disponible per a les pistes de vídeo MPEG4 part 2.
La compressió per omissió per a alguns tipus de subtítols és «zlib». Aquest mètode de compressió també és el més implementat per gairebé totes, si no totes, les aplicacions de reproducció. No es pot assegurar la implementació per a altres mètodes de compressió que no sigui «none».
-f, --fourcc TID:FourCC
--display-dimensions TID:amplada_x_alçada
Una altra manera d'especificar els valors és emprar l'opció --aspect-ratio o --aspect-ratio-factor (vegeu a continuació). Aquestes opcions són mútuament excloents.
--aspect-ratio TID:relació|amplada/alçada
Una altra manera d'especificar els valors és emprar l'opció --aspect-ratio-factor o --display-dimensions (vegeu anteriorment i a continuació). Aquestes opcions són mútuament excloents.
--aspect-ratio-factor TID:factor|n/d
Una altra manera d'especificar els valors és emprar l'opció --aspect-ratio o --display-dimensions (vegeu anteriorment). Aquestes opcions són mútuament excloents.
--cropping TID:esquerra,a_dalt,dreta,a_baix
--colour-matrix TID:n
Els valors vàlids i els seus significats són els següents:
0: GBR, 1: BT709, 2: sense especificar, 3: reservat, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 luminància no constant, 10: BT2020 luminància constant
--colour-bits-per-channel TID:n
--chroma-subsample TID:horit,vert
Exemple: Per al vídeo amb submostreig cromàtic 4:2:0, el paràmetre s'haurà d'establir a TID:1,1.
--cb-subsample TID:horit,vert
Exemple: Per al vídeo amb submostreig cromàtic 4:2:1, el paràmetre --chroma-subsample s'haurà d'establir a TID:1,0 i el submostreig Cb s'haurà d'establir a TID:1,0.
--chroma-siting TID:horit,vert
--colour-range TID:n
--colour-transfer-characteristics TID:n
Els valors vàlids i els seus significats són els següents:
0: reservat, 1: ITU-R BT.709, 2: sense especificar, 3: reservat, 4: interval de corba 2.2, 5: interval de corba 2.8, 6: SMPTE 170M, 7: SMPTE 240M, 8: lineal, 9: registre, 10: registre sqrt, 11: IEC 61966-2-4, 12: gamma de colors estesa ITU-R BT.1361, 13: IEC 61966-2-1, 14: ITU-R BT.2020 de 10 bits, 15: ITU-R BT.2020 de 12 bits, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--colour-primaries TID:n
Els valors vàlids i els seus significats són els següents:
0: reservat, 1: ITU-R BT.709, 2: sense especificar, 3: reservat, 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 llumins
--max-content-light TID:n
--max-frame-light TID:n
--chromaticity-coordinates TID:vermell-x,vermell-y,verd-x,verd-y,blau-x,blau-y
--white-colour-coordinates TID:x,y
--max-luminance TID:decimal
--min-luminance TID:decimal
--projection-type TID:mètode
--projection-private TID:dades
--projection-pose-yaw TID:decimal
--projection-pose-pitch TID:decimal
--projection-pose-roll TID:decimal
--field-order TID:n
0: progressiu; 1: entrellaçat del primer camp superior mostrat i del primer camp superior emmagatzemat; 2: ordre del camp sense determinar; 6: entrellaçat del primer camp inferior mostrat i del primer camp inferior emmagatzemat; 9: entrellaçat del primer camp inferior mostrat i del primer camp superior emmagatzemat; 14: entrellaçat del primer camp superior mostrat i del primer camp inferior emmagatzemat
--stereo-mode TID:n|paraula_clau
«mono», «side_by_side_left_first», «top_bottom_right_first», «top_bottom_left_first», «checkerboard_right_first», «checkerboard_left_first», «row_interleaved_right_first», «row_interleaved_left_first», «column_interleaved_right_first», «column_interleaved_left_first», «anaglyph_cyan_red», «side_by_side_right_first», «anaglyph_green_magenta», «both_eyes_laced_left_first», «both_eyes_laced_right_first».
--sub-charset TID:joc_de_caràcters
Aquesta opció es pot emprar múltiples vegades per a un fitxer d'entrada aplicant-la a diverses pistes, seleccionant els diferents ID de les pistes cada vegada.
-i, --identify nom_fitxer
El format emprat a la sortida es pot canviar amb l'opció --identification-format.
-J nom_fitxer
-F, --identification-format format
Aquest format no està destinat a ser analitzat. La sortida serà traduïda a l'idioma que empra el mkvmerge(1) (vegeu també l'opció --ui-language).
mkvmerge-identification-output-schema-v12.json[3]
Totes les versions de l'esquema JSON estan disponibles tant en línia com en els fitxers del codi font alliberat.
--probe-range-percentage percentage
Si les pistes són conegudes per estar presents, però no s'han trobat, llavors el percentatge per a provar es pot canviar amb aquesta opció. El mínim de 10 MB es troba incorporat i no es pot canviar.
-l, --list-types
--list-languages
--priority prioritat
La selecció de «lowest», farà que el mkvmerge(1) seleccioni una prioritat d'E/S ociosa, a més de la prioritat de procés més baixa possible.
--command-line-charset joc_de_caràcters
--output-charset joc_de_caràcters
-r, --redirect-output nom_fitxer
--flush-on-close
--ui-language codi
--abort-on-warnings
--deterministic llavor
La llavor podrà ser una cadena arbitrària i no haurà de ser un número.
El resultat de fitxers amb bytes idèntics només està garantit en les següents condicions:
L'ús d'altres versions del mkvmerge(1) o altres opcions de la línia d'ordres pot donar com a resultat el mateix fitxer amb bytes idèntics, però no es garanteix que ho faci.
--debug tema
--engage característica
--gui-mode
@fitxer_d_opcions.json
--capabilities
-h, --help
-V, --version
Per a cada fitxer, l'usuari pot seleccionar quines pistes haurà de prendre el mkvmerge(1). Totes s'emmagatzemaran en un fitxer especificat amb -o. Amb l'opció -l s'obtindrà una llista dels formats coneguts (i implementats).
L'ordre de les opcions a la línia d'ordres és important. Si us plau, si sou novell emprant aquest programa, llegiu la secció «L'ordre de les opcions».
L'ordre en el qual s'especifiquen les opcions és important per a algunes opcions. Les opcions es divideixen en dues categories:
Les opcions es processen d'esquerra a dreta. Si una opció apareix múltiples vegades en el mateix àmbit, s'emprarà l'última ocurrència. Per tant, en el següent exemple el títol s'establirà a «Qualsevulla»:
$ mkvmerge -o sortida.mkv --title 'Això i allò' entrada.avi --title 'Qualsevulla'
El següent exemple mostra com emprar dues vegades l'opció --language, és correcte perquè són emprades en àmbits diferents. Tot i que apliquen al mateix ID de pista, aquestes s'apliquen a fitxers d'entrada diferents i per tant tenen àmbits diferents:
$ mkvmerge -o sortida.mkv --language 0:fre francès.ogg --language 0:deu holandès.ogg
Suposem que teniu un fitxer anomenat meva_peli.avi i la pista d'àudio en un altre fitxer, p. ex., «meva_peli.wav». El primer que voleu és codificar l'àudio a OggVorbis:
$ oggenc -q4 -o meva_peli.ogg meva_peli.wav
Després d'uns minuts ja podreu unir l'àudio i el vídeo:
$ mkvmerge -o meva_peli-amb-so.mkv meva_peli.avi meva_peli.ogg
Si el vostre AVI ja conté una pista d'àudio, llavors també serà copiada (si el mkvmerge(1) admet aquest format d'àudio). Per a evitar-ho, simplement feu el següent:
$ mkvmerge -o meva_peli-amb-so.mkv -A meva_peli.avi meva_peli.ogg
Després d'alguns minuts considerant-ho decidiu afegir una altra pista d'àudio, p. ex., els comentaris del director o un altre idioma a «meva_peli-afegeix-àudio.wav». Es codifica una altra vegada i s'afegeix a l'altre fitxer:
$ oggenc -q4 -o meva_peli-afegeix-àudio.ogg meva_peli-afegeix-àudio.wav $ mkvmerge -o MM-completa.mkv meva_peli-amb-so.mkv meva_peli-afegeix-àudio.ogg
Es pot aconseguir el mateix resultat amb:
$ mkvmerge -o MM-complet.mkv -A meva_peli.avi meva_peli.ogg meva_peli-afegeix_àudio.ogg
Ara obriu el mplayer i gaudiu-ne. Si teniu múltiples pistes d'àudio (o fins i tot pistes de vídeo), llavors li podreu indicar al mplayer quina pista ha de reproduir amb les opcions «-vid» i «-aid». Aquestes es basen en el 0 i no distingeixen entre el vídeo i l'àudio.
Si necessiteu una pista d'àudio sincronitzada, ho podeu fer amb facilitat. El primer és esbrinar quin ID de pista té la pista Vorbis, amb:
$ mkvmerge --identify sense_sincronitzar.ogg
Ara podeu emprar aquest ID a la línia d'ordres següent:
$ mkvmerge -o ben_sincronitzat.mkv -A origen.avi -y 12345:200 sense_sincronitzar.ogg
Això afegiria 200ms de silenci al començament de la pista d'àudio amb l'ID 12345 obtingut des de «sense_sincronitzar.ogg».
Algunes pel⋅lícules comencen sincronitzades correctament però a poc a poc és desincronitzen. Per a aquest tipus de pel⋅lícules podeu especificar un factor de desfasament que serà aplicat a tots els codis de temps -no s'afegirà o suprimirà cap dada-. Si apliqueu un factor massa gran o petit el resultat serà incorrecte. Un exemple seria un episodi codificat que té 0.2 segons de desincronització al final de la pel⋅lícula, la longitud és de 77340 fotogrames. A 29.97fps 0.2 segons corresponen aproximadament 6 fotogrames. De manera que podeu fer:
$ mkvmerge -o ben_sincronitzat.mkv -y 23456:0,77346/77340 sense_sincronitzar.mkv
El resultat ha estat bo.
Les opcions de sincronització també es poden emprar per a subtítols de la mateixa manera.
Per a subtítols de text podeu emprar algun programari per a Windows (com SubRipper) o el paquet subrip que es pot trobar en el codi font del transcode(1) al directori «contrib/subrip». El procés general és:
$ tccat -i /camí/on/copiar/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o meva_peli
$ pgm2txt meva_peli
$ ispell -d american *txt
$ srttool -s -w -i meva_peli.srtx -o meva_peli.srt
El fitxer resultant el pot emprar el mkvmerge(1) com un altre fitxer d'entrada:
$ mkvmerge -o meva_peli.mkv meva_peli.avi meva_peli.srt
Si voleu especificar l'idioma per a una pista concreta, això és realment fàcil. Primer cerqueu el codi ISO 639-2 per al vostre idioma. El mkvmerge(1) pot llistar tots aquests codis:
$ mkvmerge --list-languages
Cerqueu a la llista els idiomes que necessiteu. Suposem que teniu dues pistes d'àudio en un fitxer Matroska i voleu establir els seus codis d'idioma, i que els seus ID de les pistes són 2 i 3. Això es pot fer amb:
$ mkvmerge -o amb_codis_d_idioma.mkv --language 2:ger --language 3:dut sense_codis_d_idioma.mkv
Com es pot veure, podeu emprar l'opció --language múltiples vegades.
Podria ser que vulgueu que el reproductor empri l'holandès com a idioma per omissió. També teniu subtítols addicionals, p. ex., en anglès i francès, i voleu que el reproductor mostri per omissió el francès. Això es pot fer amb:
$ mkvmerge -o amb_codis_d_idioma.mkv --language 2:ger --language 3:dut --default-track 3 sense_codis_d_idioma.mkv --language 0:eng anglès.srt --default-track 0 --language 0:fre francès.srt
Si no veieu al mkvinfo(1) les etiquetes d'idioma o de pista per omissió que heu especificat, llavors llegiu la secció sobre els valors per omissió.
Desactiva la compressió per a un fitxer d'entrada.
$ mkvmerge -o sense_compressió.mkv --compression -1:none meva_peli.avi --compression -1:none meva_peli.srt
Algunes opcions per al mkvmerge(1) necessiten un ID de pista per a especificar a quina pista s'han d'aplicar. Aquests ID de pista són mostrats pels lectors quan demultiplexen el fitxer d'entrada actual, o si el mkvmerge(1) és invocat amb l'opció --identify. Un exemple per a això:
$ mkvmerge -i v.mkv Fitxer «v.mkv»: contenidor: Matroska ID de la pista 0: video (V_MS/VFW/FOURCC, DIV3) ID de la pista 1: audio (A_MPEG/L3)
No s'han de confondre els ID de les pistes que s'assignen a les pistes que s'escriuen al fitxer MKV de sortida amb els ID de les pistes dels fitxers d'entrada. Només els ID de les pistes del fitxer d'entrada són emprats per a les opcions que necessiten aquests valors.
Tingueu també en compte que cada fitxer d'entrada té el seu propi conjunt d'ID de les pistes. Per tant, els ID de les pistes per al fitxer «fitxer_1.ext» tal com havia informat l'ordre «mkvmerge --identify» no canviaran, no importa quants fitxers d'entrada hi hagi o en quina posició es faci servir «fitxer_1.ext».
Els ID de les pistes són assignats així:
Les opcions que empren els ID de les pistes són aquelles en què la descripció conté un «TID». Les següents opcions també empren els ID de les pistes: --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks i --track-tags.
Hi ha diversos ID que tenen un significat especial i que no apareixen a la sortida d'identificació.
L'ID de pista especial «-1» és un comodí i aplica l'opció indicada a totes les pistes que es llegeixen des d'un fitxer d'entrada.
L'ID «-2» de pista especial fa referència als capítols en un fitxer d'origen. Actualment només l'opció --sync utilitza aquest ID especial. Com a alternativa a --sync -2:«...», es pot utilitzar l'opció --chapter-sync «...».
Aquesta secció s'aplica a tots els programes de les MKVToolNix, encara que només s'esmenti el mkvmerge(1).
Tot el text en un fitxer Matroska està codificat en UTF-8. Això implica que el mkvmerge(1) converteixi cada fitxer de text que llegeix, així com cada text indicat a la línia d'ordres, des d'un joc de caràcters a UTF-8. Per contra, això també vol dir que la sortida del mkvmerge(1) s'ha de convertir des d'UTF-8 a un joc de caràcters, p. ex., si s'empra una traducció no anglesa amb --ui-language o per a text que prové d'un fitxer Matroska.
El mkvmerge(1) realitzarà automàticament aquesta conversió en funció de la presència d'un marcador d'ordre de byte (abreujat: BOM) o de la configuració regional del sistema. Com el joc de caràcters es dedueix de la configuració regional, dependrà del sistema operatiu on s'executi el mkvmerge(1).
Els fitxers de text que comencen amb un BOM, ja estan codificats en una representació d'UTF. El mkvmerge(1) admet els cinc modes següents: UTF-8, UTF-16 Little i Big Endian, UTF-32 Little i Big Endian. Els fitxers de text amb un BOM seran automàticament convertits a UTF-8. Qualsevol dels paràmetres que d'una altra manera, estableixen el joc de caràcters d'un fitxer com aquest (p. ex., --sub-charset) seran ignorats silenciosament.
En sistemes com Unix, el mkvmerge(1) empra la crida del sistema setlocale(3) que al seu torn empra les variables d'entorn LANG, LC_ALL and LC_CYPE. El joc de caràcters resultant sovint serà un UTF-8 o de la família ISO-8859- *, i s'emparà per a totes les operacions sobre fitxers de text i per a codificar les cadenes a la línia d'ordres i per a la sortida de la consola.
Al Windows, el joc de caràcters per omissió emprat per a la conversió de fitxers de text es determina per la crida del sistema GetACP().
La lectura de la línia d'ordres es realitza amb la funció GetCommandLineW() que ja retorna una cadena de text Unicode. Per tant, a Windows s'ignorarà l'opció --command-line-charset.
La sortida a la consola consta de tres escenaris:
Si es redirigeix la sortida amb cmd.exe, p. ex., amb mkvinfo fitxer.mkv > informació.txt, llavors el joc de caràcters sempre serà UTF-8 i no es pot canviar.
D'altra manera, (quan s'escriu directament a la consola) s'emprarà la funció de Windows WriteConsoleW() i l'opció --output-charset serà ignorada. La consola hauria de ser capaç de generar tots els caràcters Unicode per a l'idioma corresponent que està instal⋅lat (p. ex., els caràcters xinesos podrien no ser mostrats en versions en anglès de Windows).
Les següents opcions permeten especificar els jocs de caràcters:
Un fitxer d'opcions és un fitxer des d'on el mkvmerge(1) pot llegir arguments addicionals de la línia d'ordres. Això es pot emprar per a eludir certes limitacions de l'intèrpret d'ordres (shell) o del sistema operatiu, com una longitud limitada de la línia d'ordres quan s'executen programes externs.
Un fitxer d'opcions amb dades en el format JSON. El seu contingut haurà de ser una matriu JSON vàlida que consisteixi únicament de cadenes JSON. La codificació del fitxer haurà de ser en UTF-8. El fitxer no podrà començar amb un marcador d'ordre de bytes (BOM), però si hi és, serà omès.
Les regles per a escapar caràcters especials dins del JSON són les mateixes que hi ha a l'especificació oficial del JSON, RFC 7159[4].
La línia d'ordres «mkvmerge -o "meu_fitxer.mkv" -A "una_peli.avi" so.ogg» es pot convertir en el següent fitxer d'opcions JSON anomenat, p. ex., «opcions.json»:
[
"-o",
"c:\\Matroska\\fitxer_meu.mkv",
"--title",
"#65",
"-A",
"una_peli.avi",
"so.ogg" ]
Matroska admet la vinculació dels fitxers, el qual simplement vol dir que un fitxer en específic és el predecessor o successor del fitxer actual. Per a ser precisos, els fitxers no estan realment vinculats sinó els segments Matroska. Com la majoria dels fitxers probablement només contenen un segment del Matroska, les següents explicacions empren el terme «vinculació de fitxers» encara que en realitat seria més correcte «vinculació de segments».
Cada segment s'identifica amb un únic UID del segment de 128 bits de longitud. Aquest UID és automàticament generat pel mkvmerge(1). La vinculació es realitza principalment inserint els UID dels segments (abreujat: SID) del fitxer anterior/següent a la informació de la capçalera del segment. El mkvinfo(1) mostrarà aquests SID si els troba.
Si es divideix un fitxer en diversos fitxers més petits i després s'empra la vinculació, llavors els codis de temps no començaran des de 0, sinó que continuaran des d'on va quedar l'últim fitxer. D'aquesta manera, es mantindrà el temps absolut fins i tot si els fitxers anteriors no estan disponibles (p. ex., quan es transmeten). Si no s'empra la vinculació, llavors els codis de temps de cada fitxer començaran des de 0. Per omissió, el mkvmerge(1) no emprarà la vinculació de fitxers. Si voleu, la podeu activar amb l'opció --link. Aquesta opció només és útil si la divisió també està activa.
Independentment de si la divisió està activa o no, l'usuari li pot indicar al mkvmerge(1) que vinculi els fitxers generats a alguns SID específics. Això s'aconsegueix amb les opcions --link-to-previous i --link-to-next. Aquestes opcions accepten un SID del segment en el format que surt del mkvinfo(1): 16 números hexadecimals entre 0x00 i 0xFF prefixats cadascun amb «0x», p. ex., «0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93». De manera alternativa, es pot emprar una forma curta: 16 nombres hexadecimals entre 0x00 i 0xFF sense el prefix «0x» i sense espais, p. ex., «41da7366d9cfb21eae78ebb45ecab393».
Si s'empra la divisió, llavors el primer fitxer serà vinculat al SID indicat amb --link-to-previous i l'últim fitxer serà vinculat al SID indicat amb --link-to-next. Si no s'empra la divisió, llavors el fitxer serà vinculat a ambdós SID.
L'especificació Matroska defineix que alguns elements tenen un valor predeterminat. En general, si el valor és igual que el predeterminat, llavors no serà escrit en el fitxer per tal d'estalviar espai. Els elements que l'usuari podria trobar a faltar a la sortida del mkvinfo(1) són els elements idioma i etiqueta de pista per omissió. El valor predeterminat per a l'idioma és anglès («eng»), i per a l'etiqueta de pista per omissió és true (cert). Per tant, si empreu --language 0:eng per a una pista, llavors no es mostrarà a la sortida del mkvinfo(1).
Possiblement també voldreu conservar algunes fotografies juntament amb el vostre fitxer Matroska, o emprar subtítols SSA i necessitareu un tipus de lletra TrueType especial que és realment rar. En aquests casos els podeu adjuntar al fitxer Matroska. No seran simplement annexats, sinó que seran incrustats. Un reproductor els podrà mostrar (en el cas de les «fotografies») o emprar-los per a renderitzar els subtítols (en el cas dels tipus de lletra «TrueType».
Aquí hi ha un exemple de com adjuntar una fotografia i un tipus de lletra TrueType al fitxer de sortida:
$ mkvmerge -o sortida.mkv -A vídeo.avi so.ogg \
--attachment-description "Jo i la banda darrere de l'escenari en una petita reunió" \
--attachment-mime-type image/jpeg \
--attach-file jo_i_la_banda.jpg \
--attachment-description "Un tipus de lletra veritablement rar i amb un aspecte increïblement bo" \
--attachment-mime-type application/octet-stream \
--attach-file tipus_de_lletra_molt_fresc.ttf
Si s'empra un fitxer Matroska que conté adjunts com a fitxer d'entrada, llavors el mkvmerge(1) copiarà tots els adjunts dins del fitxer nou. La selecció de quins fitxers es copiaran, es pot canviar amb les opcions --attachments i --no-attachments.
El sistema de capítols del Matroska és més poderós del que ho era l'antic sistema emprat per als fitxers OGM. Les especificacions completes es poden trobar a la pàgina web del Matroska[1].
El mkvmerge(1) admet dos tipus de fitxers de capítols com a entrada. El primer format, anomenat «format de capítols senzill», és el mateix format que s'espera en les eines OGM. El segon format es basa en el format de capítols en XML, el qual implementa totes les funcionalitats de capítols del Matroska.
A part dels fitxers de capítols dedicats, el mkvmerge(1) també pot llegir capítols des d'altres formats de fitxer (p. ex., MP4, Ogg, Blu-ray o DVD).
Aquest format consisteix en un parell de línies que comencen amb «CHAPTERxx=» i «CHAPTERxxNAME=», respectivament. La primera conté el codi de temps d'inici mentre que el segon conté el títol. Heus aquí un exemple:
CHAPTER01=00:00:00.000 CHAPTER01NAME=Introducció CHAPTER02=00:02:30.000 CHAPTER02NAME=El nen prepara un rock CHAPTER03=00:02:42.300 CHAPTER03NAME=El nen fa trontollar la casa
El mkvmerge(1) transformarà cada parell de línies en un ChapterAtom del Matroska. Si no s'estableix cap ChapterTrackNumber, voldrà dir que tots els capítols s'aplicaran a totes les pistes del fitxer.
Com es tracta d'un fitxer de text, podria ser necessari realitzar una conversió del joc de caràcters. Vegeu la secció sobre la conversió per a fitxers de text i jocs de caràcters, per a veure una explicació sobre com realitza el mkvmerge(1) la conversió entre diferents jocs de caràcters.
El format de capítols basat en XML s'assembla a aquest exemple:
<?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ítol curt</ChapterString>
<ChapterLanguage>cat</ChapterLanguage>
</ChapterDisplay>
<ChapterAtom>
<ChapterTimeStart>00:00:46.000</ChapterTimeStart>
<ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
<ChapterDisplay>
<ChapterString>Una part d'aquest capítol curt</ChapterString>
<ChapterLanguage>cat</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</ChapterAtom>
</EditionEntry> </Chapters>
Amb aquest format es poden realitzar tres coses que no es poden amb el format de capítol senzill:
La distribució de les mkvtoolnix conté alguns fitxers d'exemple en el subdirectori doc que es poden emprar com a base.
Tot seguit es mostra la llista de les etiquetes XML admeses, els seus tipus de dades, a on corresponen i amb un interval vàlid per als seus valors:
Chapters (domina)
EditionEntry (domina)
EditionUID (enter sense signe, interval vàlid: 1 <= valor)
EditionFlagHidden (enter sense signe, interval vàlid: 0 <= valor <= 1)
EditionFlagDefault (enter sense signe, interval vàlid: 0 <= valor <= 1)
EditionFlagOrdered (enter sense signe, interval vàlid: 0 <= valor <= 1)
ChapterAtom (domina)
ChapterAtom (domina)
ChapterUID (enter sense signe, interval vàlid: 1 <= valor)
ChapterTimeStart (enter sense signe)
ChapterTimeEnd (enter sense signe)
ChapterFlagHidden (enter sense signe, interval vàlid: 0 <= valor <= 1)
ChapterFlagEnabled (enter sense signe, interval vàlid: 0 <= valor <= 1)
ChapterSegmentUID (binari, interval vàlid: 1 <= longitud en bytes)
ChapterSegmentEditionUID (enter sense signe, interval vàlid: 1 <= valor)
ChapterPhysicalEquiv (enter sense signe)
ChapterTrack (domina)
ChapterTrackNumber (enter sense signe, interval vàlid: 1 <= valor)
ChapterDisplay (domina)
ChapterString (cadena en UTF-8)
ChapterLanguage (cadena en UTF-8)
ChapterCountry (cadena en UTF-8)
ChapterProcess (domina)
ChapterProcessCodecID (enter sense signe)
ChapterProcessPrivate (binari)
ChapterProcessCommand (domina)
ChapterProcessTime (enter sense signe)
ChapterProcessData (binari)
El mkvmerge(1) pot llegir capítols des de Blu-ray sense encriptar. Per a això, podreu utilitzar el camí a una de les llistes de reproducció MPLS amb el paràmetre --chapters.
Exemple: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
Quan el MKVToolNix es compila amb la biblioteca libdvdread, el mkvmerge(1) podrà llegir els capítols des dels DVD. Per a això, podreu utilitzarar el camí a una de les carpetes o fitxers en el DVD amb el paràmetre --chapters. Com els DVD poden contenir més d'un títol i cada títol té el seu propi conjunt de capítols, podreu afegir dos punts i el número de títol desitjat al final de l'argument amb el nom de fitxer. El número de títol predeterminat és 1.
Exemple: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
Quan es divideixen els fitxers, el mkvmerge(1) també ajustarà correctament els capítols. Això vol dir que cada fitxer només inclourà les entrades dels capítols que se li apliquin, i que es compensaran els codis de temps per a que coincideixin amb el nou codi de temps de cada fitxer de sortida.
El mkvmerge(1) és capaç de copiar els capítols des de fitxers d'origen Matroska, llevat que s'inhabiliti explícitament amb l'opció --no-chapters. Els capítols de tots els orígens (fitxers Matroska, fitxers Ogg, fitxers MP4, fitxers de text amb capítols) en general no es fusionen i acaben en ChapterEditions separats. Només si els capítols són llegits des de diversos fitxers Matroska o XML, aquests compartiran els mateixos UID d'edició, llavors els capítols seran fusionats en un únic ChapterEdition. Si es desitja una fusió com aquesta en altres situacions, l'usuari primer haurà d'extreure els capítols de tots els orígens amb el mkvextract(1), fusionar els fitxers en XML manualment i multiplexar-los després.
El sistema d'etiquetes de Matroska és similar al d'altres contenidors: un conjunt de parelles CLAU=VALOR. No obstant això, al Matroska, aquestes etiquetes també es poden aniuar, i tant la CLAU com el VALOR són elements propis. El fitxer d'exemple example-tags-2.xml mostra com emprar aquest sistema.
Les etiquetes del Matroska no s'apliquen automàticament a tot el fitxer. És possible fer-ho, però també aplicar-les a diferents parts del fitxer: a una o més pistes, a un o més capítols, o fins i tot en una combinació d'ambdues. L'especificació del Matroska[5] proporciona més detalls sobre això.
Una cosa important és que les etiquetes estan vinculades a pistes o capítols amb l'element d'etiquetes Targets del Matroska, a més els UID emprats per a vincular no seran els ID de les pistes que emprarà el mkvmerge(1) arreu. En canvi, els números emprats seran els UID que calcularà automàticament el mkvmerge(1) (si la pista es pren d'un altre format de fitxer que no sigui Matroska) o si es copia des del fitxer d'origen, si el fitxer d'origen de la pista és un fitxer Matroska. Per tant, és complicat saber quins UID s'han emprat al fitxer d'etiquetes abans que el fitxer fos proporcionat al mkvmerge(1).
El mkvmerge(1) té dues opcions amb les quals es poden afegir etiquetes als fitxers Matroska: Les opcions --global-tags i --tags. La diferència és que la primera opció, --global-tags, farà que les etiquetes s'apliquin a tot el fitxer eliminant qualsevol d'aquests elements Targets esmentats anteriorment. L'última opció, --tags, insereix automàticament l'UID que genera el mkvmerge(1) per a l'etiqueta especificada amb la part TID de l'opció --tags.
Diguem que voleu afegir etiquetes a una pista de vídeo llegida des d'un fitxer AVI. mkvmerge --identify fitxer.avi informa que l'ID de la pista de vídeo (no confondre aquest ID amb l'UID!) és 0. De manera que creareu el fitxer d'etiquetes, deixant de banda tots els elements Targets i cridareu el mkvmerge(1):
$ mkvmerge -o fitxer.mkv --tags 0:etiquetes.xml fitxer.avi
El mkvmerge(1) admet un format de fitxer d'etiquetes basat en XML. El format és molt similar al model de l'especificació del Matroska[5]. Tant la distribució binària com el codi font de les MKVToolNix, vénen acompanyades d'un fitxer d'exemple anomenat example-tags-2.xml, el qual simplement llista totes les etiquetes conegudes i es pot emprar com a base per als fitxers d'etiquetes.
Els fonaments són:
El nou sistema d'etiquetatge del Matroska només reconeix dos tipus de dades, una cadena en UTF-8 i un tipus binari. La primera s'empra per al nom de l'etiqueta i l'element <String>, mentre que el tipus binari s'empra per a l'element <Binary>.
Com a dada binària, en si mateixa, no té sentit dins d'un fitxer en XML, el mkvmerge(1) admet dos altres mètodes per a emmagatzemar dades binàries. Si el contingut d'una etiqueta XML comença amb un signe «@», llavors el text que segueix serà tractat com un nom de fitxer. El contingut del fitxer corresponent es copiarà dins de l'element del Matroska.
Altrament, les dades s'esperen codificades en Base64. Aquesta és una codificació que transforma les dades binàries en un conjunt limitat de caràcters ASCII i s'empra, p. ex., en programes de correu electrònic. El mkvextract(1) generarà dades codificades en Base64 per als elements binaris.
L'obsolet sistema d'etiquetatge coneix més tipus de dades que es poden trobar a les especificacions oficials per a etiquetes del Matroska. Com que el mkvmerge(1) ja no admet aquest sistema, aquests tipus no es descriuran aquí.
Tot seguit es mostra la llista de les etiquetes XML admeses, els seus tipus de dades, a on corresponen i amb un interval vàlid per als seus valors:
Tags (domina)
Tag (domina)
Targets (domina)
TargetTypeValue (enter sense signe)
TargetType (cadena en UTF-8)
TrackUID (enter sense signe)
EditionUID (enter sense signe)
ChapterUID (enter sense signe)
AttachmentUID (enter sense signe)
Simple (domina)
Simple (domina)
Name (cadena en UTF-8)
TagLanguage (cadena en UTF-8)
DefaultLanguage (enter sense signe)
String (cadena en UTF-8)
Binary (binari)
Amb un fitxer en XML amb informació dels segments és possible establir certs valors en el camp de la capçalera «segment information» d'un fitxer Matroska. Tots aquests valors no es poden establir a través d'altres opcions de la línia d'ordres.
Es poden establir altres camps de la capçalera «segment information» a través de les opcions de la línia d'ordres però no mitjançant el fitxer en XML. Això inclou, p. ex., les opcions --title i --timestamp-scale.
Hi ha altres elements que no es poden establir a través de la línia d'ordres ni mitjançant els fitxers en XML. Això inclou els següents elements: DateUTC (també conegut com la «muxing date»), MuxingApp, WritingApp i Duration. Sempre les estableix el mkvmerge(1) mateix.
Tot seguit es mostra la llista de les etiquetes XML admeses, els seus tipus de dades, a on corresponen i amb un interval vàlid per als seus valors:
Info (domina)
SegmentUID (binari, interval vàlid: longitud en bytes == 16)
SegmentFilename (cadena en UTF-8)
PreviousSegmentUID (binari, interval vàlid: longitud en bytes == 16)
PreviousSegmentFilename (cadena en UTF-8)
NextSegmentUID (binari, interval vàlid: longitud en bytes == 16)
NextSegmentFilename (cadena en UTF-8)
SegmentFamily (binari, interval vàlid: longitud en bytes == 16)
ChapterTranslate (domina)
ChapterTranslateEditionUID (enter sense signe)
ChapterTranslateCodec (enter sense signe)
ChapterTranslateID (binari)
La disposició d'un fitxer Matroska és força flexible. El mkvmerge(1) crearà un fitxer d'una manera predefinida. El fitxer resultant tindrà una aparença com aquesta:
[EBML head] [segment {meta seek #1} [segment information] [track information] {attachments} {chapters} [cluster 1] {cluster 2} «...» {cluster n} {cues} {meta seek #2} {tags}]
Els elements que estan entre claudàtors són opcionals, i depenen del contingut i opcions emprades. Uns quants apunts:
El fitxer Matroska més curt possible s'assemblaria a això:
[EBML head] [segment [segment information] [track information] [cluster 1]]
Aquest podria ser el cas per als fitxers amb només àudio.
El mkvmerge(1) permet a l'usuari triar els codis de temps per a una pista específica. Es pot emprar per a crear fitxers de vídeo amb una taxa de fotogrames variable (VFR) o per a incloure discontinuïtats en l'àudio. En aquest cas, un fotograma serà la unitat emprada pel mkvmerge(1) per a crear cada bloc del Matroska. Per al vídeo és exactament un fotograma, per a l'àudio això és un paquet d'un tipus d'àudio específic. P. ex., per a AC-3 això seria un paquet que conté 1536 mostres.
Els fitxers de codis de temps que s'empren quan s'annexen les pistes a les altres, només s'han d'especificar a la primera part en una cadena de pistes. Per exemple, si annexeu dos fitxers, v1.avi i v2.avi, i voleu emprar codis de temps, llavors la vostra línia d'ordres serà quelcom a això:
$ mkvmerge «...» --timestamps 0:codis_de_temps.txt v1.avi +v2.avi
Hi ha quatre formats que són reconeguts pel mkvmerge(1). La primera línia sempre conté el número de la versió. Les línies buides, les línies que només contenen espais en blanc i les que comencen amb un caràcter «#» seran ignorades.
Aquest format comença amb la línia de la versió. La segona línia declara el nombre per omissió de fotogrames per segon. Totes les línies següents contenen tres números separats per comes: el fotograma d'inici (0 és el primer fotograma), el fotograma final i el nombre de fotogrames en aquest interval. Els FPS (fotogrames per segon) són un nombre decimal amb un signe de punt «.» com a punt decimal. Els intervals poden contenir discontinuïtats per als FPS emprats per omissió. Un exemple:
# Format v1 per al codi de temps assume 27.930 800,1000,25 1500,1700,30
En aquest format cada línia conté un codi de temps per al fotograma corresponent. Aquest codi de temps s'ha d'especificar amb una precisió de mil⋅lisegons. Pot ser o no un nombre decimal. S'han d'especificar com a mínim tantes línies de codis de temps com fotogrames hi ha a la pista. Els codis de temps en aquest fitxer han d'estar ordenats. Un exemple per a 25 fps:
# Format v2 per al codi de temps 0 40 80
En aquest format cada línia conté una durada en segons seguida per un nombre opcional de fotogrames per segon. Ambdós camps poden ser nombres decimals. Si no s'especifica el nombre de fotogrames per segon, s'emprarà el valor per omissió. Per a l'àudio s'hauria de deixar calcular al còdec els codis de temps dels fotogrames. Per a això, haureu d'emprar 0.0 com el nombre de fotogrames per segon. També podeu crear discontinuïtats en el flux emprant la paraula clau «gap» seguida per la durada de la discontinuïtat. Un exemple per a un fitxer d'àudio:
# Format v3 per al codi de temps assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
Aquest format és idèntic al format v2. L'única diferència és que els codis de temps no s'han d'ordenar. Aquest format no s'hauria d'emprar gairebé mai.
El mkvmerge(1) sortirà amb un d'aquests tres codis de sortida:
El mkvmerge(1) empra les variables per omissió que es determinen a la configuració regional del sistema (p. ex., LANG i la família LC_*). Variables addicionals:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG i la seva forma abreujada MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE i la seva forma abreujada MTX_ENGAGE
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
Sempre trobareu l'última versió a la pàgina de les MKVToolNix[6].
Bunkus, Moritz <moritz@bunkus.org>
2021-01-04 | MKVToolNix 52.0.0 |