MKVMERGE(1) | Gebruiker commandos | MKVMERGE(1) |
mkvmerge - Voegt multimedia stromen in een Matroska bestand in.
mkvmerge [global options] {-o out} [options1] {file1} [[options2] {file2}] [@options-file.json]
Dit programma neemt de invoer van verschillende media bestanden en voegt die stromen samen (allemaal of slechts een stukje) naar een Matroska bestand; zie de Matroska[1] website.
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.
-v, --verbose
-q, --quiet
-o, --output file-name
-w, --webm
For chapters and tags only a subset of elements are allowed. mkvmerge(1) will automatically remove all elements not allowed by the specification.
--title title
--default-language language-code
The default language code is 'und' for 'undetermined'.
--segmentinfo filename.xml
Zie de sectie over: Het segment informatie XML bestanden zie hieronder voor details.
--segment-uid SID1,SID2,...
If SID starts with = then its rest is interpreted as the name of a Matroska file whose segment UID is read and used.
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.
--chapter-language language-code
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.
The language set with this option is also used when chapters are generated with the --generate-chapters option.
--chapter-charset character-set
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.
--chapter-sync d[,o[/p]]
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.
--generate-chapters mode
This mode also works with split modes 'parts:' and 'parts-frames:'. For these modes one chapter will be generated for each appended timestamp range (those whose start timestamps are prefixed with '+').
Example: --generate-chapters interval:45s
The names for the new chapters are controlled by the option --generate-chapters-name-template. The language is set with --chapter-language which must occur before --generate-chapters.
--generate-chapters-name-template template
There are several variables that can be used in the template that are replaced by their actual values when a chapter is generated. The string '<NUM>' will be replaced by the chapter number. The string '<START>' will be replaced by the chapter's start timestamp.
The strings '<FILE_NAME>' and '<FILE_NAME_WITH_EXT>' are only filled when generating chapters for appended files. They will be replaced by the appended file's name without respectively with its extension. Note that only the file's base name and extension are inserted, not its directory or drive components.
You can specify a minimum number of places for the chapter number with '<NUM:places>', e.g. '<NUM:3>'. The resulting number will be padded with leading zeroes if the number of places is less than specified.
You can control the format used by the start timestamp with <START:format>. The format defaults to '%H:%M:%S' if none is given. Valid format codes are:
--cue-chapter-name-format format
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:
--chapters file-name
--global-tags file-name
--track-order FID1:TID1,FID2:TID2,...
--cluster-length spec
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.
--clusters-in-meta-seek
--timestamp-scale factor
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.
--enable-durations
--no-cues
--no-date
--disable-lacing
--disable-track-statistics-tags
Enabling this option prevents mkvmerge(1) from writing those tags and from touching any existing tags with same names.
--disable-language-ietf
--normalize-language-ietf mode
In the canonical form all subtags for which preferred values exist are replaced by those preferred values. This converts e.g. 'zh-yue-jyutping' to 'yue-jyutping' or 'fr-FX' to 'fr-FR'.
For the extended language subtags form the canonical form is built first. Afterwards all primary languages for which an extended language subtag exists are replaced by that extended language subtag and its prefix. This converts e.g. 'yue-jyutping' back to 'zh-yue-jyutping' but has no effect on 'fr-FR' as 'fr' is not an extended language subtag.
--split specification
At the moment mkvmerge(1) supports the following modes:
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.
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 van de huidige inhoud deze limiet bereikt heeft, wordt er een nieuw uitvoer bestand gestart.
De 'duration:' mag vanwege de verenigbaarheid (compatibiliteit) weggelaten worden.
Ingaven: --split timestamps:A[,B[,C...]]
Voorbeeld: --split timestamps: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 'timestamps:' voorvoegsel mag niet wegelaten worden.
Ingaven: --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
Voorbeeld:
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).
Als een eind tijd code is weggelaten, dan is standaard het einde van de bronbestanden die in feite mkvmerge(1) vertelt om de rest te houden (zie voorbeeld 3)
Normaal gesproken wordt elk bereik weggeschreven naar een nieuw bestand. Dit kan worden veranderd, zodat opeenvolgende reeksen worden geschreven in hetzelfde bestand. Daarvoor moet de gebruiker de start tijd code voorzetten met een +. Dit vertelt mkvmerge(1) om niet een nieuw bestand aan te maken en in plaats daarvan het bereik toe te voegen aan hetzelfde bestand die in de vorige reeks is geschreven. Tijdcodes zullen worden aangepast, zodat er géén gat ontstaat in het uitvoerbestand, zelfs als er een gat in de twee bereiken in het invoerbestand waren.
In voorbeeld 1 zal mkvmerge(1) twee bestanden aanmaken. De eerste bevat de inhoud startend vanaf 00:01:20 tot 00:02:45. De tweede zal de inhoud bevatten vanaf 00:05:50 tot 00:10:30.
In voorbeeld 2 zal mkvmerge(1) slechts één bestand aanmaken. Dit bestand zal beide inhoud bevatten startend van 00:01:20 tot 00:02:45 en de inhoud startend van 00:05:50 tot 00:10:30.
In voorbeeld 3 zal mkvmerge(1) twee bestanden aanmaken. De eerste bevat de inhoud vanaf het beging van het bron bestanden tot 00:02:45. Het tweede bevat de inhoud startend vanaf 00:05:50 tot het eind van het bron bestanden.
Ingaven: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
Voorbeeld:
De parts-frames mode vertelt mkvmerge(1) bepaalde bereiken van beeld/veld nummers te behouden en anderen over te slaan. De te behouden bereiken moeten uit gelijst worden na de parts-frames: sleutelwoord en gescheiden door een komma. Het bereik zelf bestaat uit een start en een eind beeld/veld nummer. Nummering start op 1.
Als een start nummer is weggelaten wordt het standaard gezet naar het vorige bereik eind nummer. Als er geen vorig bereik is, dan is standaard het begin van het bestand (zie voorbeeld 3).
Als een eind nummer is weggelaten, dan is standaard het einde van de bronbestanden die in feite mkvmerge(1) vertelt om de rest te behouden (zie voorbeeld 3)
Normaal gesproken, wordt elk bereik weggeschreven naar een nieuw bestand. Dit kan worden veranderd, zodat opeenvolgende reeksen worden geschreven in hetzelfde bestand. Daarvoor, moet de gebruiker het start nummer voorzetten met een +. Dit vertelt mkvmerge(1) om niet een nieuw bestand aan te maken en in plaats daarvan, het bereik toe te voegen aan hetzelfde bestand die in de vorige reeks werd geschreven. Tijdcodes zullen worden aangepast, zodat er géén gat ontstaat in het uitvoerbestand, zelfs als er een gat in de twee bereiken in het invoerbestand waren.
In voorbeeld 2 zal mkvmerge(1) slechts één bestand aanmaken. Dit bestand zal beide inhoud bevatten startend van 733 tot 912 en de inhoud startend vanaf 1592 tot 2730.
In voorbeeld 3 zal mkvmerge(1) twee bestanden aanmaken. De eerste bevat de inhoud vanaf het begin van het bron bestanden tot 430. Het tweede bevat de inhoud startend vanaf 2512 tot het eind van het bron bestanden.
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.
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.
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.
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.
Another possible pattern is '%c' which will be replaced by the name of the first chapter in the file. Note that when '%c' is present, the pattern '-%03d' will not be added automatically.
--link
--link-to-previous segment-UID
If SID starts with = then its rest is interpreted as the name of a Matroska file whose segment UID is read and used.
--link-to-next segment-UID
If SID starts with = then its rest is interpreted as the name of a Matroska file whose segment UID is read and used.
--append-mode mode
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[,...]
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.
+
$ mkvmerge -o full.mkv file1.mkv + file2.mkv $ mkvmerge -o full.mkv file1.mkv +file2.mkv
[ file1 file2 ]
This is an alternative syntax to using '+' between the file names. Therefore the following two commands are equivalent:
$ mkvmerge -o full.mkv file1.mkv + file2.mkv $ mkvmerge -o full.mkv '[' file1.mkv file2.mkv ']'
=
De '=' kan ook worden ingegeven voor elk volgende bestandsnaam. Daarom zijn de volgende twee commando's gelijkwaardig:
$ mkvmerge -o full.mkv = file1.vob $ mkvmerge -o full.mkv =file1.vob
( file1 file2 )
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:
--attachment-description description
--attachment-mime-type MIME type
If no MIME type is given a for an attachment, its type will be detected automatically.
--attachment-name name
--attach-file file-name, --attach-file-once file-name
mkvextract(1) kan worden gebruikt om bestanden uit een Matroska bestand te halen.
--enable-legacy-font-mime-types
This affects both new attachments if its MIME type is detected automatically and existing attachments whose stored MIME types will be remapped to the legacy ones.
The affected MIME types are 'font/sfnt', 'font/ttf' and 'font/collection' which are all mapped to 'application/x-truetype-fonts' and 'font/otf' which is mapped to 'application/vnd.ms-opentype'.
-a, --audio-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
Default: copy all tracks of this kind.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
-d, --video-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
-s, --subtitle-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
-b, --button-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
--track-tags [!]n,m,...
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],...
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
-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: 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
The default is 'iframes' for video and subtitle tracks and 'none' for audio tracks. See also option --no-cues which inhibits the creation of cue entries regardless of the --cues options used.
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-flag TID[:bool]
If the user does not explicitly select a track during playback, the player should select one of the tracks that has its "default track" flag set, taking user preferences such as their preferred language into account.
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.
--track-enabled-flag TID[:bool]
Only tracks whose "track enabled" flag is set should be considered for playback.
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-display-flag TID[:bool]
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.
--hearing-impaired-flag TID[:bool]
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.
--visual-impaired-flag TID[:bool]
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.
--text-descriptions-flag TID[:bool]
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.
--original-flag TID[:bool]
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.
--commentary-flag TID[:bool]
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
--track-name TID:name
--language TID:language
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
--aac-is-sbr TID[:0|1]
Als het bron bestand een Matroska 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.
--audio-emphasis TID:n|symbolic-name
--reduce-to-core TID
Currently only DTS tracks are affected by this option. TrueHD tracks that contain an embedded AC-3 core are instead presented as two separate tracks for which the user can select which track to copy. For DTS such a scheme would not work as the HD extensions cannot be decoded by themselves – unlike the TrueHD data.
--remove-dialog-normalization-gain TID
Currently only AC-3, DTS and TrueHD tracks are affected by this option.
--timestamps TID:file-name
--default-duration TID:x
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.
--fix-bitstream-timing-information TID[:0|1]
--compression TID:n
De compressie methode 'mpeg4_p2'/'mpeg4p2' is een speciale compressie methode genoemd 'header removal' die is alléén beschikbaar voorMPEG4 deel 2 video sporen.
The default for some subtitle types is 'zlib' compression. This compression method is also the one that most if not all playback applications support. Support for other compression methods other than 'none' is not assured.
-f, --fourcc TID:FourCC
--display-dimensions TID:widthxheight
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
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 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
--color-matrix-coefficients TID:n
Valid values and their meaning are:
0: GBR, 1: BT709, 2: unspecified, 3: reserved, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 non-constant luminance, 10: BT2020 constant luminance
--color-bits-per-channel TID:n
--chroma-subsample TID:hori,vert
Example: For video with 4:2:0 chroma subsampling, the parameter should be set to TID:1,1.
--cb-subsample TID:hori,vert
Example: For video with 4:2:1 chroma subsampling, the parameter --chroma-subsample should be set to TID:1,0 and Cb-subsample should be set to TID:1,0.
--chroma-siting TID:hori,vert
--color-range TID:n
--color-transfer-characteristics TID:n
Valid values and their meaning are:
0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: gamma 2.2 curve, 5: gamma 2.8 curve, 6: SMPTE 170M, 7: SMPTE 240M, 8: linear, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361 extended color gamut, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--color-primaries TID:n
Valid values and their meaning are:
0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 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 phosphors
--max-content-light TID:n
--max-frame-light TID:n
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y
--white-color-coordinates TID:x,y
--max-luminance TID:float
--min-luminance TID:float
--projection-type TID:method
--projection-private TID:data
--projection-pose-yaw TID:float
--projection-pose-pitch TID:float
--projection-pose-roll TID:float
--field-order TID:n
0: progressive; 1: interlaced with top field displayed first and top field stored first; 2: undetermined field order; 6: interlaced with bottom field displayed first and bottom field stored first; 9: interlaced with bottom field displayed first and top field stored first; 14: interlaced with top field displayed first and bottom field stored first
--stereo-mode TID:n|symbolic-name
--sub-charset TID:character-set
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.
-i, --identify file-name
The output format used for the result can be changed with the option --identification-format.
-J file-name
-F, --identification-format format
This format is not meant to be parsed. The output will be translated into the language mkvmerge(1) uses (see also --ui-language).
mkvmerge-identification-output-schema-v17.json[3]
All versions of the JSON schema are available both online and in the released source code archives.
--probe-range-percentage percentage
If tracks are known to be present but not found then the percentage to probe can be changed with this option. The minimum of 10 MB is built-in and cannot be changed.
--list-audio-emphasis
--list-languages
--list-stereo-modes
-l, --list-types
--priority priority
Selecting 'lowest' also causes mkvmerge(1) to select idle I/O priority in addition to the lowest possible process priority.
--command-line-charset (karakterset)
--output-charset (karakterset)
-r, --redirect-output (bestandsnaam)
--flush-on-close
--ui-language code
--abort-on-warnings
--deterministic seed
The seed can be an arbitrary string and does not have to be a number.
The result of byte-identical files is only guaranteed under the following conditions:
Using other versions of mkvmerge(1) or other command-line options may result in the same byte-identical file but is not guaranteed to do so.
--title onderwerp
--tags feature
--gui-mode
@options-file.json
--capabilities
-h, --help
-V, --version
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.
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.
Voor sommige opties is de volgorde waarin zij zijn opgegeven belangrijk. Opties mislukken in twee categorieën:
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
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:
$ oggenc -q4 -oMyMovie.ogg MyMovie.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 opstarten en geniet. Als je meerdere audio sporen hebt (of zelfs video sporen) dan kan je aangeven aan mplayer 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) of het subrip pakket te vinden in transcode(1)'s bronnen in de 'contrib/subrip' map. Het algemene proces is:
$ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie
$ pgm2txt mymovie
$ ispell -d american *txt
$ 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 ISO 639-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 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-flag 3 without-lang-codes.mkv --language 0:eng english.srt --default-track-flag 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
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 0: video (V_MS/VFW/FOURCC, DIV3) Track ID 1: 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:
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.
There are several IDs that have special meaning and do not occur in the identification output.
Het speciale spoor ID '-1' is de 'joker' en past de bepaalde schakelaar toe op alle sporen die van een invoerbestand worden gelezen.
The special track ID '-2' refers to the chapters in a source file. Currently only the --sync option uses this special ID. As an alternative to --sync -2:... the option --chapter-sync ... can be used.
Deze sectie is van toepassing op alle programma's in MKVToolNix zelfs wanneer alléén mkvmerge(1) genoemd wordt.
Alle teksten in Matroska 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 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.
On Windows the default character set used for converting text files is determined by a call to the GetACP() system call.
Reading the command line is done with the GetCommandLineW() function which already returns a Unicode string. Therefore the option --command-line-charset is ignored on Windows.
Output to the console consists of three scenarios:
Als de volgende optie aanwezig is dan is het toegestaan het karakter set te specificeren:
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.
An option file contains JSON-formatted data. Its content must be a valid JSON array consisting solely of JSON strings. The file's encoding must be UTF-8. The file should not start with a byte order marker (BOM), but if one exists, it will be skipped.
The rules for escaping special characters inside JSON are the ones in the official JSON specification, RFC 7159[4].
The option file's name itself must be specified as a command line argument prefixed with a '@' character.
The command line 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg' could be converted into the following JSON option file called e.g. 'options.json':
[
"-o",
"c:\\Matroska\\my file.mkv",
"--title",
"#65",
"-A",
"a movie.avi",
"sound.ogg" ]
The corresponding command would then be 'mkvmerge @options.json'.
Matroska 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 segmenten. En de meeste bestanden bevatten alleen één Matroska 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.
De Matroska 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.
Misschien wilt u ook sommige foto's samen met uw Matroska bestand houden of je gebruikt SSA ondertitels en je wilt een speciaal TrueType lettertype(n) gebruiken welke zeldzaam zijn. In deze gevallen kan je deze bestanden vastmaken aan het Matroska bestand. Zij zullen niet enkel bijgevoegd worden aan het bestand maar er ingevoegd worden. Een af speler kan deze bestanden tonen (de 'foto' gevallen) of hen gebruiken om de ondertitels te genereren (de 'TrueType lettertype' gevallen).
Hier is een voorbeeld hoe een foto en een TrueType 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-mime-type application/octet-stream \
--attach-file really_cool_font.ttf
Als een Matroska 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.
Het Matroska hoofdstuk systeem is krachtiger dan het oude bekende systeem van OGM bestanden. De volledige specificatie kan gevonden worden op de Matroska[1] 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's hoofdstuk functionaliteiten ondersteunt.
Apart from dedicated chapter files mkvmerge(1) can also read chapters from other file formats (e.g. MP4, Ogg, Blu-rays or DVDs).
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) will transform every pair or lines into one Matroska ChapterAtom. It does not set any ChapterTrackNumber which means that all chapters apply to all tracks in the file.
Omdat dit een tekst bestand is kan karakter set conversie nog nodig zijn. Zie de sectie over: Tekst bestanden en karakter set conversies voor een uitleg hoe mkvmerge(1) converteert tussen karakter sets.
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:
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)
mkvmerge(1) can read chapters from unencrypted Blu-rays. For that you can use the path to one of the MPLS play lists with the --chapters parameter.
Example: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
When MKVToolNix is compiled with the libdvdread library, mkvmerge(1) can read chapters from DVDs. For that you can use the path to one of the folders or files on the DVD with the --chapters parameter. As DVDs can contain more than one title and each title has its own set of chapters, you can append a colon and the desired title number to the end of the file name argument. The title number defaults to 1.
Example: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
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 bronbestanden tenzij dit expliciet is uitgezet met de --no-chapters optie. De hoofdstukken van alle bronnen (Matroska 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 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.
Matroska's tag system is similar to that of other containers: a set of KEY=VALUE pairs. However, in Matroska these tags can also be nested, and both the KEY and the VALUE are elements of their own. The example file example-tags-2.xml shows how to use this system.
Matroska 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[5] geeft meer informatie over dit feit.
Eén belangrijk feit is, dat markeringen gelinkt zijn naar sporen of hoofdstukken met de Targets Matroska 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 bestandsformat) of welke zijn gekopieerd van een bronbestand, als de sporen bronbestand een Matroska 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 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.
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
mkvmerge(1) ondersteunt een XML gebaseerde markeer bestand format. Het format is rijkelijk gedocumenteerd op de Matroska[5] 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 nieuwe Matroska 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 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 markeer specificaties. Aangezien in mkvmerge(1) dit systeem niet meer wordt ondersteund, worden deze typen hier niet beschreven.
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)
Met een segment informatie XML bestand is het mogelijk om bepaalde waarden in te stellen in het "segment informatie" kop veld van een Matroska bestand. Al deze waarden kunnen niet worden ingesteld via andere commando regel opties.
Overige "segment informatie" kopvelden kunnen gezet worden via de commandoregel opties maar niet via een XML bestand. Inclusief b.v. de --title en de --timestamp-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)
Het Matroska 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:
Het kortst mogelijke Matroska bestand zou lijken op dit:
[EBML head] [segment [segment information] [track information] [cluster 1]]
Dit kan het geval zijn voor alléén-audio 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 blok. Voor video is dit exact één beeld, voor audio is dit één pakket van het specifieke audio type b.v. voor AC-3 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 ... --timestamps 0:my_timestamps.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.
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:
# timestamp format v1 assume 27.930 800,1000,25 1500,1700,30
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:
# timestamp format v2 0 40 80
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:
# timestamp format v3 assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
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.
mkvinfo(1) verlaat met één van de drie afsluit codes:
mkvmerge(1) gebruikt de standaard variabelen vanuit het systeem locatie (b.v. LANG en de LC_* family). Extra variabelen:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG and its short form MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE and its short form MTX_ENGAGE
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
De laatste versie kan altijd gevonden worden op de MKVToolNix[6] thuis basis.
Moritz Bunkus <moritz@bunkus.org>
2023-02-12 | MKVToolNix 74.0.0 |