mkvmerge -- Voegt multimedia stromen in een Matroska(tm) bestand in.

# 1. Beknopte inhoudsbeschrijving

mkvmerge global options {-o out} options1 {file1} options2 {file2} @optionsfile

# 2. Beschrijving

Dit programma neemt de invoer van verschillende media bestanden en voegt die stromen samen (allemaal of slechts een stukje) naar een Matroska(tm) bestand; zie de Matroska website.

Important:

De volgorde van het commando regel opties zijn belangrijk. Lees a.u.b. de sectie over "Optie volgorde" als je nog onbekend bent met het programma.

## 2.1. Globale opties

Option | Description
--- | ---
-v, --verbose | Verhoog 'uitgebreidheid'.
-q, --quiet | Onderdruk status uitvoer.
-o, --output file-name | Schrijf naar het bestand file-name. Indien splitsen aan staat, dan wordt dat iets anders verwerkt. Zie uitleg voor de --split optie voor details.
-w, --webm | Creëer een WebM herkenbaar bestand. mkvmerge zet dit tevens aan wanneer het uitvoerbestandsnaam de extensie "webm" heeft. Deze modus dwingt diverse beperkingen af. De enig toegestane codecs zijn VP8 video en Vorbis audio sporen. Géén van het volgende hoofdstuk markeringen zijn toegestaan. Het DocType kop item is veranderd naar "webm".
--title title | Stelt de algemene naam in voor de uitvoer bestand, b.v. de film naam.
--default-language language-code | Stelt de standaard land code in voor alle sporen tenzij die wordt overschreven met --language optie. De standaard code is 'onb' voor 'onbekend'.

## 2.2. Hanteren van segment informatie (globale opties)

Option | Description
--- | ---
--segmentinfo filename.xml | Leest segment informatie in van een XML bestand. Dit bestand kan de segment familie bevatten UID, segment UID, vorige en volgend segment UID elementen. een voorbeeld bestand en een DTD zijn ingesloten in de MKVToolNix distributie. Zie de sectie over segment informatie XML bestanden zie hieronder voor details.
--segment-uid SID1,SID2,... | Stelt het te gebruiken segment UID's in. Dit is een komma gesepareerde lijst van 128bit segment UID's in het gebruikelijke UID formaat: hex nummers met of zonder de "0x" voorzetsel, met of zonder spaties, exact 32 cijfers. Elk gecreëerd bestand bevat één segment, en elk segment heeft één UID. Als er meer segment UID's zijn opgegeven dan er zijn gecreëerd, dan zullen de extra UID's worden genegeerd. Zijn er minder UID's opgegeven dan er segmenten zijn gecreëerd, dan worden er willekeurig UID's voor hen aangemaakt.

## 2.3. Hanteren hoofdstuk en markeringen (globale opties)

Option | Description
--- | ---
--chapter-language language-code | Stelt de ISO639-2 land code waarde in welke geschreven wordt voor elk hoofdstuk ingang. Standaard naar 'eng'. Zie de sectie over hoofdstukken hieronder voor details. Deze optie kan gebruikt worden, voor simpele hoofdstukken en voor bronbestanden welke hoofdstukken bevatten maar geen informatie over hoofdstuk talen, b.v. MP4 en OGM bestanden.
--chapter-charset character-set | Stelt het karakter set in, die gebruikt wordt voor de UTF-8 conversie voor simpele hoofdstuk bestanden. Zie de sectie over tekst bestanden en karakter sets voor een uitleg hoe mkvmerge(1) converteert tussen het 'verschillende' karakter sets. Deze schakelaar is ook van toepassing op hoofdstukken die zijn gekopieerd van enkele bepaalde inhoudstypen, b.v. Ogg/OGM en MP4 bestanden. Zie de sectie over hoofdstukken hieronder voor details.
--cue-chapter-name-format format | mkvmerge(1) ondersteund lezen van CUE volg document(en) (cue) voor audio bestanden als invoer voor hoofdstukken. CUE volg document(en) (cue) bevatten gewoonlijk informatie over de ARTIEST en TITEL voor elke index ingang. mkvmerge(1) gebruikt deze twee reeksen om het hoofdstuknaam te construeren. Met deze optie kan het formaat dat voor deze naam wordt gebruikt worden geplaatst.

Is deze optie niet opgegeven, dan zal mkvmerge(1) het standaard format gebruiken '%p - %t' (de artiest (performer), gevolgd door een spatie, een streep, wederom een spatie en de titel).

Is de format opgegeven dan zal alles behalve de volgende meta karakters gekopieerd worden zoals ze zijn, en de meta karakters worden vervangen zoals dit:

- %p is vervangen door de huidige ingangen PERFORMER (artiest) reeks,

- %t is vervangen door de huidige ingangen TITLE (titel) reeks,

- %n wordt vervangen op huidig spoor nummer en

- %N wordt vervangen op huidig spoor nummer en op/aangevuld met een beginnend/leidende nul als het is < 10 (kleiner dan).

--chapters file-name | Leest hoofdstuk informatie in van een bestand file-name. Zie sectie over hoofdstukken kijk hieronder voor details.
--global-tags file-name | Leest hoofdstuk informatie in van een bestand file-name. Zie sectie over hoofdstukken kijk hieronder voor details.

## 2.4. Algemene uitvoer controle (geavanceerde globale opties)

Option | Description
--- | ---
--track-order FID1:TID1,FID2:TID2,... | Deze optie verandert de volgorde waarin de sporen voor een invoer bestand worden gecreëerd. Het argument is een komma gescheiden lijst van gepaarde ID's. Elk paar bevat eerst het bestand ID (FID1) wat simpelweg een nummer van het bestand is op de commandoregel beginnend bij 0. Het tweede is een spoor ID (TID1) van dat bestand. Als sommige spoor id's worden weggelaten, dan zullen die sporen worden gecreëerd na diegene die met deze optie zijn gecreëerd.
--cluster-length spec | Limiteert het aantal data blokken of de duur van de data in elke cluster. De spec parameter kan één van beide zijn een nummer n zonder een eenheid of een nummer d vastgezet met 'ms' (milliseconden). Als er geen eenheid is gebruikt dan zal mkvmerge(1) hoogstens zetten n data blokken in elke cluster. Het maximum aantal blokken is 65535.

Als het nummer d is vastgezet met 'ms' dan zal mkvmerge(1) hoogstens zetten d milliseconden aan data in elke cluster. Het minimum voor d is '100ms', en het maximum is '32000ms'.

mkvmerge(1) plaatst standaard op zijn hoogst 65535 data blokken en 5000ms aan data in een cluster.

Programma's die een bepaald beeld proberen te zoeken, kunnen alleen direct naar een cluster zoeken en moeten daarna de gehele cluster lezen. Daarom kan het de oorzaak zijn, dat het maken van grote clusters kan leiden tot onnauwkeurigheid of traag zoeken.

--no-cues | Vertelt mkvmerge(1) geen volg document(en) (cue) te creëren en te schrijven wat vergelijkbaar is met een index in een AVI. Matroska(tm) bestanden kunnen worden afgespeeld zonder volg document(en) (cue), maar dat kan leiden tot onnauwkeurigheid of traag zoeken. Gebruik dit alleen als je echt wanhopig bent qua ruimte of voor test doeleinden. Zie ook de optie volg document(en) (cue) welke opgegeven kan worden voor elk invoer bestand.
--clusters-in-meta-seek | Vertelt mkvmerge(1) een meta element te creëren aan het eind van het bestand dat alle clusters bevat. Zie ook de sectie over de Matroska bestand layout.
--disable-lacing | Zet het aaneenkoppelen uit voor alle sporen. Dit zal de bestandsgrootte verhogen, speciaal wanneer er veel audio sporen zijn. Deze optie is niet bedoeld voor dagelijks gebruik.
--enable-durations | Duur schrijven voor alle blokken. Dit zal de bestandsgrootte verhogen en geeft geen extra waarde aan af spelers van dit moment.
--timecode-scale factor | Forceert de tijd code schaal factor naar factor. Geldige bereik waardes zijn 1000..10000000 of de speciale waarde -1. Normaal zal mkvmerge(1) een waarde gebruiken van 1000000 wat inhoudt, dat de tijd codes en duren een precisie hebben van 1ms. Voor bestanden die geen video maar minstends één audio spoor bevatten, zal mkvmerge(1) automatisch de tijd code schaal factor kiezen, zodat alle tijd codes en duren een precisie hebben van één audio voorbeeld. Dit veroorzaakt een grotere overhead maar staat een betere zoek en extractie precisie toe.

Als de speciale waarde -1 is gebruikt, dan zal mkvmerge(1) een voorbeeld precisie gebruiken zelfs als er een video spoor aanwezig is.

## 2.5. Bestand splitsen, linken en toevoegen (meer globale opties)

Option | Description
--- | ---
--split specification | Splits de uitvoer bestand na een opgegeven grootte of tijd. Opmerking, sporen kunnen alléén direct voor een sleutel beeld gesplitst worden. Vanwege het bufferen zal mkvmerge(1) als een splitspunt wordt bereikt, direct voor het volgende sleutel beeld gaan splitsen. Daarom kunnen de splitspunten enigszins afwijken van wat de gebruiker op gaf.

Op het moment ondersteunt mkvmerge(1) vier verschillende modes.

1. Splitsen op grootte.

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

   Voorbeelden: --split size:700m of --split 150000000

   De parameter d mag eindigen met 'k', 'm' of 'g' ter indicatie dat de grootte respectievelijk wordt aangegeven in KB, MB of GB. Anders wordt een grootte in Bytes verondersteld. Nadat een uitvoer bestand zijn limiet heeft bereikt wordt er een andere aangemaakt.

   De 'size:' mag vanwege de verenigbaarheid (compatibiliteit) weggelaten worden.

2. Splitsen na een duur van.

   Ingaven: --split [duur:]HH:MM:SS.nnnnnnnnn|ds

   Voorbeeld: --split duration:00:60:00.000 of --split 3600s

   De parameter moet één van beiden de vormen hebben HH:MM:SS.nnnnnnnnn voor het specificeren van de duur tot in de precisie van een nanoseconde of een nummer d gevolgd door een letter 's' voor de duur in seconden. HH is het aantal uren, MM het aantal minuten, SS het aantal seconden en nnnnnnnnn het aantal nanoseconden. Zowel de uren evenals de nanoseconden mogen weggelaten worden. Er mogen tot aan negen nummers opgegeven worden na de decimale punt. Nadat de duur va de huidige inhoud deze limiet bereikt heeft, wordt er een nieuw uitvoer bestand gestart.

   De 'duration:' mag vanwege de verenigbaarheid (compatibiliteit) weggelaten worden.

3. Splitsen na een specifieke tijd code.

   Ingaven: --split timecodes:A[,B[,C...]]

   Voorbeeld: --split timecodes:00:45:00.000,01:20:00.250,6300s

   De parameters A, B, C etc. moeten allen dezelfde indeling hebben als de duur (zie hierboven). De lijst van tijd codes is komma gescheiden. Nadat de uitvoer stroom zijn huidige splits tijd code limiet heeft bereikt wordt er een nieuw bestand gecreëerd. Daarna wordt het volgende splits punt gebruikt van de gebruikte lijst.

   Het 'timecodes:' voorvoegsel mag niet wegelaten worden.

4. Houden van specifieke delen door het specificeren van tijd code bereiken, terwijl het van anderen ontdaan wordt.

   Ingaven: --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]

   Voorbeeld:

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

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

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

   De parts mode vertelt mkvmerge(1) bepaalde tijd code bereiken te behouden en anderen over te slaan. De te behouden bereiken worden uit gelijst na de parts: sleutelwoord en gescheiden door een komma. Het bereik zelf bestaat uit een start en een eindtijd code in hetzelfde format als de overige variaties van --split accept (b.v. beide 00:01:20 en 80s verwijzen naar dezelfde tijd code).

   Als een start tijd code is weggelaten wordt het standaard gezet naar het vorige bereik eindtijd code. Als er geen vorig bereik, dan is standaard het begin van het bestand (zie voorbeeld 3).

   If an end timecode is left out then it defaults to the end of the source files which basically tells mkvmerge(1) to keep the rest (see example 3).

   Normally each range will be written to a new file. This can be changed so that consecutive ranges are written to the same file. For that the user has to prefix the start timecode with a +. This tells mkvmerge(1) not to create a new file and instead append the range to the same file the previous range was written to. Timecodes will be adjusted so that there will be no gap in the output file even if there was a gap in the two ranges in the input file.

   In example 1 mkvmerge(1) will create two files. The first will contain the content starting from 00:01:20 until 00:02:45. The second file will contain the content starting from 00:05:50 until 00:10:30.

   In example 2 mkvmerge(1) will create only one file. This file will contain both the content starting from 00:01:20 until 00:02:45 and the content starting from 00:05:50 until 00:10:30.

   In example 3 mkvmerge(1) will create two files. The first will contain the content from the start of the source files until 00:02:45. The second file will contain the content starting from 00:05:50 until the end of the source files.

   Note:

   Note that mkvmerge(1) only makes decisions about splitting at key frame positions. This applies to both the start and the end of each range. So even if an end timecode is between two key frames mkvmerge(1) will continue outputting the frames up to but excluding the following key frame.

5. Keeping specific parts by specifying frame/field number ranges while discarding others.

   Syntax: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]

   Voorbeeld:

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

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

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

   The parts-frames mode tells mkvmerge(1) to keep certain ranges of frame/field numbers while discarding others. The ranges to keep have to be listed after the parts-frames: keyword and be separated by commas. A range itself consists of a start and an end frame/field number. Numbering starts at 1.

   If a start number is left out then it defaults to the previous range's end number. If there was no previous range then it defaults to the start of the file (see example 3).

   If an end number is left out then it defaults to the end of the source files which basically tells mkvmerge(1) to keep the rest (see example 3).

   Normally each range will be written to a new file. This can be changed so that consecutive ranges are written to the same file. For that the user has to prefix the start number with a +. This tells mkvmerge(1) not to create a new file and instead append the range to the same file the previous range was written to. Timecodes will be adjusted so that there will be no gap in the output file even if there was a gap in the two ranges in the input file.

   Note:

   Note that mkvmerge(1) only makes decisions about splitting at key frame positions. This applies to both the start and the end of each range. So even if an end frame/field number is between two key frames mkvmerge(1) will continue outputting the frames up to but excluding the following key frame.

   In example 1 mkvmerge(1) will create two files. The first will contain the content starting from the first key frame at or after 137 up to but excluding the first key frame at or after 258. The second file will contain the content starting from 548 until 1211.

   In example 2 mkvmerge(1) will create only one file. This file will contain both the content starting from 733 until 912 and the content starting from 1592 until 2730.

   In example 3 mkvmerge(1) will create two files. The first will contain the content from the start of the source files until 430. The second file will contain the content starting from 2512 until the end of the source files.

   Deze modus houdt alleen rekening met de eerste video spoor dat wordt uitgevoerd. Als er geen video spoor is uitgevoerd dan zal splitsen niet plaatsvinden.

   Note:

   The numbers given with this argument are interpreted based on the number of Matroska(tm) blocks that are output. A single Matroska(tm) block contains either a full frame (for progressive content) or a single field (for interlaced content). mkvmerge does not distinguish between those two and simply counts the number of blocks. For example: If one wanted to split after the 25th full frame with interlaced content one would have to use 50 (two fields per full frame) as the split point.

6. Splitsen na specifieke beelden/velden codes.

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

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

   De parameters A, B, C etc. moeten allen positieve cijfers bevatten. Nummering start vanaf 1. De lijst van beeld/veld codes is komma gescheiden. Nadat de uitvoer stroom zijn huidige splits tijd code limiet heeft bereikt wordt er een nieuw bestand gecreëerd. Daarna wordt het volgende splits punt gebruikt van de gebruikte lijst.

   Het 'frames:' voorvoegsel mag niet wegelaten worden.

   Deze modus houdt alleen rekening met de eerste video spoor dat wordt uitgevoerd. Als er geen video spoor is uitgevoerd dan zal splitsen niet plaatsvinden.

   Note:

   The numbers given with this argument are interpreted based on the number of Matroska(tm) blocks that are output. A single Matroska(tm) block contains either a full frame (for progressive content) or a single field (for interlaced content). mkvmerge does not distinguish between those two and simply counts the number of blocks. For example: If one wanted to split after the 25th full frame with interlaced content one would have to use 50 (two fields per full frame) as the split point.

7. Splitsen na een specifieke hoofstukken.

   Syntax: --split chapters:all or --split chapters:A[,B[,C...]]

   Voorbeeld: --split chapters:5,8

   De parameters A, B, C etc. moeten allen positief zijn. Nummering start vanaf 1. De lijst van hoofstukken is komma gescheiden. Splitsing zal plaatsvinden vlak voor het eerste toets sleutelbeeld waarvan de tijd code gelijk is aan of groter is dan de start tijd code voor de hoofdstukken waarvan de nummers zijn opgenomen. Een hoofdstuk vanaf 0s wordt nooit beschouwd voor het splitsen en wordt geruisloos weggegooid.

   Het sleutelwoord all kan worden gebruikt i.p.v. alle hoofdstuknummers handmatig uit te lijsten.

   Het chapters:' voorvoegsel mag niet wegelaten worden.

   Note:

   The Matroska(tm) file format supports arbitrary deeply nested chapter structures called 'edition entries' and 'chapter atoms'. However, this mode only considers the top-most level of chapters across all edition entries.

Voor deze splits mode wordt het uitvoer bestand anders behandeld dan onder de normale werking. Het mag bevatten een printf zoals uitgedrukt '%d' inclusief een optioneel veld, b.v. '%02d'. Indien dit het geval is, zal het huidige bestandsaantal geschikt worden geformatteerd en op dat punt in de bestandsnaam worden ingevoegd. Is er geen dergelijk patroon dan wordt een patroon van '-%03d' aangenomen direct voor de bestand extensie: '-o output.mkv' zou resulteren in 'output-001.mkv' en zo verder. Is er geen extensie dan zal '-%03d' worden toegevoegd aan de naam.

--link | Bestanden linken aan een ander tijdens het splitsen van het uitvoer bestand. Zie de sectie op bestand linken/verbinden onderstaand voor details.
--link-to-previous segment-UID | Verbindt het laatste uitvoerbestand met het segment UID ingegeven door segment-UID parameter. Zie de sectie op bestand linken/verbinden onderstaand voor details.
--link-to-next segment-UID | Verbindt het laatste uitvoerbestand met het segment UID ingegeven door segment-UID parameter. Zie de sectie op bestand linken/verbinden onderstaand voor details.
--append-mode mode | Calculeert hoe tijd codes worden berekend wanneer die worden toegevoegd aan een bestand. De parameter mode kan twee waardes bevatten: 'file' welke ook standaard is en 'track'. Wanneer mkvmerge een spoor toevoegt (genoemd 'track2_1' vanaf nu) van een tweede bestand (genoemd 'file2') naar een spoor (genoemd 'track1_1') van het eerste bestand (genoemd 'file1') dan moet het alle tijd codes compenseren voor 'track2_1' met een bepaalde hoeveelheid. Voor 'file' mode is deze hoeveelheid de hoogste tegengekomen tijd code in 'file1'. zelfs wanneer die tijd code van een ander spoor is dan 'track1_1'. In spoor mode de is compensatie de hoogste tijd code van 'track1_1'.

Helaas kan mkvmerge niet detecteren welke mode betrouwbaar is. Daarom zet het de standaard waarde naar 'file' mode. 'file' mode werkt gewoonlijk beter voor bestanden indien die onafhankelijk van elkaar werden gemaakt; b.v. het toevoegen van AVI of MP4 bestanden. 'track' mode zou beter werken voor bronnen die hoofdzakelijk een deel van één groot bestand zijn, b.v. voor VOB en EVO bestanden.

Hoofdstuk sporen worden altijd behandeld alsof 'file' mode actief is en zelfs wanneer 'track' mode actueel is.

--append-to SFID1:STID1:DFID1:DTID1[,...] | Deze optie controleert welk spoor aan welk ander spoor moet worden toegevoegd (bestand wordt dubbel zo groot). Elke specificatie bevat vier ID's: een bestand ID, een spoor ID, een tweede bestand ID en een tweede spoor ID. Het eerste paar, "source file ID" en "source track ID", identificeert het spoor dat moet worden toegevoegd. Het tweede paar, "destination file ID" en "destination track ID", identificeert het spoor waaraan de eerste is toegevoegd.

Als deze optie weggelaten wordt dan wordt een standaard indeling gebruikt. Deze standaard indeling voegt elk spoor van het huidige bestand toe aan een spoor van het vorige bestand met hetzelfde spoor ID. Dit staat het makkelijk toevoegen toe indien een film gesplitst is in twee delen en beide bestanden dezelfde aantal sporen en spoor ID's hebben, met het commando mkvmerge -o output.mkv part1.mkv +part2.mkv.

+ | Een enkele '+' veroorzaakt dat het volgende bestand wordt bijgevoegd (bestand wordt dubbel zo groot) i.p.v. toegevoegd. De '+' kan worden ingegeven voor elk volgende bestandsnaam. Daarom zijn de volgende twee commando's gelijkwaardig:
    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv file1.mkv +file2.mkv
= | Normaal kijkt mkvmerge(1) naar bestanden in dezelfde map welke dezelfde basis naam bevatten maar alleen verschillen van volgordenummer (b.v. 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB' etc.) en behandelt al die bestanden alsof zij één groot bestand waren. Deze optie, een enkele '=' maakt dat mkvmerge niet kijkt naar die extra bestanden.

De '=' kan ook worden ingegeven voor elk volgende bestandsnaam. Daarom zijn de volgende twee commando's gelijkwaardig:

    $ mkvmerge -o full.mkv = file1.mkv
    $ mkvmerge -o full.mkv =file1.mkv

( file1 file2 ) | Als er meerdere bestandsnamen zijn opgenomen tussen haakjes, dan zullen die bestanden worden behandeld alsof ze zijn samengevoegd tot één enkel groot bestand, dat bestaat uit de inhoud van elk van de bestanden achter elkaar. Dit kan gebruikt worden voor b.v. VOB bestanden vanaf een DVD of MPEG transport stromen. Het kan niet worden gebruikt als elk bestand zijn eigen set koppen bevat wat meestal het geval is bij stand-alone-bestanden, zoals AVI of MP4.

Een bestandsnaam tussen haakjes te zetten voorkomt tevens dat mkvmerge(1) kijkt naar extra bestanden met dezelfde naam zoals beschreven in option =. Daarom zijn deze twee commando's gelijkwaardig:

    $ mkvmerge -o out.mkv = file.mkv
    $ mkvmerge -o out.mkv '(' file.mkv ')'

Verschillende dingen dienen te worden opgemerkt:

1. Er moet een spatie zijn zowel voor als na het open en sluit haken.

2. Elke parameter tussen haakjes wordt geïnterpreteerd als een bestandsnaam. Daarom moeten alle opties die van toepassing zijn op dit logische bestand opgenomen moet worden voor de openende haakjes.

3. Sommige insluitingen worden behandeld als speciale tekens. Vandaar dat je moet insluiten of citeren ze zoals in het voorbeeld hierboven.

## 2.6. Bijlage ondersteuning (meer globale opties)

Option | Description
--- | ---
--attachment-description description | Normale tekst beschrijving van de volgende bijlage. Is van toepassing op de volgende --attach-file of --attach-file-once optie.
--attachment-mime-type MIME type | MIME type van de volgende bijlage. Is van toepassing op de volgende --attach-file of --attach-file-once optie. Een lijst van officiële herkende MIME typen kan gevonden worden b.v. op de IANA thuisbasis. Het MIME type is verplicht voor een bijlage.
--attachment-name name | Stelt de naam in voor deze bijlage welke wordt opgeslagen in het uitvoer bestand. Als deze optie niet is opgegeven dan zal de naam worden afgeleid van de naam van de bijlage zoals gegeven met de --attach-file of de --attach-file-once optie.
--attach-file file-name, --attach-file-once file-name | Creëert een bestandsbijlage binnenin het Matroska(tm) bestand. Het MIME type moet ingesteld zijn voordat deze optie gebruikt kan worden. Het verschil tussen deze twee vormen is, dat tijdens het splitsen van de bestanden vastgemaakt met --attach-file aan alle uitvoerbestanden zijn vastgemaakt terwijl degene vastgemaakt met de --attach-file-once alleen zijn vastgemaakt aan het eerste bestand. Is splitsen niet gebruikt dan doen beide hetzelfde.

mkvextract(1) kan worden gebruikt om bestanden uit een Matroska(tm) bestand te halen.

## 2.7. Opties welke gebruikt kunnen worden voor elk invoer bestand

Option | Description
--- | ---
-a, --audio-tracks [!]n,m,... | Kopieer de audio sporen n, m etc. De nummers zijn track ID's welke verkregen kunnen worden met de --identify schakelaar. Zij zijn simpelweg niet de spoor nummers (zie sectie spoor ID's). Standaard: Kopieer alle audio sporen. Als de IDs zijn voorgezet met ! dan is de betekenis omgekeerd: kopieer alles maar de ID's lijsten na de !.
-d, --video-tracks [!]n,m,... | Kopieer de video sporen n, m etc. De nummers zijn track ID's welke kunnen worden verkregen met de --identify schakelaar. Zij zijn simpelweg niet de spoor nummers (zie sectie spoor ID's). Standaard: Kopieer alle video sporen.. Als de IDs zijn voorgezet met ! dan is de betekenis omgekeerd: kopieer alles maar de ID's lijsten na de !.
-s, --subtitle-tracks [!]n,m,... | Kopieer de ondertitel sporen n, m etc. De nummers zijn track ID's welke kunnen worden verkregen met de --identify schakelaar. Zij zijn simpelweg niet de spoor nummers (zie sectie spoor ID's). Standaard: Kopieer alle ondertitel sporen. Als de IDs zijn voorgezet met ! dan is de betekenis omgekeerd: kopieer alles maar de ID's lijsten na de !.
-b, --button-tracks [!]n,m,... | Kopieer de knop sporen n, m etc. De nummers zijn track ID's welke kunnen worden verkregen met de --identify schakelaar. Zij zijn simpelweg niet de spoor nummers (zie sectie spoor ID's). Standaard: Kopieer alle knop sporen. Als de IDs zijn voorgezet met ! dan is de betekenis omgekeerd: kopieer alles maar de ID's lijsten na de !.
--track-tags [!]n,m,... | Kopieer de markeringen voor sporen n, m etc. De nummers zijn track ID's welke kunnen worden verkregen met de --identify schakelaar (zie sectie spoor ID's). Zij zijn simpelweg niet de spoor nummers. Standaard: Kopieer alle markering sporen. Als de IDs zijn voorgezet met ! dan is de betekenis omgekeerd: kopieer alles maar de ID's lijsten na de !.
-m, --attachments [!]n[:all|first],m[:all|first],... | Kopieer de bijlagen met de ID's n, m etc. naar allen of alleen het eerste uitvoer bestand. Elk ID kan opgevolgd worden door ':all' (welke standaard is, als geen van twee is opgegeven) of ':first'. Als het splitsen actief is, dan zullen die bijlagen waarvan de ID's zijn gespecificeerd met ':all' worden gekopieerd naar alle resulterende uitvoer bestanden, terwijl de anderen alleen gekopieerd worden naar het eerste uitvoerbestand. Als splitsen niet actief is, dan hebben beide varianten hetzelfde effect.

Standaard is, kopieer alle bijlagen naar alle uitvoer bestanden.

Als de IDs zijn voorgezet met ! dan is de betekenis omgekeerd: kopieer alles maar de ID's lijsten na de !.

-A, --no-audio | Kopieer geen enkel audio spoor van dit bestand.
-D, --no-video | Kopieer geen enkel video spoor van dit bestand.
-S, --no-subtitles | Kopieer geen enkel ondertitel spoor van dit bestand.
-B, --no-buttons | Kopieer geen enkel knop spoor van dit bestand.
-T, --no-track-tags | Kopieer geen enkel spoor-specifieke markeringen van dit bestand.
--no-chapters | Kopieer geen hoofdstukken van dit bestand.
-M, --no-attachments | Kopieer geen bijlagen van dit bestand.
--no-global-tags | Kopieer geen globale markeringen van dit bestand.
--chapter-charset character-set | Stelt het karakter set in, die gebruikt wordt voor de conversie naar UTF-8 voor het hoofdstuk informatie die zich bevindt in het bronbestand. Zie de sectie over tekst bestanden en karakter sets voor een uitleg hoe mkvmerge(1) converteert tussen de karakter sets.
--chapter-language language-code | Zet de ISO639-2 taal code, welke wordt geschreven voor elk hoofdstuk ingang. Deze optie kan gebruikt worden, voor bronbestanden welke hoofdstuk informatie bevatten maar géén informatie over de talen, b.v. voor MP4 en OGM bestanden.
-y, --sync TID:d[,o[/p]] | Stelt de tijd codes bij van het spoor met het id TID met d ms. De spoor ID's zijn hetzelfde als degene gegeven met --identify (zie sectie spoor ID's). o/p: Stel de tijd codes bij met o/p om lineaire driften te corrigeren. p standaard naar 1 indien weggelaten. Beide o en p kunnen een veranderbaar nummer zijn.

Standaard: geen handmatige sync correctie (wat hetzelfde is als d = 0 en o/p = 1.0).

Deze optie kan meerdere keren worden gebruikt voor een invoer bestand, is van toepassing op verschillende sporen door het spoor ID elke keer te selecteren.

--cues TID:none|iframes|all | Controle voor welke sporen cue (index) ingangen worden gecreëerd voor een opgegeven spoor (zie sectie Spoor ID's). 'none' remt het creëren van volg document(en) (cue) af. Voor 'iframes' alléén blokken zonder voor of achteruit referenties ( = I beelden in video sporen) worden ingevoerd in het 'volg document(en) (cue)'. 'all' zorgt ervoor dat mkvmerge(1) aanmaakt, volg document(en) (cue) voor alle blokken welke het bestand erg groot maakt.

Standaard is 'iframes' voor video sporen en 'none' voor alle anderen. Zie ook opties --no-cues welke verwezenlijken het creëren van volg document(en) (cue) ongeacht de --cues gebruikte opties.

Deze optie kan meerdere keren worden gebruikt voor een invoer bestand, is van toepassing op verschillende sporen door het spoor ID elke keer te selecteren.

--default-track TID[:bool] | Zet de 'standaard' markering voor een gegeven spoor (zie sectie spoor ID's) als het optionele argument bool niet aanwezig is. Als de gebruiker niet zelf uitdrukkelijk een spoor selecteert, dan zou de afspeler een spoor prefereren dat zijn 'standaard' markering heeft. Alleen één spoor van elk soort (audio, video, ondertitels, knoppen) kunnen deze 'standaard' markering gezet hebben. Indien een gebruiker geen spoor wenst te hebben met een standaard spoor markering gezet, dan moet hij zetten bool naar 0 voor alle sporen.

Deze optie kan meerdere keren worden gebruikt voor een invoer bestand, is van toepassing op verschillende sporen door het spoor ID elke keer te selecteren.

--forced-track TID[:bool] | Stelt de 'geforceerde' markering in voor een gegeven spoor (zie sectie spoor ID's) als het optionele argument bool niet aanwezig is. En afspeler moet alle sporen afspelen waarvan deze markering is gezet 1. Deze optie kan meerdere keren worden gebruikt voor een invoer bestand, is van toepassing op verschillende sporen door het spoor ID elke keer te selecteren.
--blockadd TID:level | Houd alleen de BlockAdditions tot aan niveau level voor het opgegeven spoor. Standaard is alle niveaus. Deze optie heeft alleen effect op sommige codecs zoals WAVPACK4.
--track-name TID:name | Stelt het spoor naam in van een gegeven spoor (zie sectie spoor ID's) naar naam.
--language TID:language | Stelt de taal in voor het opgegeven spoor (zie sectie spoor ID's). Beide ISO639-2 taal codes en ISO639-1 land codes zijn toegestaan. Het land code wordt automatisch vertaald naar taal code. Alle talen inclusief hun ISO639-2 codes kunnen uit gelijst worden met --list-languages optie.

Deze optie kan meerdere keren worden gebruikt voor een invoer bestand, is van toepassing op verschillende sporen door het spoor ID elke keer te selecteren.

-t, --tags TID:file-name | Leest de markeringen in van het spoor met het nummer TID van de bestand file-name. Zie de sectie over markeringen hieronder voor details.
--aac-is-sbr TID[:0|1] | Vertelt mkvmerge(1) dat het spoor met het ID TID een SBR AAC is (ook bekend als HE-AAC of een AAC+). Deze optie is nodig als a) een bron bestand een AAC bestand is (niet voor een Matroska(tm) bestand) en b) het AAC bestand bevat SBR AAC data. De reden voor deze schakelaar is, dat het normaal technisch niet mogelijk is, automatisch te vertellen dat AAC data van SBR AAC data zonder deze volledig te decoderen van een AAC beeld. Aangezien er verscheidene octrooi/patent kwesties zijn met AAC decoders zal mkvmerge(1) nooit dit decodeer stadium bevatten. Dus voor SBR AAC bestanden is deze schakelaar een vereiste. Het resulterende bestand zou niet correct afgespeeld kunnen worden of zelfs helemaal niet, wanneer deze schakelaar werd weggelaten.

Als het bron bestand een Matroska(tm) bestand is, dan zou de CodecID genoeg moeten zijn om deze SBR AAC te detecteren. Hoewel, als de CodecID verkeerd is, dan kan deze schakelaar gebruikt worden om dat te corrigeren.

Als mkvmerge verkeerd detecteert dat een AAC bestand een SBR is, dan kan je toevoegen ':0' aan het spoor ID.

--timecodes TID:file-name | Leest de te gebruiken tijd codes in voor een specifiek spoor ID van file-name. Deze krachtige tijd codes heffen de tijd code's die mkvmerge(1) normaal berekend op. Lees de sectie over externe tijd code bestanden.
--default-duration TID:x | Forceert de standaard duur van een gegeven spoor naar de gegeven waarde. Tevens de spoor tijd code aanpast zodat die overeenkomt met de standaard duur. Het argument x moet zijn vastgezet met 's', 'ms', 'us', 'ns' of 'fps' 'p' of 'i om te specificeren de standaard duur in seconden, milliseconden, microseconden, nanoseconden of respectievelijk de ''beelden per seconde' (fps). Het aantal x kan zelf een veranderbaar nummer zijn of een fractie.

Als de standaard duur niet is geforceerd dan zal mkvmerge proberen de spoor standaard duur proberen te verkrijgen uit de inhoud en/of de gecodeerde bit stroom voor bepaalde spoortypen, b.v. AVC/h.264 of MPEG-2.

Deze optie kan ook gebruikt worden om de FPS (beelden per seconde) te veranderen van video sporen zonder een extern tijd code bestand te hoeven gebruiken.

--nalu-size-length TID:n | Forceert de NALU lengte grootte naar n bytes. Deze parameter wordt alleen gebruikt als de AVC/h.264 elementaire stroom inpakker is gebruikt. Indien weggelaten is de standaard waarde 4 bytes, maar er zijn bestanden die beelden of delen bevatten die kleiner zijn dan 65536 bytes. Voor dergelijke bestanden kan je deze parameter gebruiken en de grootte verminderen naar 2.
--compression TID:n | Selecteert de te gebruiken compressie methode in voor het spoor. Opmerking: de afspeler dient deze methode ook te ondersteunen. Geldige waarden zijn 'none', 'zlib', 'lzo'/'lxo1x', 'bz2'/'bzlib' en 'mpeg4_p2'/'mpeg4p2'. De waarden 'lzo'/'lxo1x' en 'bz2'/'bzlib' zijn alléén beschikbaar als mkvmerge(1) is gecompileerd met de ondersteuning voor de liblzo(tm) respectievelijk bzlib(tm) compressie bibliotheken.

De compressie methode 'mpeg4_p2'/'mpeg4p2' is een speciale compressie methode genoemd 'header removal' die is alléén beschikbaar voorMPEG4 deel 2 video sporen.

Standaard voor sommige ondertitels zijn 'zlib' compressie. Deze compressie wordt door bijna alle af spelers ondersteund zo niet allen. Ondersteuning voor andere compressie methoden anders dan 'none' is niet verzekerd.

## 2.8. Opties die alleen op video sporen van toepassing zijn

Option | Description
--- | ---
-f, --fourcc TID:FourCC | Forceert de FourCC naar de opgegeven waarde. Werkt alléén voor video sporen in de 'MS verenigbare mode'.
--display-dimensions TID:widthxheight | Matroska(tm) bestanden bevatten twee waarden die het scherm eigenschappen instelt waarnaar een afspeler met afspelen naar toe zou moeten schalen: scherm breedte en scherm hoogte. Deze waarden worden ingesteld met deze optie, b.v. '1:640x480'.

Een andere manier om de te gebruiken waarden te specificeren is --aspect-ratio of de --aspect-ratio-factor optie (zie hieronder). Deze opties zijn wederzijds - exclusief.

--aspect-ratio TID:ratio|width/height | Matroska(tm) bestanden bevatten twee waarden die de scherm eigenschappen instelt waarnaar een afspeler met afspelen naar toe zou moeten schalen: scherm breedte en scherm hoogte. Met deze optie zal mkvmerge(1) automatisch calculeren het scherm breedte en het scherm hoogte gebaseerd, op de originele beelden/plaatjes breedte en hoogte en de opgegeven verwachte verhouding met deze optie. De verhouding kan één van beiden zijn een veranderbaar nummer verhouding of als een fractie 'breedte/hoogte', b.v. '16/9'.

Een andere manier om de te gebruiken waarden te specificeren is --aspect-ratio-factor of --display-dimensions opties (zie hieronder en hierboven). Deze opties zijn wederzijds - exclusief.

--aspect-ratio-factor TID:factor|n/d | Een andere manier om de verwachtte verhouding te specificeren is een factor. De originele verwachtte verhouding factor wordt eerst vermenigvuldigd met deze factor en daarna gebruikt als doel verhouding. Een andere manier om de te gebruiken waarden te specificeren is --aspect-ratio of --display-dimensions opties (zie boven). Deze opties zijn wederzijds - exclusief.
--cropping TID:left,top,right,bottom | Stelt de video spoor uitsnij parameters in naar een gegeven waarde.
--stereo-mode TID:n|keyword | Stelt de video mode in voor het video spoor met het spoor ID TID. Deze mode kan zijn een nummer n tussen 0 en 14 of één van de volgende: 'mono', 'side_by_side_left_first', 'top_bottom_right_first', 'top_bottom_left_first', 'checkerboard_right_first', 'checkerboard_left_first', 'row_interleaved_right_first', 'row_interleaved_left_first', 'column_interleaved_right_first', 'column_interleaved_left_first', 'anaglyph_cyan_red', 'side_by_side_right_first', 'anaglyph_green_magenta', 'both_eyes_laced_left_first', 'both_eyes_laced_right_first'.

## 2.9. Opties alleen geldig voor tekst ondertitel sporen

Option | Description
--- | ---
--sub-charset TID:character-set | Stelt het karakter set conversie in naar UTF-8 voor UTF-8 ondertitels van een opgegeven spoor ID. Indien niet opgegeven, dan worden het huidig verkregen besturingssysteem locatie gebruikt. Opmerking: een karakter set voor ondertitels is niet nodig wanneer er gelezen wordt vanuit een Matroska(tm) bestand of van Kate stromen, omdat deze altijd zijn opgeslagen in het UTF-8 format. Zie de sectie over tekst bestanden en karakter sets voor een uitleg hoe mkvmerge(1) converteert tussen het verschillende karakter sets.

Deze optie kan meerdere keren worden gebruikt voor een invoer bestand, is van toepassing op verschillende sporen door het spoor ID elke keer te selecteren.

## 2.10. Andere opties

Option | Description
--- | ---
-i, --identify file-name | Zal mkvmerge(1) (met een sonde) een enkel bestand aftasten en het type rapporteren, de sporen in het bestand en hun spoor ID's. Als deze optie wordt gebruikt dan is de enige andere toegestane optie de bestandsnaam.
-I, --identify-verbose file-name | Zal mkvmerge(1) (met een sonde) een enkel bestand aftasten en het type rapporteren, de sporen in het bestand en hun spoor ID's. Als deze optie wordt gebruikt dan is de enige andere toegestane optie de bestandsnaam. Deze optie maakt dat mkvmerge(1) extra informatie uitvoert over de inhoud en elk spoor. De extra informatie staat tussen haken ( [] ). Het bevat een spatie gescheiden sleutel/waarde paar, waar de sleutel en waardes zijn gescheiden door een dubbel punt (:).

Elke waarde wordt overgeslagen conform de regels beschreven in de sectie over: Overslaan van speciale karakter(s) in tekst.

-l, --list-types | Somt invoer bestandstypen op.
--list-languages | Somt alle talen en hun ISO639-2 codes op welke gebruikt kunnen worden met de --language optie.
--priority priority | Stelt het proces prioriteit in waarmee mkvmerge(1) zijn werk doet. Geldige waarden zijn 'lowest', 'lower', 'normal', 'higher' en 'highest'. Is niets ingegeven dan wordt 'normal' gebruikt. Op unix achtige systemen zal mkvmerge(1) gebruiken de nice(2) functie. Daarom kan alléén de 'super' gebruiker die gebruiken 'higher' en 'highest'. Op Windows zijn alle waarden voor iedereen beschikbaar.
--command-line-charset (karakterset) | Plaatst het karakter dat wordt geplaatst om de reeksen om te zetten die op de commandoregel worden ingeven. Het is standaard aan het karakter van het systeem en afhankelijk van het besturingssysteem locatie. Deze instellingen zijn van toepassing op argumenten van de volgende opties: --title, --track-name en --attachment-description.
--output-charset (karakterset) | Stelt het karakter set in, waarnaar de reeksen naar de uitvoer dienen te worden geconverteerd. Standaard wordt gebruikt het karakter set die afhankelijk is van wat er in uw besturingssysteem staat aangegeven (locatie).
-r, --redirect-output (bestandsnaam) | Schrijft alle berichten naar een bestand file-name i.p.v. naar de 'apparaat/houder'. Terwijl dit gemakkelijk met uitvoer omleiden kan worden gedaan er zijn gevallen waarin deze optie nodig is: wanneer de verwerker e.e.a. herinterpreteert voordat het geschreven wordt naar de uitvoer bestand. Het karakter set met --output-charset is toegewezen.
--ui-language code | Forceert de vertaling voor de te gebruiken taal code (b.v. 'de_DE' voor de Duitse taal). Het heeft de voorkeur de 'omgevings variabelen' te gebruiken LANG, LC_MESSAGES en LC_ALL Hoewel opvragen van een 'list' voor een land code zal er voor zorgen dat mkvextract(1) een lijst zal uitvoeren van alle beschikbare vertalingen.
--title onderwerp | Zet debuggen aan voor een specifieke mogelijkheid. Dit is alleen zinvol voor ontwikkelaars.
--tags feature | Zet experimentele mogelijkheden aan. Een lijst van beschikbare mogelijkheden kan worden opgevraagd met mkvmerge --engage list. Deze mogelijkheden zijn niet bedoeld in normale situaties.
@options-file | Leest extra commandoregel informatie uit een bestand options-file. Zie de sectie over option files voor meer informatie.
--capabilities | Somt informatie op over optionele mogelijkheden die zijn gecompileerd en sluit af. De eerste uitvoer regel zal de versie informatie zijn. Alle volgende informatie regels bevatten exact één woord, waarvan de aanwezigheid aangeeft welke eigenschapen er binnenin zijn gecompileerd. Deze mogelijkheden zijn:

- 'BZ2' -- de bzlib(tm) compressie bibliotheek. Heeft effect op de beschikbare compressie methoden voor de --compression optie.

- 'LZO' -- de lzo(tm) compressie bibliotheek. Heeft effect op de beschikbare compressie methoden voor de --compression optie.

- 'FLAC' -- lezen raw FLAC bestanden en behandelen van FLAC sporen in andere inhoudsmaten, b.v. Ogg(tm) of Matroska(tm).

-h, --help | Toon gebruik informatie en sluit af.
-V, --version | Toon versie informatie en sluit af.
--check-for-updates | Controleert online op nieuwere versies via ophalen op adres http://mkvtoolnix-releases.bunkus.org/latest-release.xml. Vier regels worden uitgevoerd in key=value stijl: het adres van waar de informatie wordt verkregen (key version_check_url), de huidig uitgevoerde versie (key running_version), laatst uitgebrachte versie (key available_version en het ophaal adres (key download_url).

Nadien sluit het programma af met een afsluitwaarde van 0 als er geen nieuwere versie beschikbaar is, met een 1 als er een nieuwere beschikbaar is en 2 indien er een fout ontstond (b.v. als de opwaardeer informatie niet verkregen kon worden).

Deze optie is alleen beschikbaar indien het gebouwd is met ondersteuning voor libcurl.

# 3. Gebruik

Voor elk bestand kan de gebruiker selecteren welke sporen mkvmerge(1) zou moeten nemen. Zij zitten allemaal in het bestand gespecificeerd met -o. Een lijst met bekende (en ondersteunde) bron formaten kunnen verkregen worden met de -l optie.

Important:

De volgorde van het commando regel opties zijn belangrijk. Lees a.u.b. de sectie over "Optie volgorde" als je nog onbekend bent met het programma.

# 4. Optie volgorde

Voor sommige opties is de volgorde waarin zij zijn opgegeven belangrijk. Optie's mislukken in twee categorieën:

1. Opties die het programma beïnvloeden en niet verbonden zijn aan enig invoerbestand. Deze omvatten maar zijn niet beperkt tot --command-line-charset, --output of --title. Deze mogen waar dan ook op de commandoregel staan.

2. Opties die één enkel invoerbestand beïnvloedden of spoor in een invoerbestand. Deze opties zijn allen van toepassing op het invoerbestand op de commandoregel. Alle opties naar hetzelfde invoerbestand (of naar sporen in hetzelfde invoerbestand) mogen in elke volgorde geschreven worden zolang deze voor het invoerbestandsnaam staan. Voorbeelden die een invoerbestand beïnvloedden zijn --no-chapters of --chapter-charset. Voorbeelden voor een enkel spoor --default-duration of --language.

De opties worden uitgevoerd van links naar rechts. Indien er een optie meerdere keren is, binnen hetzelfde gebied, dan wordt de laatste gebruikt. Daarom zal de titel gezet worden naar "Iets anders" in het volgende voorbeeld:

    $ mkvmerge -o output.mkv --title 'Dit én Dat' input.avi --title 'Iets anders'

Het volgende voorbeeld toont dat het gebruiken van de optie --language tweemaal OK is, omdat zij andere gebieden gebruiken. Hoewel zij tot hetzelfde spoor ID behoren maar van verschillende invoer bestanden en daarom verschillende gebieden hebben:

    $ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg

# 5. Voorbeelden

Laten we aannemen dat je een bestand genoemd hebt mijn film.avi en het audio spoor in een ander bestand, b.v. 'mijn film.wav'. Dan wil je eerst de audio coderen naar OggVorbis(tm):

    $ oggenc -q4 -omijn film.ogg mijn film.wav

Na een paar minuten kan je de video en audio samenvoegen:

    $ mkvmerge -o mijn film-met-geluid.mkv mijn film.avi mijn film.ogg

Als jouw AVI al een audio spoor bevat dan wordt ook die gekopieerd (als mkvmerge(1) dat audio formaat ondersteunt). Om dat te voorkomen doe simpel

    $ mkvmerge -o mijn film-met-geluid.mkv -A mijn film.avi mijn film.ogg

Na een paar minuten van wikken en wegen rip je een ander audio spoor, b.v. de regisseur zijn commentaar of een andere taal naar 'mijn film-voegtoe-geluid.wav'. Codeer het opnieuw en voeg het samen met het andere bestand:

    $ oggenc -q4 -omijn film-voegtoe-geluid.ogg mijn film-voegtoe-geluid.wav
    $ mkvmerge -o MM-complete.mkv mijn film-met-geluid.mkv mijn film-voegtoe-geluid.ogg

Hetzelfde resultaat kan worden verkregen met

    $ mkvmerge -o MM-complete.mkv -A mijn film.avi mijn film.ogg mijn film-voegtoe-geluid.ogg

Nu mplayer(tm) opstarten en geniet. Als je meerdere audio sporen hebt (of zelfs video sporen) dan kan je aangeven aan mplayer(tm) welk spoor af te spelen met het '-vid' en '-aid' opties. Deze zijn 0 gebaseerd en maken geen onderscheid tussen video en audio.

Indien het nodig is een audio spoor te synchroniseren kan je dat héél makkelijk doen. Achterhaal eerst welk spoor ID het Vorbis spoor bevat

    $ mkvmerge --identify outofsync.ogg

Nu kan je dat ID gebruiken voor de volgende commandoregel:

    $ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg

Dit zou toevoegen 200ms aan stilte aan het begin van het spoor met het ID 12345 genomen van 'outofsync.ogg'.

Sommige films starten correct gesynchroniseerd maar langzaam aan verloopt dat. Voor dit soort films kan je een vertraag factor opgeven die worden toegevoegd aan alle tijd codes -- Er wordt géén data toegevoegd of verwijderd. Dus, als je die factor te klein of te groot maakt dan krijg je een slecht resultaat. Een voorbeeld is, dat een episode die ik heb getranscodeerd met 0.2 seconden uit sync aan het eind van de film, welke 77340 beelden lang was. Bij 29.97fps seconden ongeveer corresponderen met 0.2 seconden. 6 beelden. Dus ik deed

    $ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv

Het resultaat was goed.

De sync opties kunnen ook op de zelfde manier gebruikt worden voor ondertitels.

Voor tekst ondertitels kan je één van beide Windows programma's gebruiken (zoals SubRipper(tm)) of het subrip(tm) pakket te vinden in transcode(1)'s bronnen in de 'contrib/subrip' map. Het algemene proces is:

1. pak een raw ondertiteling uit van de bron:

       $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie

2. converteer het resultaat PGM beeld/plaatje naar tekst met het 'GOCR' programma:

       $ pgm2txt mymovie

3. spellingscontrole voor de resulterende tekst bestanden:

       $ ispell -d american *txt

4. converteer de tekst bestanden naar een SRT bestand:

       $ srttool -s -w -i mymovie.srtx -o mymovie.srt

Het resultaat bestand kan gebruikt worden als een ander invoerbestand voor mkvmerge(1):

    $ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt

Als je een taal wilt opgeven voor een gegeven spoor kan dit héél makkelijk gedaan worden. Zoek eerst de ISO639-2 code voor jouw taal. mkvmerge(1) kan alle codes uitlijsten voor je:

    $ mkvmerge --list-languages

Zoek in de lijst naar de taal die je nodig hebt. Laten we aannemen dat je twee audio sporen aan het Matroska(tm) bestand wilt invoegen en je hun taalcodes wilt instellen terwijl hun spoor ID's zijn 2 en 3. Dit kan gedaan worden met

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.mkv

Zoals je kunt zien, kan je de --language schakelaar meerdere keren gebruiken.

Misschien zou je het ook fijn vinden dat de af speler standaard de Nederlandse taal gebruikt. Als je ook nog extra ondertitelingen hebt zoals b.v. Engels, Frans, en je wilt dat de af speler de Franse als standaard gebruikt. Kan je dit doen met

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track 3 without-lang-codes.mkv --language 0:eng english.srt --default-track 0 --language 0:fre french.srt

Als je de taal of de standaard spoor markering niet ziet, welke je had opgegeven in mkvinfo(1)'s uitvoer lees dan a.u.b. de sectie over standaard waarden.

Zet de compressie uit voor een invoer bestand

    $ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt

# 6. Spoor ID's

Sommige opties voor mkvmerge(1) hebben een spoor ID nodig, om aan te geven op welk spoor zij zouden moeten worden toegepast. Die spoor ID's worden getoond door de lezers bij het samenvoegen van het huidige invoer bestand, of als mkvmerge(1) is opgeroepen met de --identify optie. Een voorbeeld van een dergelijke uitvoer:

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

Verwar de spoor ID's niet met welke zijn toegewezen aan spo(o)r(en) in het uitvoer MKV bestand met het spoor ID van het invoerbestand. Alleen het invoerbestand spoor ID's worden gebruikt voor opties die deze waarde nodig hebben.

Opmerking: Dat elk invoerbestand zijn eigen spoor ID's heeft. Daarom het spoor ID voor bestand 'file1.ext gerapporteerd wordt door 'mkvmerge --identify' verander niets, ongeacht hoeveel invoerbestanden in welke positie dan ook 'file1.ext' wordt gebruikt.

Spoor ID's worden toegewezen zoals dit:

- AVI bestanden: Het video spoor heeft het ID 0. De audio sporen krijgen de ID's in oplopende volgorde beginnend bij 1.

- AAC, AC3, MP3, SRT en WAV bestanden: Het 'spoor' in dat bestand krijgt het ID 0.

- Meeste andere bestanden: De spoor ID's worden toegekend volgens de volgorde zoals het gevonden is in het bestand startend bij 0.

Het speciale spoor ID '-1' is de 'joker' en past de bepaalde schakelaar toe op alle sporen die van een invoerbestand worden gelezen.

De opties die de spoor ID's gebruiken zijn degenen die de beschrijvingen bevatten 'TID'. De volgende optie gebruikt het spoor ID ook: --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks en --track-tags.

# 7. Tekst bestanden en karakter set conversies

Note:

Deze sectie is van toepassing op alle programma's in MKVToolNix zelfs wanneer alléén mkvmerge(1) genoemd wordt.

Alle teksten in Matroska(tm) bestanden zijn gecodeerd in UTF-8. Dit betekend, dat mkvmerge(1) alle de te lezen tekst bestanden moet converteren en evenals elke ingegeven tekst op de commandoregel om elk karakter te zetten naar UTF-8. Teruggekoppeld betekend dit ook, dat mkvmerge(1)'s uitvoer terug geconverteerd moet worden naar die karakter set van UTF-8, b.v. als een niet Engelse vertaling is gebruikt met --ui-languages of voor de originele tekst uit een Matroska(tm) bestand.

mkvmerge(1) doet deze conversie automatisch gebaseerd op de aanwezigheid van een Byte Order Marker (byte volgorde markering) (kort: BOM) of op basis van het huidige besturingssysteem locatie. Hoe het karakter van de locatie wordt 'achterhaald' hangt af van het besturingssysteem waarop mkvmerge(1) is opgestart.

Tekst bestanden die starten met BOM (byte volgorde markering) zijn al gecodeerd in de vertegenwoordiging van UTF. mkvmerge(1) ondersteund één van de volgende vijf modes: UTF-8, UTF-16 Little en Big Endian, UTF-32 Little en Big Endian. Tekst bestanden met een BOM (byte volgorde markering) worden automatisch geconverteerd naar UTF-8. Elke van de parameters die gezet zouden zijn voor een dergelijk bestand (b.v. --sub-charset) worden stilletjes genegeerd.

Op Unix-achtige systemen gebruikt mkvmerge(1) de setlocale(3) besturingssysteem oproep, welke beurtelings de omgevingsvariabelen gebruikt LANG, LC_ALL en LC_CYPE. Het resulterende karakter set is vaak één van de UTF-8 of de ISO-8859-* familie en wordt gebruikt voor alle tekst bestand operaties en voor het coderen van reeksen op de commandoregel voor een uitvoer naar de apparaat/houder.

Met Windows zijn er eigenlijk twee karakter sets welke mkvmerge(1) gebruikt, door de manier waarop het Windows commandoregel programma cmd.exe is geïmplementeerd. Het eerste karakter set wordt bepaald door een vraag met de GetCP() besturingssysteem oproep. Deze karakter set wordt standaard gebruikt voor tekst bestand conversie en voor alle elementen getoond met het GUI programma in het MKVToolNix pakket.

Een andere karakterset kan worden gebruikt als cmd.exe is gebruikt. Echter, is het lezen van de opdrachtregel gedaan met de GetCommandLineW() functie welke al een Unicode reeks retourneert. Daarom wordt de optie --command-line-charset genegeerd door Windows. Uitvoer naar console wordt gedaan met de WriteConsoleW() functie. Daarom de optie --output-charset wordt alleen gebruikt in Windows als de uitvoer is geredigeerd met --redirect-output.

Als de volgende optie aanwezig is dan is het toegestaan het karakter set te specificeren:

- --sub-charset voor tekst ondertitels en tekst ondertitel sporen opgeslagen in de houder formaat waarvan de karakter set niet onomstotelijk kan worden vastgesteld (b.v. Ogg bestanden),

- --chapter-charset voor tekst hoofdstuk bestanden en voor hoofdstukken en bestand titels opgeslagen in de houder formaat waarvan de karakter set niet onomstotelijk kan worden vastgesteld (b.v. Ogg bestanden voor hoofdstuk informatie, spoor en bestand titels etc.; MP4 bestanden voor hoofdstuk informatie),

- --command-line-charset voor alle ingaven op de commandoregel,

- --output-charset voor alle reeksen geschreven naar de apparaat/houder of naar een bestand wanneer de uitvoer is omgeleid met de --redirect-output optie.

# 8. Optie bestanden

Een optiebestand is een mkvmerge(1) bestand; waaruit extra commandoregel argumenten gelezen kunnen worden Dit kan worden gebruikt om bepaalde beperkingen van het dos scherm of het besturingssysteem bij het uitvoeren van externe programma's zoals een beperkte opdrachtregel lengte te omzeilen.

Er zijn verschillende regels betreffende bestand opties. Regels waarvan de eerste niet-scheidingsteken een hekje is ('#') worden afgehandeld als commentaar en worden genegeerd. Een spatie aan het eind en begin van een regel worden verwijderd. Elke regel mag exact één optie bevatten.

Een regel die niets bevat wordt ook genegeerd. Een leeg argument wordt gepresenteerd via de regel '#EMPTY#'.

Verschillende karakters kunnen worden overgeslagen, b.v. als het nodig is een niet commentaar regel te starten met '#'. Deze regels worden beschreven in de sectie over: Overslaan van speciale karakter(s) in tekst.

Opmerking: backslashes ('\') moeten altijd ingesloten worden. Hash markeringen ('#') moeten ingesloten worden indien die niet starten met een commentaar.

De commandoregel 'mkvmerge -o "mijn bestand.mkv" -A "een film.avi" geluid.ogg' kan geconverteerd worden naar het volgende optie bestand:

    # Write to the file "c:\Matroska\my file.mkv" on Windows.
    -o
    c:\\Matroska\\my file.mkv
    # Set the title to '#65'.
    --title
    \h65
    # Only take the video from "a movie.avi".
    -A
    een film.avi
    geluid.ogg

# 9. Overslaan van speciale karakter(s) in tekst

Er zijn een paar plaatsen waar speciale karakters zouden of moeten worden overgeslagen. De regels voor het overslaan zijn simpel: elk karakter dat overgeslagen dient te worden wordt vervangen door een backslash "\" gevolgd door een ander karakter.

De regels zijn: ' ' (een spatie) wordt '\s', '"' (dubbele aanhalingstekens) wordt '\2', ':' wordt '\c', '#' wordt '\h' en '\' (een enkele (backslash) zelf wordt '\\'.

# 10. Ondertitelingen

Er zijn verschillende tekst ondertitel formaten welke kunnen worden 'ingebakken' in Matroska(tm). Tekst ondertitels moet worden her gecodeerd naar UTF-8 zodat deze juist kunnen worden getoond door een afspeler (zie de sectie over tekst bestanden en karakter sets voor een uitleg hoe mkvmerge(1) converteert tussen het verschillende karakter sets). Kate ondertitels zijn al gecodeerd met UTF-8 en hoeven niet gehercodeerd te worden.

De volgende ondertitel formaten worden momenteel ondersteund:

- Ondertitel stripper (SRT) bestand(en)

- Substation Alpha (SSA) / Advanced Substation Alpha scripts (ASS)

- Universeel ondertitel format (USF) bestand

- OggKate stromen

- VobSub bitmap ondertitel bestanden

- PGS bitmap ondertitel bestanden zoals gevonden op BluRay schijven

# 11. Bestand linken

Matroska(tm) ondersteunt bestand linken welke eenvoudig zegt, dat een specifiek bestand de voorganger of de opvolger van het huidige bestand is. Om precies te zijn, het zijn niet echt de bestanden die gelinkt zijn maar de Matroska(tm) segmenten. En de meeste bestanden bevatten alleen één Matroska(tm) segment de volgende uitleg gebruikt de term 'bestand linken' hoewel 'segment linken' meer op zijn plaats zou zijn.

Elk segment wordt geïdentificeerd door een uniek 128 bit lang segment UID. Dit UID wordt automatisch gegenereerd door mkvmerge(1). Het linken wordt primair gedaan via het zetten van het segment UID's (kort: SID) van het volgende/vorige bestand naar het segment kop informatie. mkvinfo(1) print deze SID's als het hen vindt.

Als een bestand wordt gesplitst in meerdere kleinere bestanden en linken wordt gebruikt, dan zullen de tijd codes niet opnieuw starten op 0 maar doorgaan op daar waar het vorige bestand eindigde. Op deze manier zal absolute de tijd code behouden blijven, zelfs wanneer het vorige bestand niet aanwezig/beschikbaar is (b.v. bij 'streaming''). Als er géén linken is gebruikt, dan zouden de tijd codes moeten starten op 0 voor elk bestand. Standaard gebruikt mkvmerge(1) bestand linken niet. Als je wilt kan je dit aanzetten met de --link optie. Deze optie is alléén nuttig wanneer ook het splitsen actief is.

Ongeacht of het splitsen actief is of niet, de gebruiker kan mkvmerge(1) vertellen het geproduceerde bestand te linken naar een specifieke SID's. Dit wordt bereikt met de opties --link-to-previous en --link-to-next. Deze opties accepteren een segment SID in het formaat dat mkvinfo(1) uitvoert: 16 hexadecimale nummers tussen 0x00 en 0xff voorgevoegd met '0x' elk, b.v. '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. Als alternatief kan een kortere vorm worden gebruikt: 16 hexadecimale nummers tussen 0x00 en 0xff zonder de '0x' voorvoegsel en zonder spaties, b.v. '41da7366d9cfb21eae78ebb45ecab393'.

Als splitsen wordt gebruikt, dan is het eerste bestand gelinkt naar het SID gegeven met --link-to-previous en het laatste bestand is gelinkt naar SID gegeven met --link-to-next. Als splitsen niet is gebruikt, dan zal één uitvoer bestand worden gelinkt met twee van de beide SIDs.

# 12. Standaard waarden

De Matroska(tm) de specificatie verklaart dat sommige elementen een standaard waarde hebben. Gewoonlijk wordt een element niet naar het bestand geschreven als het niet gelijk is aan de standaard waarde, dit om ruimte te besparen. De elementen die gebruiker zou kunnen missen in mkvinfo(1)'s uitvoer, zijn de language (taal) en de default track flag (standaard spoor markering) elementen. De standaard waarde voor de language (taal) is English (is Engels) ('eng'), en de standaard waarde voor de standard track flag (standaard spoor markering) is true (waar). Als je daarom gebruikt de --language 0:eng voor een spoor, dan zal deze niet verschijnen in de mkvinfo(1)'s uitvoer.

# 13. Bijlagen

Misschien wilt u ook sommige foto's samen met uw Matroska(tm) bestand houden of je gebruikt SSA ondertitels en je wilt een speciaal TrueType(tm) lettertype(n) gebruiken welke zeldzaam zijn. In deze gevallen kan je deze bestanden vastmaken aan het Matroska(tm) bestand. Zij zullen niet enkel bijgevoegd worden aan het bestand maar er ingevoegd worden. Een afspeler kan deze bestanden tonen (de 'foto' gevallen) of hen gebruiken om de ondertitels te genereren (de 'TrueType(tm) lettertype' gevallen).

Hier is een voorbeeld hoe een foto en een TrueType(tm) lettertype aan het uitvoerbestand kan vast te maken:

    $ mkvmerge -o output.mkv -A video.avi sound.ogg \
      --attachment-description "Me and the band behind the stage in a small get-together" \
      --attachment-mime-type image/jpeg \
      --attach-file me_and_the_band.jpg \
      --attachment-description "The real rare and unbelievably good looking font" \
      --attachment-type application/octet-stream \
      --attach-file really_cool_font.ttf

Als een Matroska(tm) bestandsbijlage bevat en is gebruikt als een invoer bestand dan zal mkvmerge(1) de bijlage kopiëren naar een nieuw bestand. De selectie, welke bijlage wordt gekopieerd en welke niet kan veranderd worden met de opties --attachments en --no-attachments.

# 14. Hoofdstukken

Het Matroska(tm) hoofdstuk systeem is krachtiger dan het oude bekende systeem van OGM bestanden. De volledige specificatie kan gevonden worden op de Matroska website.

mkvmerge(1) ondersteunt twee soorten van hoofdstuk bestanden als invoer. Het eerste formaat, genoemd 'simpel hoofdstuk format', is hetzelfde format dat het OGM hulpmiddel verwacht. Het tweede format is een XML gebaseerd hoofdstuk format welke alle Matroska(tm)'s hoofdstuk functionaliteiten ondersteunt.

## 14.1. Een eenvoudig hoofdstuk formaat

Dit formaat bestaat uit twee paren van regels die respectievelijk starten met 'CHAPTERxx=' en 'CHAPTERxxNAME='. De eerste bevat de start tijd code en de tweede bevat de titel. Hier is een voorbeeld:

    CHAPTER01=00:00:00.000
    CHAPTER01NAME=Intro
    CHAPTER02=00:02:30.000
    CHAPTER02NAME=Baby prepares to rock
    CHAPTER03=00:02:42.300
    CHAPTER03NAME=Baby rocks the house

mkvmerge(1) zal elk paar of regels transformeren naar één Matroska(tm) ChapterAtom. Het plaatst geen ChapterTrackNumber Wat inhoudt, dat de hoofdstukken van toepassing zijn aan alle sporen in het bestand.

Omdat dit een tekst bestand is kan karakter set conversie nog nodig zijn. Zie de sectie over tekst bestanden en karakter sets voor een uitleg hoe mkvmerge(1) converteert tussen karakter sets.

## 14.2. Het XML gebaseerde hoofdstuk formaat

Het XML gebaseerde hoofdstuk formaat lijkt op dit voorbeeld:

    <?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>A short chapter</ChapterString>
            <ChapterLanguage>eng</ChapterLanguage>
          </ChapterDisplay>
          <ChapterAtom>
            <ChapterTimeStart>00:00:46.000</ChapterTimeStart>
            <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
            <ChapterDisplay>
              <ChapterString>A part of that short chapter</ChapterString>
              <ChapterLanguage>eng</ChapterLanguage>
            </ChapterDisplay>
          </ChapterAtom>
        </ChapterAtom>
      </EditionEntry>
    </Chapters>

Met deze format zijn drie dingen mogelijk die niet mogelijk zijn met het simpele hoofdstuk format:

1. De tijdmarkering voor het hoofdstuk eind kan ingegeven worden,

2. Hoofdstukken mogen ingekapseld zijn

3. De taal en het land mogen ingesteld worden

De mkvtoolnix distributie bevat meerdere voorbeeld bestanden in de doc sub map welke als basis gebruikt kan worden.

Hieronder vindt u de ondersteunde XML-markeringen, hun data types en, in voorkomend geval, het geldige bereik voor hun waarden:

    Chapters (master)
      EditionEntry (master)
        EditionUID (unsigned integer, valid range: 1 <= value)
        EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1)
        ChapterAtom (master)
          ChapterAtom (master)
          ChapterUID (unsigned integer, valid range: 1 <= value)
          ChapterTimeStart (unsigned integer)
          ChapterTimeEnd (unsigned integer)
          ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
          ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1)
          ChapterSegmentUID (binary, valid range: 1 <= length in bytes)
          ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value)
          ChapterPhysicalEquiv (unsigned integer)
          ChapterTrack (master)
            ChapterTrackNumber (unsigned integer, valid range: 1 <= value)
          ChapterDisplay (master)
            ChapterString (UTF-8 string)
            ChapterLanguage (UTF-8 string)
            ChapterCountry (UTF-8 string)
          ChapterProcess (master)
            ChapterProcessCodecID (unsigned integer)
            ChapterProcessPrivate (binary)
            ChapterProcessCommand (master)
              ChapterProcessTime (unsigned integer)
              ChapterProcessData (binary)

## 14.3. Algemene opmerkingen

Bij het splitsen van bestanden dan zal mkvmerge(1) tevens de hoofdstukken juist bijstellen. Dit betekent, dat elk bestand slechts de hoofdstukingangen omvat waarop het van toepassing is, en dat de tijd codes worden gecompenseerd om te voldoen aan de nieuwe tijd codes van elk uitvoer bestand.

mkvmerge(1) is in staat hoofdstukken te kopiëren van Matroska(tm) bronbestanden tenzij dit expliciet is uitgezet met de --no-chapters optie. De hoofdstukken van alle bronnen (Matroska(tm) bestanden, Ogg bestanden, MP4 bestanden, hoofdstuk tekst bestanden) worden gewoonlijk niet samengevoegd maar eindigen als een gescheiden ChapterEditions. Alleen wanneer de hoofdstukken worden gelezen van verschillende Matroska(tm) of XML bestanden die dezelfde editie UID's delen, zullen hoofdstukken samengevoegd worden tot één ChapterEdition. Als een dergelijke samenvoeging ook in andere situaties gewenst is, dan dient de gebruiker de hoofdstukken eerst te extraheren uit alle bronnen met mkvextract(1), handmatig de XML bestanden aaneenkoppelen en nadien samenvoegen.

# 15. Markeringen

## 15.1. Introductie

Matroska(tm) ondersteunt een uitgebreide set markeringen welke zijn verouderd, een nieuw simpeler systeem welke worden gebruikt in de meeste overige inhoudsformaten: KEY=VALUE. Hoewel, in Matroska(tm) deze markeringen ook kunnen worden ingekapseld, en beide de KEY en de VALUE zijn elementen van zichzelf. Het voorbeeld bestand example-tags-2.xml toont hoe dit nieuwe systeem te gebruiken.

## 15.2. Gebied van de markeringen

Matroska(tm) markeringen worden niet automatisch toegekend aan het hele bestand. Dat kunnen zij, maar zij kunnen ook op verschillende delen van het bestand van toepassing zijn: aan één of meerdere sporen, aan één of meerdere hoofdstukken, of zelfs een combinatie van beide. De Matroska specificaties geeft meer informatie over dit feit.

Eén belangrijk feit is, dat markeringen gelinkt zijn naar sporen of hoofdstukken met de Targets Matroska(tm) markeer element, en dat de gebruikte UID's voor dit linken niet zijn, de spoor ID's die overal door mkvmerge(1) gebruikt worden. In plaats daarvan, zijn de gebruikte UID's nummers welke mkvmerge(1) automatisch uitrekent (als het spoor genomen is anders dan van een Matroska(tm) bestandsformat) of welke zijn gekopieerd van een bronbestand, als de sporen bronbestand een Matroska(tm) bestand is. Daarom is het moeilijk te bepalen, welke UID's te gebruiken in het markeer bestand voordat het bestand wordt overgedragen naar mkvmerge(1).

mkvmerge(1) kent twee opties waarmee je markeringen kunt toevoegen aan Matroska(tm) bestanden: De --global-tags en de --tags opties. Het verschil is dat de vroegere optie, --global-tags, de markeringen zal maken die op het volledige bestand van toepassing zijn, door te verwijderen (welke dan ook) Targets elementen hierboven genoemd. De laatstgenoemde optie, --tags, voegt automatisch het UID die mkvmerge(1) genereert voor de markering gespecificeerd met het TID deel van de--tags opties.

## 15.3. Voorbeeld

Laten we aannemen, dat je een markering wilt toevoegen aan een video spoor gelezen van een AVI. mkvmerge --identify file.avi vertelt je, dat het video spoor ID (verwar dit ID niet met het UID!) 0 is. Zodat het jouw markeer bestand kan creëren, laat weg alle Targets elementen en start mkvmerge(1) op:

    $ mkvmerge -o file.mkv --tags 0:tags.xml file.avi

## 15.4. Markeer bestandsformaat

mkvmerge(1) ondersteunt een XML gebaseerde markeer bestand format. Het format is rijkelijk gedocumenteerd op de Matroska specificaties. Beide, zowel het binaire evenals de bron distributies van MKVToolNix komen met een voorbeeld bestand genaamd example-tags-2.xml welke simpelweg alle bekende markeringen opsomt, welke gebruikt kunnen worden als basis voor 'echte leven' markeringsbestanden.

De basis is:

- Het buitenste element moet zijn <Tags>.

- Eén logische markering welke binnenin één paar bevindt van <Tag> XML markeringen.

- Spaties direct voor en na een markering worden genegeerd.

## 15.5. Data typen

Het nieuwe Matroska(tm) markeer systeem kent alléén twee data typen, een UTF-8 reeks en een binair type. De eerste wordt gebruikt voor markeer namen en het <String> element terwijl het binaire type gebruikt word voor het <Binary> element.

Aangezien binaire gegevens zelf niet zouden passen in een XML bestand, ondersteunt mkvmerge(1) twee andere methoden om binaire data op te slaan. Als de inhoud van een XML markering start met '@' dan wordt de volgende tekst behandeld als een bestandsnaam. De corresponderende bestandsinhoud wordt gekopieerd in een Matroska(tm) element.

Anders zou de gegeven data moeten zijn een gecodeerde Base64. Dit is een codering die binaire data codeert naar een gelimiteerde set van ASCII karakters en wordt gebruikt in b.v. email programma's. mkvextract(1) zal uitvoeren Base64 gecodeerde data voor binaire elementen.

Het verouderde markeer systeem kent een paar meer data typen welke gevonden kunnen worden in de officiële Matroska(tm) markeer specificaties. Aangezien in mkvmerge(1) dit systeem niet meer wordt ondersteund, worden deze typen hier niet beschreven.

## 15.6. Bekende markeringen voor het XML bestandsformaat

Hieronder vindt u de ondersteunde XML-markeringen, hun data types en, in voorkomend geval, het geldige bereik voor hun waarden:

    Tags (master)
      Tag (master)
        Targets (master)
          TargetTypeValue (unsigned integer)
          TargetType (UTF-8 string)
          TrackUID (unsigned integer)
          EditionUID (unsigned integer)
          ChapterUID (unsigned integer)
          AttachmentUID (unsigned integer)
        Simple (master)
          Simple (master)
          Name (UTF-8 string)
          TagLanguage (UTF-8 string)
          DefaultLanguage (unsigned integer)
          String (UTF-8 string)
          Binary (binary)

# 16. Het segment informatie XML bestanden

With a segment info XML file it is possible to set certain values in the "segment information" header field of a Matroska(tm) file. All of these values cannot be set via other command line options.

Overige "segment informatie" kopvelden kunnen gezet worden via de commandoregel opties maar niet via een XML bestand. Inclusief b.v. de --title en de --timecode-scale opties.

Er zijn nog andere elementen die kunnen worden ingesteld noch via commandoregel opties, noch via de XML-bestanden. Deze bevatten de volgende elementen: DateUTC (ook bekend als "muxing date"), MuxingApp, WritingApp en Duration. Ze worden altijd gezet door mkvmerge(1) zelf.

Hieronder vindt u de ondersteunde XML-markeringen, hun data types en, in voorkomend geval, het geldige bereik voor hun waarden:

    Info (master)
      SegmentUID (binary, valid range: length in bytes == 16)
      SegmentFilename (UTF-8 string)
      PreviousSegmentUID (binary, valid range: length in bytes == 16)
      PreviousSegmentFilename (UTF-8 string)
      NextSegmentUID (binary, valid range: length in bytes == 16)
      NextSegmentFilename (UTF-8 string)
      SegmentFamily (binary, valid range: length in bytes == 16)
      ChapterTranslate (master)
        ChapterTranslateEditionUID (unsigned integer)
        ChapterTranslateCodec (unsigned integer)
        ChapterTranslateID (binary)

# 17. Matroska bestand layout

Het Matroska(tm) layout bestand is redelijk flexibel. mkvmerge(1) zal een bestand genereren op een vooraf gedefinieerde manier. Het resultaat zal er zo uitzien:

[EBML head] [segment {meta seek #1} [segment information] [track information] {attachments} {chapters} [cluster 1] {cluster 2} ... {cluster n} {cues} {meta seek #2} {tags}]

De elementen in gekromde haakjes zijn optioneel en afhankelijk van de inhoud en de gebruikte opties. Een paar opmerkingen:

- meta zoek #1 bevat slechts een klein aantal aan niveau 1 elementen, en alleen als deze ook werkelijk bestaan: bijlagen, hoofdstukken, volg document(en) (cue), markeringen, meta zoek #2. Oudere versies van mkvmerge(1) zijn tevens gewend om clusters binnenin het meta zoek element te plaatsen. Daarom was het noodzakelijk ietwat onnauwkeurig te gokken om genoeg ruimte te reserveren. Het faalde vaak. Nu worden alleen clusters opgeslagen in het meta zoek #2, en meta zoek #1 verwijst naar het meta zoek element #2.

- Bijlage, hoofdstuk en markeer elementen zijn alléén aanwezig indien zij waren toegevoegd.

The shortest possible Matroska(tm) file would look like this:

[EBML head] [segment [segment information] [track information] [cluster 1]]

Dit kan het geval zijn voor alléén-audio bestanden.

# 18. Externe tijd code bestanden

mkvmerge(1) staat de gebruiker toe, de tijd codes voor een specifiek spoor zelf te kiezen. Dit kan worden gebruikt, om bestanden met de variabele video beeld verhouding te creëren of 'gaten' in audio te laten bevatten. Een beeld in dit geval, is de unit welke mkvmerge(1) afzonderlijk creëert per Matroska(tm) blok. Voor video is dit exact één beeld, voor audio is dit één pakket van het specifieke audio type b.v. voor AC3 zou dit een pakket moeten zijn inhoudende 1536 voorbeelden.

Tijd code bestanden die worden gebruikt wanneer de sporen aan elkaar worden toegevoegd, moeten alleen voor het eerste deel in een reeks van sporen worden gespecificeerd. Bijvoorbeeld, als je twee bestanden toevoegt, v1.avi en v2.avi, en je wilt tijd codes gebruiken dan moet je commandoregel lijken op dit:

    $ mkvmerge ... --timecodes 0:my_timecodes.txt v1.avi +v2.avi

Er zijn vier formaten die worden herkend door mkvmerge(1). De eerste regel bevat altijd het versie nummer. Lege regels, regels alleen bevattende spaties en regels beginnend met '#' worden genegeerd.

## 18.1. Tijd code bestandsformaat v1

Dit format start met de versie regel. De tweede regel verklaart het aantal beelden per seconde. Alle volgende regels bevatten drie nummers gescheiden door een komma: het start beeld (0 is het eerste beeld), het eind beeld en het aantal beelden binnen dit bereik. Het FPS veranderbaar nummer met een punt '.' als het decimale punt. De bereiken kunnen 'gaten' bevatten waarvoor standaard FPS is gebruikt. een voorbeeld:

    # timecode format v1
    assume 27.930
    800,1000,25
    1500,1700,30

## 18.2. Tijd code formaat v2

In dit format, bevat elke regel een tijd code voor het corresponderende beeld. Deze tijd code moet opgeven worden in milli seconden. Het mag een veranderbaar nummer zijn, maar het hoeft niet. Jij moet minstens zo veel tijd coderegels opgeven als er aan beelden in het spoor zijn. De tijd codes in dit bestand moeten gesorteerd zijn. Voorbeeld voor 25fps:

    # timecode format v2
    0
    40
    80

## 18.3. Tijd code formaat v3

In dit format bevat elke regel een duur in seconden gevolgd door een optioneel aantal beelden per seconde. Beide kunnen een veranderbaar nummer zijn. Als het aantal beelden per seconde niet is opgegeven dan wordt het standaard aantal gebruikt. Voor audio, zou jij de codec zelf de tijd codes moeten laten berekenen. Daarvoor zou je moeten gebruiken 0.0 als het aantal beelden per seconde. Je kunt ook 'gaten' creëren in de stromen door te gebruiken de 'gap' sleutelwoord gevolgd door de duur van het 'gat'. Voorbeeld voor een audio bestand:

    # timecode format v3
    assume 0.0
    25.325
    7.530,38.236
    gap, 10.050
    2.000,38.236

## 18.4. Tijd code formaat v4

Dit format is identiek aan het v2 format. Het enige verschil is dat de tijd codes niet gesorteerd behoeven te zijn. Dit format zou bijna nooit gebruikt moeten worden.

# 19. Verlaat codes

mkvinfo(1) verlaat met één van de drie afsluit codes:

- 0 -- Deze verlaat code betekend dat het samenvoegen succesvol voltooid is.

- 1 -- In dit geval heeft mkvmerge(1) ten miste één waarschuwing uitgevaardigd, maar het samenvoegen ging door. Een waarschuwing gaat vooraf met de tekst 'Warning:'. Afhankelijk van de 'tegengekomen' kwesties kan het resultaat goed of slecht zijn. De gebruiker wordt geadviseerd om zowel de waarschuwing als de resulterende bestanden te controleren.

- 2 -- Deze afsluit code wordt gebruikt nadat er een fout ontstond. mkvmerge(1) breekt direct af na het geven van dit waarschuw bericht. Fout! bereik in berichten, van een verkeerd commandoregel argument over lees/schrijf fouten naar een 'gebroken' bestanden.

# 20. Omgevingsvariabelen

mkvmerge(1) gebruikt de standaard variabelen vanuit het systeem locatie (b.v. LANG en de LC_* family). Extra variabelen:

Option | Description
--- | ---
MKVTOOLNIX_DEBUG en de korte versie MTX_DEBUG | De inhoud wordt behandeld alsof het via de --debug optie gepasseerd is.
MKVTOOLNIX_ENGAGE en de korte versie MTX_ENGAGE | De inhoud wordt behandeld alsof het via de --engage optie gepasseerd is.
MKVTOOLNIX_OPTIONS en de korte versie MTX_OPTIONS | De inhoud wordt gesplitst op een spatie. De gedeeltelijk resulterende reeks wordt behandeld alsof het gedaan is via de commandoregel. Indien het nodig is speciale karakters te gebruiken (b.v. spaties) dan moet je die "insluiten" (zie de sectie over: Overslaan van speciale karakter(s) in tekst).

# 21. Zie ook

mkvinfo(1), mkvextract(1), mkvpropedit(1), mmg(1)

# 22. WWW

De laatste versie kan altijd gevonden worden op de MKVToolNix thuis basis.