1MKVMERGE(1)                      User Commands                     MKVMERGE(1)
2
3
4

NAME

6       mkvmerge - Merge multimedia streams into a Matroska(TM) file
7

SYNOPSIS

9       mkvmerge [global options] {-o out} [options1] {file1}
10                [[options2] {file2}] [@options-file.json]
11

DESCRIPTION

13       This program takes the input from several media files and joins their
14       streams (all of them or just a selection) into a Matroska(TM) file; see
15       the Matroska(TM) website[1].
16
17           Important
18           The order of command line options is important. Please read the
19           section "Option order" if you're new to the program.
20
21   Global options
22       -v, --verbose
23           Increase verbosity.
24
25       -q, --quiet
26           Suppress status output.
27
28       -o, --output file-name
29           Write to the file file-name. If splitting is used then this
30           parameter is treated a bit differently. See the explanation for the
31           --split option for details.
32
33       -w, --webm
34           Create a WebM compliant file. This is also turned on if the output
35           file name's extension is "webm". This mode enforces several
36           restrictions. The only allowed codecs are VP8, VP9 video and Opus,
37           Vorbis audio tracks. The DocType header item is changed to "webm".
38
39           For chapters and tags only a subset of elements are allowed.
40           mkvmerge(1) will automatically remove all elements not allowed by
41           the specification.
42
43       --title title
44           Sets the general title for the output file, e.g. the movie name.
45
46       --default-language language-code
47           Sets the default language code that will be used for tracks for
48           which no language is set with the --language option and for which
49           the source container doesn't provide a language.
50
51           The default language code is 'und' for 'undefined'.
52
53   Segment info handling (global options)
54       --segmentinfo filename.xml
55           Read segment information from a XML file. This file can contain the
56           segment family UID, segment UID, previous and next segment UID
57           elements. An example file and a DTD are included in the MKVToolNix
58           distribution.
59
60           See the section about segment info XML files below for details.
61
62       --segment-uid SID1,SID2,...
63           Sets the segment UIDs to use. This is a comma-separated list of
64           128-bit segment UIDs in the usual UID form: hex numbers with or
65           without the "0x" prefix, with or without spaces, exactly 32 digits.
66
67           If SID starts with = then its rest is interpreted as the name of a
68           Matroska file whose segment UID is read and used.
69
70           Each file created contains one segment, and each segment has one
71           segment UID. If more segment UIDs are specified than segments are
72           created then the surplus UIDs are ignored. If fewer UIDs are
73           specified than segments are created then random UIDs will be
74           created for them.
75
76   Chapter and tag handling (global options)
77       --chapter-language language-code
78           Sets the ISO 639-2 language code that is written for each chapter
79           entry. Defaults to 'eng'. See the section about chapters below for
80           details.
81
82           This option can be used both for simple chapter files and for
83           source files that contain chapters but no information about the
84           chapters' language, e.g. MP4 and OGM files.
85
86           The language set with this option is also used when chapters are
87           generated with the --generate-chapters option.
88
89       --chapter-charset character-set
90           Sets the character set that is used for the conversion to UTF-8 for
91           simple chapter files. See the section about text files and
92           character sets for an explanation how mkvmerge(1) converts between
93           character sets.
94
95           This switch does also apply to chapters that are copied from
96           certain container types, e.g. Ogg/OGM and MP4 files. See the
97           section about chapters below for details.
98
99       --chapter-sync d[,o[/p]]
100           Adjust the timestamps of the chapters in the following source file
101           by d ms. Alternatively you can use the --sync option with the
102           special track ID -2 (see section special track IDs).
103
104           o/p: adjust the timestamps by o/p to fix linear drifts.  p defaults
105           to 1 if omitted. Both o and p can be floating point numbers.
106
107           Defaults: no manual sync correction (which is the same as d = 0 and
108           o/p = 1.0).
109
110           This option can be used multiple times for an input file applying
111           to several tracks by selecting different track IDs each time.
112
113       --generate-chapters mode
114           mkvmerge(1) can create chapters automatically. The following two
115           modes are currently supported:
116
117           ·   'when-appending' – This mode creates one chapter at the start
118               and one chapter whenever a file is appended.
119
120               This mode also works with split modes 'parts:' and
121               'parts-frames:'. For these modes one chapter will be generated
122               for each appended timestamp range (those whose start timestamps
123               are prefixed with '+').
124
125                   Note
126                   mkvmerge(1) requires a video or an audio track to be
127                   present in order to be able to determine when a new file is
128                   appended. If one or more video tracks are muxed the first
129                   one is used. Otherwise the first audio track is used.
130
131           ·   'interval:time-spec' – This mode creates one chapter at fixed
132               intervals given by time-spec. The format is either the form
133               HH:MM:SS.nnnnnnnnn or a number followed by one of the units
134               's', 'ms' or 'us'.
135
136               Example: --generate-chapters interval:45s
137
138           The names for the new chapters are controlled by the option
139           --generate-chapters-name-template. The language is set with
140           --chapter-language which must occur before --generate-chapters.
141
142       --generate-chapters-name-template template
143           This sets the name template for chapter names generated by the
144           option --generate-chapters. If the option is not used then default
145           'Chapter <NUM:2>' will be used.
146
147           There are several variables that can be used in the template that
148           are replaced by their actual values when a chapter is generated.
149           The string '<NUM>' will be replaced by the chapter number. The
150           string '<START>' will be replaced by the chapter's start timestamp.
151
152           The strings '<FILE_NAME>' and '<FILE_NAME_WITH_EXT>' are only
153           filled when generating chapters for appended files. They will be
154           replaced by the appended file's name wihtout respectively with its
155           extension. Note that only the file's base name and extension are
156           inserted, not its directory or drive components.
157
158           You can specify a minimum number of places for the chapter number
159           with '<NUM:places>', e.g. '<NUM:3>'. The resulting number will be
160           padded with leading zeroes if the number of places is less than
161           specified.
162
163           You can control the format used by the start timestamp with
164           <START:format>. The format defaults to '%H:%M:%S' if none is given.
165           Valid format codes are:
166
167           ·   %h – hours
168
169           ·   %H – hours zero-padded to two places
170
171           ·   %m – minutes
172
173           ·   %M – minutes zero-padded to two places
174
175           ·   %s – seconds
176
177           ·   %S – seconds zero-padded to two places
178
179           ·   %n – nanoseconds with nine places
180
181           ·   %<1-9>n – nanoseconds with up to nine places (e.g. three places
182               with %3n)
183
184       --cue-chapter-name-format format
185           mkvmerge(1) supports reading CUE sheets for audio files as the
186           input for chapters.  CUE sheets usually contain the entries
187           PERFORMER and TITLE for each index entry.  mkvmerge(1) uses these
188           two strings in order to construct the chapter name. With this
189           option the format used for this name can be set.
190
191           If this option is not given then mkvmerge(1) defaults to the format
192           '%p - %t' (the performer, followed by a space, a dash, another
193           space and the title).
194
195           If the format is given then everything except the following meta
196           characters is copied as-is, and the meta characters are replaced
197           like this:
198
199           ·   %p is replaced by the current entry's PERFORMER string,
200
201           ·   %t is replaced by the current entry's TITLE string,
202
203           ·   %n is replaced by the current track number and
204
205           ·   %N is replaced by the current track number padded with a
206               leading zero if it is < 10.
207
208       --chapters file-name
209           Read chapter information from the file file-name. See the section
210           about chapters below for details.
211
212       --global-tags file-name
213           Read global tags from the file file-name. See the section about
214           tags below for details.
215
216   General output control (advanced global options)
217       --track-order FID1:TID1,FID2:TID2,...
218           This option changes the order in which the tracks for an input file
219           are created. The argument is a comma separated list of pairs IDs.
220           Each pair contains first the file ID (FID1) which is simply the
221           number of the file on the command line starting at 0. The second is
222           a track ID (TID1) from that file. If some track IDs are omitted
223           then those tracks are created after the ones given with this option
224           have been created.
225
226       --cluster-length spec
227           Limit the number of data blocks or the duration of data in each
228           cluster. The spec parameter can either be a number n without a unit
229           or a number d postfixed with 'ms'.
230
231           If no unit is used then mkvmerge(1) will put at most n data blocks
232           into each cluster. The maximum number of blocks is 65535.
233
234           If the number d is postfixed with 'ms' then mkvmerge(1) puts at
235           most d milliseconds of data into each cluster. The minimum for d is
236           '100ms', and the maximum is '32000ms'.
237
238           mkvmerge(1) defaults to putting at most 65535 data blocks and
239           5000ms of data into a cluster.
240
241           Programs trying to find a certain frame can only seek directly to a
242           cluster and have to read the whole cluster afterwards. Therefore
243           creating larger clusters may lead to imprecise or slow seeking.
244
245       --clusters-in-meta-seek
246           Tells mkvmerge(1) to create a meta seek element at the end of the
247           file containing all clusters. See also the section about the
248           Matroska(TM) file layout.
249
250       --timestamp-scale factor
251           Forces the timestamp scale factor to factor. Valid values are in
252           the range 1000..10000000 or the special value -1.
253
254           Normally mkvmerge(1) will use a value of 1000000 which means that
255           timestamps and durations will have a precision of 1ms. For files
256           that will not contain a video track but at least one audio track
257           mkvmerge(1) will automatically chose a timestamp scale factor so
258           that all timestamps and durations have a precision of one audio
259           sample. This causes bigger overhead but allows precise seeking and
260           extraction.
261
262           If the special value -1 is used then mkvmerge(1) will use sample
263           precision even if a video track is present.
264
265       --enable-durations
266           Write durations for all blocks. This will increase file size and
267           does not offer any additional value for players at the moment.
268
269       --no-cues
270           Tells mkvmerge(1) not to create and write the cue data which can be
271           compared to an index in an AVI.  Matroska(TM) files can be played
272           back without the cue data, but seeking will probably be imprecise
273           and slower. Use this only if you're really desperate for space or
274           for testing purposes. See also option --cues which can be specified
275           for each input file.
276
277       --no-date
278           By default mkvmerge(1) sets the "date" segment information field to
279           the time & date when multiplexing started. With this option that
280           field is not written at all.
281
282       --disable-lacing
283           Disables lacing for all tracks. This will increase the file's size,
284           especially if there are many audio tracks. This option is not
285           intended for everyday use.
286
287       --disable-track-statistics-tags
288           Normally mkvmerge(1) will write certain tags with statistics for
289           each track. If such tags are already present then they will be
290           overwritten. The tags are BPS, DURATION, NUMBER_OF_BYTES and
291           NUMBER_OF_FRAMES.
292
293           Enabling this option prevents mkvmerge(1) from writing those tags
294           and from touching any existing tags with same names.
295
296       --disable-language-ietf
297           Normally mkvmerge(1) will write both the new LanguageIETF track
298           header element and ChapLanguageIETF chapter element in addition to
299           the legacy Language and ChapLanguage elements. If this option is
300           used, only the two legacy elements are written.
301
302   File splitting, linking, appending and concatenation (more global options)
303       --split specification
304           Splits the output file after a given size or a given time. Please
305           note that tracks can only be split right before a key frame.
306           Therefore the split point may be a bit off from what the user has
307           specified.
308
309           At the moment mkvmerge(1) supports four different modes.
310
311            1. Splitting by size.
312
313               Syntax: --split [size:]d[k|m|g]
314
315               Examples: --split size:700m or --split 150000000
316
317               The parameter d may end with 'k', 'm' or 'g' to indicate that
318               the size is in KB, MB or GB respectively. Otherwise a size in
319               bytes is assumed. After the current output file has reached
320               this size limit a new one will be started.
321
322               The 'size:' prefix may be omitted for compatibility reasons.
323
324            2. Splitting after a duration.
325
326               Syntax: --split [duration:]HH:MM:SS.nnnnnnnnn|ds
327
328               Examples: --split duration:00:60:00.000 or --split 3600s
329
330               The parameter must either have the form HH:MM:SS.nnnnnnnnn for
331               specifying the duration in up to nano-second precision or be a
332               number d followed by the letter 's' for the duration in
333               seconds.  HH is the number of hours, MM the number of minutes,
334               SS the number of seconds and nnnnnnnnn the number of
335               nanoseconds. Both the number of hours and the number of
336               nanoseconds can be omitted. There can be up to nine digits
337               after the decimal point. After the duration of the contents in
338               the current output has reached this limit a new output file
339               will be started.
340
341               The 'duration:' prefix may be omitted for compatibility
342               reasons.
343
344            3. Splitting after specific timestamps.
345
346               Syntax: --split timestamps:A[,B[,C...]]
347
348               Example: --split timestamps:00:45:00.000,01:20:00.250,6300s
349
350               The parameters A, B, C etc must all have the same format as the
351               ones used for the duration (see above). The list of timestamps
352               is separated by commas. After the input stream has reached the
353               current split point's timestamp a new file is created. Then the
354               next split point given in this list is used.
355
356               The 'timestamps:' prefix must not be omitted.
357
358            4. Keeping specific parts by specifying timestamp ranges while
359               discarding others.
360
361               Syntax: --split
362               parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
363
364               Examples:
365
366                1. --split parts:00:01:20-00:02:45,00:05:50-00:10:30
367
368                2. --split parts:00:01:20-00:02:45,+00:05:50-00:10:30
369
370                3. --split parts:-00:02:45,00:05:50-
371
372               The parts mode tells mkvmerge(1) to keep certain ranges of
373               timestamps while discarding others. The ranges to keep have to
374               be listed after the parts: keyword and be separated by commas.
375               A range itself consists of a start and an end timestamp in the
376               same format the other variations of --split accept (e.g. both
377               00:01:20 and 80s refer to the same timestamp).
378
379               If a start timestamp is left out then it defaults to the
380               previous range's end timestamp. If there was no previous range
381               then it defaults to the start of the file (see example 3).
382
383               If an end timestamp is left out then it defaults to the end of
384               the source files which basically tells mkvmerge(1) to keep the
385               rest (see example 3).
386
387               Normally each range will be written to a new file. This can be
388               changed so that consecutive ranges are written to the same
389               file. For that the user has to prefix the start timestamp with
390               a +. This tells mkvmerge(1) not to create a new file and
391               instead append the range to the same file the previous range
392               was written to. Timestamps will be adjusted so that there will
393               be no gap in the output file even if there was a gap in the two
394               ranges in the input file.
395
396               In example 1 mkvmerge(1) will create two files. The first will
397               contain the content starting from 00:01:20 until 00:02:45. The
398               second file will contain the content starting from 00:05:50
399               until 00:10:30.
400
401               In example 2 mkvmerge(1) will create only one file. This file
402               will contain both the content starting from 00:01:20 until
403               00:02:45 and the content starting from 00:05:50 until 00:10:30.
404
405               In example 3 mkvmerge(1) will create two files. The first will
406               contain the content from the start of the source files until
407               00:02:45. The second file will contain the content starting
408               from 00:05:50 until the end of the source files.
409
410                   Note
411                   Note that mkvmerge(1) only makes decisions about splitting
412                   at key frame positions. This applies to both the start and
413                   the end of each range. So even if an end timestamp is
414                   between two key frames mkvmerge(1) will continue outputting
415                   the frames up to but excluding the following key frame.
416
417            5. Keeping specific parts by specifying frame/field number ranges
418               while discarding others.
419
420               Syntax: --split
421               parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
422
423               Examples:
424
425                1. --split parts-frames:137-258,548-1211
426
427                2. --split parts-frames:733-912,+1592-2730
428
429                3. --split parts-frames:-430,2512-
430
431               The parts-frames mode tells mkvmerge(1) to keep certain ranges
432               of frame/field numbers while discarding others. The ranges to
433               keep have to be listed after the parts-frames: keyword and be
434               separated by commas. A range itself consists of a start and an
435               end frame/field number. Numbering starts at 1.
436
437               If a start number is left out then it defaults to the previous
438               range's end number. If there was no previous range then it
439               defaults to the start of the file (see example 3).
440
441               If an end number is left out then it defaults to the end of the
442               source files which basically tells mkvmerge(1) to keep the rest
443               (see example 3).
444
445               Normally each range will be written to a new file. This can be
446               changed so that consecutive ranges are written to the same
447               file. For that the user has to prefix the start number with a
448               +. This tells mkvmerge(1) not to create a new file and instead
449               append the range to the same file the previous range was
450               written to. Timestamps will be adjusted so that there will be
451               no gap in the output file even if there was a gap in the two
452               ranges in the input file.
453
454                   Note
455                   Note that mkvmerge(1) only makes decisions about splitting
456                   at key frame positions. This applies to both the start and
457                   the end of each range. So even if an end frame/field number
458                   is between two key frames mkvmerge(1) will continue
459                   outputting the frames up to but excluding the following key
460                   frame.
461               In example 1 mkvmerge(1) will create two files. The first will
462               contain the content starting from the first key frame at or
463               after 137 up to but excluding the first key frame at or after
464               258. The second file will contain the content starting from 548
465               until 1211.
466
467               In example 2 mkvmerge(1) will create only one file. This file
468               will contain both the content starting from 733 until 912 and
469               the content starting from 1592 until 2730.
470
471               In example 3 mkvmerge(1) will create two files. The first will
472               contain the content from the start of the source files until
473               430. The second file will contain the content starting from
474               2512 until the end of the source files.
475
476               This mode considers only the first video track that is output.
477               If no video track is output no splitting will occur.
478
479                   Note
480                   The numbers given with this argument are interpreted based
481                   on the number of Matroska(TM) blocks that are output. A
482                   single Matroska(TM) block contains either a full frame (for
483                   progressive content) or a single field (for interlaced
484                   content). mkvmerge does not distinguish between those two
485                   and simply counts the number of blocks. For example: If one
486                   wanted to split after the 25th full frame with interlaced
487                   content one would have to use 50 (two fields per full
488                   frame) as the split point.
489
490            6. Splitting after specific frames/fields.
491
492               Syntax: --split frames:A[,B[,C...]]
493
494               Example: --split frames:120,237,891
495
496               The parameters A, B, C etc must all be positive integers.
497               Numbering starts at 1. The list of frame/field numbers is
498               separated by commas. After the input stream has reached the
499               current split point's frame/field number a new file is created.
500               Then the next split point given in this list is used.
501
502               The 'frames:' prefix must not be omitted.
503
504               This mode considers only the first video track that is output.
505               If no video track is output no splitting will occur.
506
507                   Note
508                   The numbers given with this argument are interpreted based
509                   on the number of Matroska(TM) blocks that are output. A
510                   single Matroska(TM) block contains either a full frame (for
511                   progressive content) or a single field (for interlaced
512                   content). mkvmerge does not distinguish between those two
513                   and simply counts the number of blocks. For example: If one
514                   wanted to split after the 25th full frame with interlaced
515                   content one would have to use 50 (two fields per full
516                   frame) as the split point.
517
518            7. Splitting before specific chapters.
519
520               Syntax: --split chapters:all or --split chapters:A[,B[,C...]]
521
522               Example: --split chapters:5,8
523
524               The parameters A, B, C etc must all be positive integers.
525               Numbering starts at 1. The list of chapter numbers is separated
526               by commas. Splitting will occur right before the first key
527               frame whose timestamp is equal to or bigger than the start
528               timestamp for the chapters whose numbers are listed. A chapter
529               starting at 0s is never considered for splitting and discarded
530               silently.
531
532               The keyword all can be used instead of listing all chapter
533               numbers manually.
534
535               The 'chapters:' prefix must not be omitted.
536
537                   Note
538                   The Matroska(TM) file format supports arbitrary deeply
539                   nested chapter structures called 'edition entries' and
540                   'chapter atoms'. However, this mode only considers the
541                   top-most level of chapters across all edition entries.
542
543           For this splitting mode the output filename is treated differently
544           than for the normal operation. It may contain a printf like
545           expression '%d' including an optional field width, e.g. '%02d'. If
546           it does then the current file number will be formatted
547           appropriately and inserted at that point in the filename. If there
548           is no such pattern then a pattern of '-%03d' is assumed right
549           before the file's extension: '-o output.mkv' would result in
550           'output-001.mkv' and so on. If there's no extension then '-%03d'
551           will be appended to the name.
552
553           Another possible pattern is '%c' which will be replaced by the name
554           of the first chapter in the file. Note that when '%c' is present,
555           the pattern '-%03d' will not be added automatically.
556
557       --link
558           Link files to one another when splitting the output file. See the
559           section on file linking below for details.
560
561       --link-to-previous segment-UID
562           Links the first output file to the segment with the segment UID
563           given by the segment-UID parameter. See the section on file linking
564           below for details.
565
566           If SID starts with = then its rest is interpreted as the name of a
567           Matroska file whose segment UID is read and used.
568
569       --link-to-next segment-UID
570           Links the last output file to the segment with the segment UID
571           given by the segment-UID parameter. See the section on file linking
572           below for details.
573
574           If SID starts with = then its rest is interpreted as the name of a
575           Matroska file whose segment UID is read and used.
576
577       --append-mode mode
578           Determines how timestamps are calculated when appending files. The
579           parameter mode can have two values: 'file' which is also the
580           default and 'track'.
581
582           When mkvmerge appends a track (called 'track2_1' from now on) from
583           a second file (called 'file2') to a track (called 'track1_1') from
584           the first file (called 'file1') then it has to offset all
585           timestamps for 'track2_1' by an amount. For 'file' mode this amount
586           is the highest timestamp encountered in 'file1' even if that
587           timestamp was from a different track than 'track1_1'. In track mode
588           the offset is the highest timestamp of 'track1_1'.
589
590           Unfortunately mkvmerge cannot detect which mode to use reliably.
591           Therefore it defaults to 'file' mode. 'file' mode usually works
592           better for files that have been created independently of each
593           other; e.g. when appending AVI or MP4 files. 'track' mode may work
594           better for sources that are essentially just parts of one big file,
595           e.g. for VOB and EVO files.
596
597           Subtitle tracks are always treated as if 'file' mode were active
598           even if 'track' mode actually is.
599
600       --append-to SFID1:STID1:DFID1:DTID1[,...]
601           This option controls to which track another track is appended. Each
602           spec contains four IDs: a file ID, a track ID, a second file ID and
603           a second track ID. The first pair, "source file ID" and "source
604           track ID", identifies the track that is to be appended. The second
605           pair, "destination file ID" and "destination track ID", identifies
606           the track the first one is appended to.
607
608           If this option has been omitted then a standard mapping is used.
609           This standard mapping appends each track from the current file to a
610           track from the previous file with the same track ID. This allows
611           for easy appending if a movie has been split into two parts and
612           both file have the same number of tracks and track IDs with the
613           command mkvmerge -o output.mkv part1.mkv +part2.mkv.
614
615       +
616           A single '+' causes the next file to be appended instead of added.
617           The '+' can also be put in front of the next file name. Therefore
618           the following two commands are equivalent:
619
620               $ mkvmerge -o full.mkv file1.mkv + file2.mkv
621               $ mkvmerge -o full.mkv file1.mkv +file2.mkv
622
623       [ file1 file2 ]
624           If multiple file names are contained in a pair of square brackets
625           then the second and all following files will be appended to the
626           first file named within the brackets.
627
628           This is an alternative syntax to using '+' between the file names.
629           Therefore the following two commands are equivalent:
630
631               $ mkvmerge -o full.mkv file1.mkv + file2.mkv
632               $ mkvmerge -o full.mkv '[' file1.mkv file2.mkv ']'
633
634       =
635           Normally mkvmerge(1) looks for files in the same directory as an
636           input file that have the same base name and only differ in their
637           running number (e.g. 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB'
638           etc) and treats all of those files as if they were concatenated
639           into a single big file. This option, a single '=', causes mkvmerge
640           not to look for those additional files.
641
642           The '=' can also be put in front of the next file name. Therefore
643           the following two commands are equivalent:
644
645               $ mkvmerge -o full.mkv = file1.mkv
646               $ mkvmerge -o full.mkv =file1.mkv
647
648       ( file1 file2 )
649           If multiple file names are contained in a pair of parenthesis then
650           those files will be treated as if they were concatenated into a
651           single big file consisting of the content of each of the files one
652           after the other.
653
654           This can be used for e.g. VOB files coming from a DVD or MPEG
655           transport streams. It cannot be used if each file contains its own
656           set of headers which is usually the case with stand-alone files
657           like AVI or MP4.
658
659           Putting a file name into parenthesis also prevents mkvmerge(1) from
660           looking for additional files with the same base name as described
661           in option =. Therefore these two command lines are equivalent:
662
663               $ mkvmerge -o out.mkv = file.mkv
664               $ mkvmerge -o out.mkv '(' file.mkv ')'
665
666           Several things should be noted:
667
668            1. There must be spaces both after the opening and before the
669               closing parenthesis.
670
671            2. Every parameter between parenthesis is interpreted as a file
672               name. Therefore all options applying to this logical file must
673               be listed before the opening parenthesis.
674
675            3. Some shells treat parenthesis as special characters. Hence you
676               must escape or quote them as shown in the example above.
677
678   Attachment support (more global options)
679       --attachment-description description
680           Plain text description of the following attachment. Applies to the
681           next --attach-file or --attach-file-once option.
682
683       --attachment-mime-type MIME type
684           MIME type of the following attachment. Applies to the next
685           --attach-file or --attach-file-once option. A list of officially
686           recognized MIME types can be found e.g. at the IANA homepage[2].
687           The MIME type is mandatory for an attachment.
688
689       --attachment-name name
690           Sets the name that will be stored in the output file for this
691           attachment. If this option is not given then the name will be
692           derived from the file name of the attachment as given with the
693           --attach-file or the --attach-file-once option.
694
695       --attach-file file-name, --attach-file-once file-name
696           Creates a file attachment inside the Matroska(TM) file. The MIME
697           type must have been set before this option can used. The difference
698           between the two forms is that during splitting the files attached
699           with --attach-file are attached to all output files while the ones
700           attached with --attach-file-once are only attached to the first
701           file created. If splitting is not used then both do the same.
702
703           mkvextract(1) can be used to extract attached files from a
704           Matroska(TM) file.
705
706   Options that can be used for each input file
707       -a, --audio-tracks [!]n,m,...
708           Copy the audio tracks n, m etc. The numbers are track IDs which can
709           be obtained with the --identify switch. They're not simply the
710           track numbers (see section track IDs). Default: copy all audio
711           tracks.
712
713           Instead of track IDs you can also provide ISO 639-2 language codes.
714           This will only work for source files that provide language tags for
715           their tracks.
716
717           Default: copy all tracks of this kind.
718
719           If the IDs are prefixed with !  then the meaning is reversed: copy
720           all tracks of this kind but the ones listed after the !.
721
722       -d, --video-tracks [!]n,m,...
723           Copy the video tracks n, m etc. The numbers are track IDs which can
724           be obtained with the --identify switch. They're not simply the
725           track numbers (see section track IDs). Default: copy all video
726           tracks.
727
728           Instead of track IDs you can also provide ISO 639-2 language codes.
729           This will only work for source files that provide language tags for
730           their tracks.
731
732           If the IDs are prefixed with !  then the meaning is reversed: copy
733           all tracks of this kind but the ones listed after the !.
734
735       -s, --subtitle-tracks [!]n,m,...
736           Copy the subtitle tracks n, m etc. The numbers are track IDs which
737           can be obtained with the --identify switch. They're not simply the
738           track numbers (see section track IDs). Default: copy all subtitle
739           tracks.
740
741           Instead of track IDs you can also provide ISO 639-2 language codes.
742           This will only work for source files that provide language tags for
743           their tracks.
744
745           If the IDs are prefixed with !  then the meaning is reversed: copy
746           all tracks of this kind but the ones listed after the !.
747
748       -b, --button-tracks [!]n,m,...
749           Copy the button tracks n, m etc. The numbers are track IDs which
750           can be obtained with the --identify switch. They're not simply the
751           track numbers (see section track IDs). Default: copy all button
752           tracks.
753
754           Instead of track IDs you can also provide ISO 639-2 language codes.
755           This will only work for source files that provide language tags for
756           their tracks.
757
758           If the IDs are prefixed with !  then the meaning is reversed: copy
759           all tracks of this kind but the ones listed after the !.
760
761       --track-tags [!]n,m,...
762           Copy the tags for tracks n, m etc. The numbers are track IDs which
763           can be obtained with the --identify switch (see section track IDs).
764           They're not simply the track numbers. Default: copy tags for all
765           tracks.
766
767           If the IDs are prefixed with !  then the meaning is reversed: copy
768           everything but the IDs listed after the !.
769
770       -m, --attachments [!]n[:all|first],m[:all|first],...
771           Copy the attachments with the IDs n, m etc to all or only the first
772           output file. Each ID can be followed by either ':all' (which is the
773           default if neither is entered) or ':first'. If splitting is active
774           then those attachments whose IDs are specified with ':all' are
775           copied to all of the resulting output files while the others are
776           only copied into the first output file. If splitting is not active
777           then both variants have the same effect.
778
779           The default is to copy all attachments to all output files.
780
781           If the IDs are prefixed with !  then the meaning is reversed: copy
782           everything but the IDs listed after the !.
783
784       -A, --no-audio
785           Don't copy any audio track from this file.
786
787       -D, --no-video
788           Don't copy any video track from this file.
789
790       -S, --no-subtitles
791           Don't copy any subtitle track from this file.
792
793       -B, --no-buttons
794           Don't copy any button track from this file.
795
796       -T, --no-track-tags
797           Don't copy any track specific tags from this file.
798
799       --no-chapters
800           Don't copy chapters from this file.
801
802       -M, --no-attachments
803           Don't copy attachments from this file.
804
805       --no-global-tags
806           Don't copy global tags from this file.
807
808       -y, --sync TID:d[,o[/p]]
809           Adjust the timestamps of the track with the id TID by d ms. The
810           track IDs are the same as the ones given with --identify (see
811           section track IDs).
812
813           o/p: adjust the timestamps by o/p to fix linear drifts.  p defaults
814           to 1 if omitted. Both o and p can be floating point numbers.
815
816           Defaults: no manual sync correction (which is the same as d = 0 and
817           o/p = 1.0).
818
819           This option can be used multiple times for an input file applying
820           to several tracks by selecting different track IDs each time.
821
822       --cues TID:none|iframes|all
823           Controls for which tracks cue (index) entries are created for the
824           given track (see section track IDs). 'none' inhibits the creation
825           of cue entries. For 'iframes' only blocks with no backward or
826           forward references ( = I frames in video tracks) are put into the
827           cue sheet. 'all' causes mkvmerge(1) to create cue entries for all
828           blocks which will make the file very big.
829
830           The default is 'iframes' for video and subtitle tracks and 'none'
831           for audio tracks. See also option --no-cues which inhibits the
832           creation of cue entries regardless of the --cues options used.
833
834           This option can be used multiple times for an input file applying
835           to several tracks by selecting different track IDs each time.
836
837       --default-track TID[:bool]
838           Sets the 'default' flag for the given track (see section track IDs)
839           if the optional argument bool is not present. If the user does not
840           explicitly select a track himself then the player should prefer the
841           track that has his 'default' flag set. Only one track of each kind
842           (audio, video, subtitles, buttons) can have his 'default' flag set.
843           If the user wants no track to have the default track flag set then
844           he has to set bool to 0 for all tracks.
845
846           This option can be used multiple times for an input file applying
847           to several tracks by selecting different track IDs each time.
848
849       --forced-track TID[:bool]
850           Sets the 'forced' flag for the given track (see section track IDs)
851           if the optional argument bool is not present. Use this for tracks
852           containing onscreen text or foreign-language dialogue.
853
854           This option can be used multiple times for an input file applying
855           to several tracks by selecting different track IDs each time.
856
857       --blockadd TID:level
858           Keep only the BlockAdditions up to the level level for the given
859           track. The default is to keep all levels. This option only affects
860           certain kinds of codecs like WAVPACK4.
861
862       --track-name TID:name
863           Sets the track name for the given track (see section track IDs) to
864           name.
865
866       --language TID:language
867           Sets the language for the given track (see section track IDs). Both
868           ISO 639-2 language codes and ISO 639-1 country codes are allowed.
869           The country codes will be converted to language codes
870           automatically. All languages including their ISO 639-2 codes can be
871           listed with the --list-languages option.
872
873           This option can be used multiple times for an input file applying
874           to several tracks by selecting different track IDs each time.
875
876       -t, --tags TID:file-name
877           Read tags for the track with the number TID from the file
878           file-name. See the section about tags below for details.
879
880       --aac-is-sbr TID[:0|1]
881           Tells mkvmerge(1) that the track with the ID TID is SBR AAC (also
882           known as HE-AAC or AAC+). This options is needed if a) the source
883           file is an AAC file (not for a Matroska(TM) file) and b) the AAC
884           file contains SBR AAC data. The reason for this switch is that it
885           is technically impossible to automatically tell normal AAC data
886           from SBR AAC data without decoding a complete AAC frame. As there
887           are several patent issues with AAC decoders mkvmerge(1) will never
888           contain this decoding stage. So for SBR AAC files this switch is
889           mandatory. The resulting file might not play back correctly or even
890           not at all if the switch was omitted.
891
892           If the source file is a Matroska(TM) file then the CodecID should
893           be enough to detect SBR AAC. However, if the CodecID is wrong then
894           this switch can be used to correct that.
895
896           If mkvmerge wrongfully detects that an AAC file is SBR then you can
897           add ':0' to the track ID.
898
899       --reduce-to-core TID
900           Some audio codecs have a lossy core and optional extensions that
901           implement lossless decoding. This option tells mkvmerge(1) to only
902           copy the core but not the extensions. By default mkvmerge(1) copies
903           both the core and the extensions.
904
905           Currently only DTS tracks are affected by this option. TrueHD
906           tracks that contain an embedded AC-3 core are instead presented as
907           two separate tracks for which the user can select which track to
908           copy. For DTS such a scheme would not work as the HD extensions
909           cannot be decoded by themselves – unlike the TrueHD data.
910
911       --remove-dialog-normalization-gain TID
912           Some audio codecs contain header fields that tell the decoder or
913           player to apply a (usually negative) gain for dialog normalization.
914           This option tells mkvmerge(1) to remove or minimize that gain by
915           modifying the corresponding header fields.
916
917           Currently only AC-3, DTS and TrueHD tracks are affected by this
918           option.
919
920       --timestamps TID:file-name
921           Read the timestamps to be used for the specific track ID from
922           file-name. These timestamps forcefully override the timestamps that
923           mkvmerge(1) normally calculates. Read the section about external
924           timestamp files.
925
926       --default-duration TID:x
927           Forces the default duration of a given track to the specified
928           value. Also modifies the track's timestamps to match the default
929           duration. The argument x must be postfixed with 's', 'ms', 'us',
930           'ns', 'fps', 'p' or 'i' to specify the default duration in seconds,
931           milliseconds, microseconds, nanoseconds, 'frames per second',
932           'progressive frames per second' or 'interlaced frames per second'
933           respectively. The number x itself can be a floating point number or
934           a fraction.
935
936           If the default duration is not forced then mkvmerge will try to
937           derive the track's default duration from the container and/or the
938           encoded bitstream for certain track types, e.g. AVC/H.264 or
939           MPEG-2.
940
941           This option can also be used to change the FPS of video tracks
942           without having to use an external timestamp file.
943
944       --fix-bitstream-timing-information TID[:0|1]
945           Normally mkvmerge(1) does not change the timing information
946           (frame/field rate) stored in the video bitstream. With this option
947           that information is adjusted to match the container timing
948           information. The container timing information can come from various
949           sources: from the command line (see option --default-duration), the
950           source container or derived from the bitstream.
951
952               Note
953               This has only been implemented for AVC/H.264 video tracks so
954               far.
955
956       --nalu-size-length TID:n
957           Forces the NALU size length to n bytes. This parameter is only used
958           if the AVC/H.264 elementary stream packetizer is used. If left out
959           it defaults to 4 bytes, but there are files that contain frames or
960           slices that are all smaller than 65536 bytes. For such files you
961           can use this parameter and decrease the size to 2.
962
963       --compression TID:n
964           Selects the compression method to be used for the track. Note that
965           the player also has to support this method. Valid values are
966           'none', 'zlib' and 'mpeg4_p2'/'mpeg4p2'.
967
968           The compression method 'mpeg4_p2'/'mpeg4p2' is a special
969           compression method called 'header removal' that is only available
970           for MPEG4 part 2 video tracks.
971
972           The default for some subtitle types is 'zlib' compression. This
973           compression method is also the one that most if not all playback
974           applications support. Support for other compression methods other
975           than 'none' is not assured.
976
977   Options that only apply to video tracks
978       -f, --fourcc TID:FourCC
979           Forces the FourCC to the specified value. Works only for video
980           tracks in the 'MS compatibility mode'.
981
982       --display-dimensions TID:widthxheight
983           Matroska(TM) files contain two values that set the display
984           properties that a player should scale the image on playback to:
985           display width and display height. These values can be set with this
986           option, e.g. '1:640x480'.
987
988           Another way to specify the values is to use the --aspect-ratio or
989           the --aspect-ratio-factor option (see below). These options are
990           mutually exclusive.
991
992       --aspect-ratio TID:ratio|width/height
993           Matroska(TM) files contain two values that set the display
994           properties that a player should scale the image on playback to:
995           display width and display height. With this option mkvmerge(1) will
996           automatically calculate the display width and display height based
997           on the image's original width and height and the aspect ratio given
998           with this option. The ratio can be given either as a floating point
999           number ratio or as a fraction 'width/height', e.g. '16/9'.
1000
1001           Another way to specify the values is to use the
1002           --aspect-ratio-factor or --display-dimensions options (see above
1003           and below). These options are mutually exclusive.
1004
1005       --aspect-ratio-factor TID:factor|n/d
1006           Another way to set the aspect ratio is to specify a factor. The
1007           original aspect ratio is first multiplied with this factor and used
1008           as the target aspect ratio afterwards.
1009
1010           Another way to specify the values is to use the --aspect-ratio or
1011           --display-dimensions options (see above). These options are
1012           mutually exclusive.
1013
1014       --cropping TID:left,top,right,bottom
1015           Sets the pixel cropping parameters of a video track to the given
1016           values.
1017
1018       --colour-matrix TID:n
1019           Sets the matrix coefficients of the video used to derive luma and
1020           chroma values from red, green and blue color primaries. The
1021           parameter n is an integer rangeing from 0 and 10.
1022
1023           Valid values and their meaning are:
1024
1025           0: GBR, 1: BT709, 2: unspecified, 3: reserved, 4: FCC, 5: BT470BG,
1026           6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 non-constant
1027           luminance, 10: BT2020 constant luminance
1028
1029       --colour-bits-per-channel TID:n
1030           Sets the number of coded bits for a colour channel. A value of 0
1031           indicates that the number of bits is unspecified.
1032
1033       --chroma-subsample TID:hori,vert
1034           The amount of pixels to remove in the Cr and Cb channels for every
1035           pixel not removed horizontally/vertically.
1036
1037           Example: For video with 4:2:0 chroma subsampling, the parameter
1038           should be set to TID:1,1.
1039
1040       --cb-subsample TID:hori,vert
1041           The amount of pixels to remove in the Cb channel for every pixel
1042           not removed horizontally/vertically. This is additive with
1043           --chroma-subsample.
1044
1045           Example: For video with 4:2:1 chroma subsampling, the parameter
1046           --chroma-subsample should be set to TID:1,0 and Cb-subsample should
1047           be set to TID:1,0.
1048
1049       --chroma-siting TID:hori,vert
1050           Sets how chroma is sited horizontally/vertically (0: unspecified,
1051           1: top collocated, 2: half).
1052
1053       --colour-range TID:n
1054           Sets the clipping of the color ranges (0: unspecified, 1: broadcast
1055           range, 2: full range (no clipping), 3: defined by
1056           MatrixCoefficients/TransferCharacteristics).
1057
1058       --colour-transfer-characteristics TID:n
1059           The transfer characteristics of the video.
1060
1061           Valid values and their meaning are:
1062
1063           0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: gamma
1064           2.2 curve, 5: gamma 2.8 curve, 6: SMPTE 170M, 7: SMPTE 240M, 8:
1065           linear, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361
1066           extended colour gamut, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit,
1067           15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1;
1068           18: ARIB STD-B67 (HLG)
1069
1070       --colour-primaries TID:n
1071           Sets the colour primaries of the video.
1072
1073           Valid values and their meaning are:
1074
1075           0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: ITU-R
1076           BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM,
1077           9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: JEDEC P22 phosphors
1078
1079       --max-content-light TID:n
1080           Sets the maximum brightness of a single pixel (Maximum Content
1081           Light Level) in candelas per square meter (cd/m²). The value of n
1082           should be a non-negtive integer.
1083
1084       --max-frame-light TID:n
1085           Sets the maximum brightness of a single full frame (Maximum
1086           Frame-Average Light Level) in candelas per square meter (cd/m²).
1087           The value of n should be a non-negtive integer.
1088
1089       --chromaticity-coordinates
1090       TID:red-x,red-y,green-x,green-y,blue-x,blue-y
1091           Sets the red/green/blue chromaticity coordinates as defined by CIE
1092           1931.
1093
1094       --white-colour-coordinates TID:x,y
1095           Sets the white colour chromaticity coordinates as defined by CIE
1096           1931.
1097
1098       --max-luminance TID:float
1099           Sets the maximum luminance in candelas per square meter (cd/m²).
1100           The value should be less than 9999.99.
1101
1102       --min-luminance TID:float
1103           Sets the minimum luminance in candelas per square meter (cd/m²).
1104           The value should be less than 999.9999.
1105
1106       --projection-type TID:method
1107           Sets the video projection method used. Valid values are 0
1108           (rectangular projection), 1 (equirectangular projection), 2
1109           (cubemap projection) and 3 (mesh projection).
1110
1111       --projection-private TID:data
1112           Sets private data that only applies to a specific projection. Data
1113           must be given as hex numbers with or without the "0x" prefix, with
1114           or without spaces.
1115
1116       --projection-pose-yaw TID:float
1117           Specifies a yaw rotation to the projection.
1118
1119       --projection-pose-pitch TID:float
1120           Specifies a pitch rotation to the projection.
1121
1122       --projection-pose-roll TID:float
1123           Specifies a roll rotation to the projection.
1124
1125       --field-order TID:n
1126           Sets the field order for the video track with the track ID TID. The
1127           order must be one of the following numbers:
1128
1129           0: progressive; 1: interlaced with top field displayed first and
1130           top field stored first; 2: undetermined field order; 6: interlaced
1131           with bottom field displayed first and bottom field stored first; 9:
1132           interlaced with bottom field displayed first and top field stored
1133           first; 14: interlaced with top field displayed first and bottom
1134           field stored first
1135
1136       --stereo-mode TID:n|keyword
1137           Sets the stereo mode for the video track with the track ID TID. The
1138           mode can either be a number n between 0 and 14 or one of these
1139           keywords:
1140
1141           'mono', 'side_by_side_left_first', 'top_bottom_right_first',
1142           'top_bottom_left_first', 'checkerboard_right_first',
1143           'checkerboard_left_first', 'row_interleaved_right_first',
1144           'row_interleaved_left_first', 'column_interleaved_right_first',
1145           'column_interleaved_left_first', 'anaglyph_cyan_red',
1146           'side_by_side_right_first', 'anaglyph_green_magenta',
1147           'both_eyes_laced_left_first', 'both_eyes_laced_right_first'.
1148
1149   Options that only apply to text subtitle tracks
1150       --sub-charset TID:character-set
1151           Sets the character set for the conversion to UTF-8 for UTF-8
1152           subtitles for the given track ID. If not specified the charset will
1153           be derived from the current locale settings. Note that a charset is
1154           not needed for subtitles read from Matroska(TM) files or from Kate
1155           streams, as these are always stored in UTF-8. See the section about
1156           text files and character sets for an explanation how mkvmerge(1)
1157           converts between character sets.
1158
1159           This option can be used multiple times for an input file applying
1160           to several tracks by selecting different track IDs each time.
1161
1162   Other options
1163       -i, --identify file-name
1164           Will let mkvmerge(1) probe the single file and report its type, the
1165           tracks contained in the file and their track IDs. If this option is
1166           used then the only other option allowed is the filename.
1167
1168           The output format used for the result can be changed with the
1169           option --identification-format.
1170
1171       -J file-name
1172           This is a convenient alias for "--identification-format json
1173           --identify file-name".
1174
1175       -F, --identification-format format
1176           Determines the output format used by the --identify option. The
1177           following formats are supported: text (the default if this option
1178           isn't used) and json.
1179
1180            1. The text format is short and human-readable. It consists of one
1181               line per item found (container, tracks, attachments etc.).
1182
1183               This format is not meant to be parsed. The output will be
1184               translated into the language mkvmerge(1) uses (see also
1185               --ui-language).
1186
1187            2. The json format outputs a machine-readable JSON representation.
1188               This format follows the JSON schema described in the following
1189               file:
1190
1191               mkvmerge-identification-output-schema-v12.json[3]
1192
1193               All versions of the JSON schema are available both online and
1194               in the released source code archives.
1195
1196       --probe-range-percentage percentage
1197           File types such as MPEG program and transport streams (.vob, .m2ts)
1198           require parsing a certain amount of data in order to detect all
1199           tracks contained in the file. This amount is 0.3% of the source
1200           file's size or 10 MB, whichever is higher.
1201
1202           If tracks are known to be present but not found then the percentage
1203           to probe can be changed with this option. The minimum of 10 MB is
1204           built-in and cannot be changed.
1205
1206       -l, --list-types
1207           Lists supported input file types.
1208
1209       --list-languages
1210           Lists all languages and their ISO 639-2 code which can be used with
1211           the --language option.
1212
1213       --priority priority
1214           Sets the process priority that mkvmerge(1) runs with. Valid values
1215           are 'lowest', 'lower', 'normal', 'higher' and 'highest'. If nothing
1216           is given then 'normal' is used. On Unix like systems mkvmerge(1)
1217           will use the nice(2) function. Therefore only the super user can
1218           use 'higher' and 'highest'. On Windows all values are useable for
1219           every user.
1220
1221           Selecting 'lowest' also causes mkvmerge(1) to select idle I/O
1222           priority in addition to the lowest possible process priority.
1223
1224       --command-line-charset character-set
1225           Sets the character set to convert strings given on the command line
1226           from. It defaults to the character set given by system's current
1227           locale. This settings applies to arguments of the following
1228           options: --title, --track-name and --attachment-description.
1229
1230       --output-charset character-set
1231           Sets the character set to which strings are converted that are to
1232           be output. It defaults to the character set given by system's
1233           current locale.
1234
1235       -r, --redirect-output file-name
1236           Writes all messages to the file file-name instead of to the
1237           console. While this can be done easily with output redirection
1238           there are cases in which this option is needed: when the terminal
1239           reinterprets the output before writing it to a file. The character
1240           set set with --output-charset is honored.
1241
1242       --flush-on-close
1243           Tells the program to flush all data cached in memory to storage
1244           when closing files opened for writing. This can be used to prevent
1245           data loss on power outages or to circumvent certain problems in the
1246           operating system or drivers. The downside is that multiplexing will
1247           take longer as mkvmerge will wait until all data has been written
1248           to the storage before exiting. See issues #2469 and #2480 on the
1249           MKVToolNix bug tracker for in-depth discussions on the pros and
1250           cons.
1251
1252       --ui-language code
1253           Forces the translations for the language code to be used (e.g.
1254           'de_DE' for the German translations). Entering 'list' as the code
1255           will cause the program to output a list of available translations.
1256
1257       --abort-on-warnings
1258           Tells the program to abort after the first warning is emitted. The
1259           program's exit code will be 1.
1260
1261       --deterministic seed
1262           Enables the creation of byte-identical files if the same version of
1263           mkvmerge(1) is used with the same source files, the same set of
1264           options and the same seed. Note that the "date" segment information
1265           field is not written in this mode.
1266
1267           The seed can be an arbitrary string and does not have to be a
1268           number.
1269
1270           The result of byte-identical files is only guaranteed under the
1271           following conditions:
1272
1273            1. The same version of mkvmerge(1) built with the same versions of
1274               libEBML and libMatroska is used.
1275
1276            2. The source files used are byte-identical.
1277
1278            3. The same command line options are used in the same order (with
1279               the notable exception of --output ...).
1280
1281           Using other versions of mkvmerge(1) or other command-line options
1282           may result in the same byte-identical file but is not guaranteed to
1283           do so.
1284
1285       --debug topic
1286           Turn on debugging for a specific feature. This option is only
1287           useful for developers.
1288
1289       --engage feature
1290           Turn on experimental features. A list of available features can be
1291           requested with mkvmerge --engage list. These features are not meant
1292           to be used in normal situations.
1293
1294       --gui-mode
1295           Turns on GUI mode. In this mode specially-formatted lines may be
1296           output that can tell a controlling GUI what's happening. These
1297           messages follow the format '#GUI#message'. The message may be
1298           followed by key/value pairs as in
1299           '#GUI#message#key1=value1#key2=value2...'. Neither the messages nor
1300           the keys are ever translated and always output in English.
1301
1302       @options-file.json
1303           Reads additional command line arguments from the file options-file.
1304           See the section about option files for further information.
1305
1306       --capabilities
1307           Lists information about optional features that have been compiled
1308           in and exit. The first line output will be the version information.
1309           All following lines contain exactly one word whose presence
1310           indicates that the feature has been compiled in. These features
1311           are:
1312
1313           ·   'FLAC' -- reading raw FLAC files and handling FLAC tracks in
1314               other containers, e.g.  Ogg(TM) or Matroska(TM).
1315
1316       -h, --help
1317           Show usage information and exit.
1318
1319       -V, --version
1320           Show version information and exit.
1321

USAGE

1323       For each file the user can select which tracks mkvmerge(1) should take.
1324       They are all put into the file specified with -o. A list of known (and
1325       supported) source formats can be obtained with the -l option.
1326
1327           Important
1328           The order of command line options is important. Please read the
1329           section "Option order" if you're new to the program.
1330

OPTION ORDER

1332       The order in which options are entered is important for some options.
1333       Options fall into two categories:
1334
1335        1. Options that affect the whole program and are not tied to any input
1336           file. These include but are not limited to --command-line-charset,
1337           --output or --title. These can appear anywhere on the command line.
1338
1339        2. Options that affect a single input file or a single track in an
1340           input file. These options all apply to the following input file on
1341           the command line. All options applying to the same input (or to
1342           tracks from the same input file) file can be written in any order
1343           as long as they all appear before that input file's name. Examples
1344           for options applying to an input file are --no-chapters or
1345           --chapter-charset. Examples for options applying to a single track
1346           are --default-duration or --language.
1347
1348       The options are processed from left to right. If an option appears
1349       multiple times within the same scope then the last occurrence will be
1350       used. Therefore the title will be set to "Something else" in the
1351       following example:
1352
1353           $ mkvmerge -o output.mkv --title 'This and that' input.avi --title 'Something else'
1354
1355       The following example shows that using the --language option twice is
1356       OK because they're used in different scopes. Even though they apply to
1357       the same track ID they apply to different input files and therefore
1358       have different scopes:
1359
1360           $ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg
1361

EXAMPLES

1363       Let's assume you have a file called MyMovie.avi and the audio track in
1364       a separate file, e.g. 'MyMovie.wav'. First you want to encode the audio
1365       to OggVorbis(TM):
1366
1367           $ oggenc -q4 -oMyMovie.ogg MyMovie.wav
1368
1369       After a couple of minutes you can join video and audio:
1370
1371           $ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg
1372
1373       If your AVI already contains an audio track then it will be copied as
1374       well (if mkvmerge(1) supports the audio format). To avoid that simply
1375       do
1376
1377           $ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg
1378
1379       After some minutes of consideration you rip another audio track, e.g.
1380       the director's comments or another language to 'MyMovie-add-audio.wav'.
1381       Encode it again and join it up with the other file:
1382
1383           $ oggenc -q4 -oMyMovie-add-audio.ogg MyMovie-add-audio.wav
1384           $ mkvmerge -o MM-complete.mkv MyMovie-with-sound.mkv MyMovie-add-audio.ogg
1385
1386       The same result can be achieved with
1387
1388           $ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg
1389
1390       Now fire up mplayer(TM) and enjoy. If you have multiple audio tracks
1391       (or even video tracks) then you can tell mplayer(TM) which track to
1392       play with the '-vid' and '-aid' options. These are 0-based and do not
1393       distinguish between video and audio.
1394
1395       If you need an audio track synchronized you can do that easily. First
1396       find out which track ID the Vorbis track has with
1397
1398           $ mkvmerge --identify outofsync.ogg
1399
1400       Now you can use that ID in the following command line:
1401
1402           $ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg
1403
1404       This would add 200ms of silence at the beginning of the audio track
1405       with the ID 12345 taken from 'outofsync.ogg'.
1406
1407       Some movies start synced correctly but slowly drift out of sync. For
1408       these kind of movies you can specify a delay factor that is applied to
1409       all timestamps -- no data is added or removed. So if you make that
1410       factor too big or too small you'll get bad results. An example is that
1411       an episode I transcoded was 0.2 seconds out of sync at the end of the
1412       movie which was 77340 frames long. At 29.97fps 0.2 seconds correspond
1413       to approx.  6 frames. So I did
1414
1415           $ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv
1416
1417       The result was fine.
1418
1419       The sync options can also be used for subtitles in the same manner.
1420
1421       For text subtitles you can either use some Windows software (like
1422       SubRipper(TM)) or the subrip(TM) package found in transcode(1)'s
1423       sources in the 'contrib/subrip' directory. The general process is:
1424
1425        1. extract a raw subtitle stream from the source:
1426
1427               $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie
1428
1429        2. convert the resulting PGM images to text with gocr:
1430
1431               $ pgm2txt mymovie
1432
1433        3. spell-check the resulting text files:
1434
1435               $ ispell -d american *txt
1436
1437        4. convert the text files to a SRT file:
1438
1439               $ srttool -s -w -i mymovie.srtx -o mymovie.srt
1440
1441       The resulting file can be used as another input file for mkvmerge(1):
1442
1443           $ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt
1444
1445       If you want to specify the language for a given track then this is
1446       easily done. First find out the ISO 639-2 code for your language.
1447       mkvmerge(1) can list all of those codes for you:
1448
1449           $ mkvmerge --list-languages
1450
1451       Search the list for the languages you need. Let's assume you have put
1452       two audio tracks into a Matroska(TM) file and want to set their
1453       language codes and that their track IDs are 2 and 3. This can be done
1454       with
1455
1456           $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.mkv
1457
1458       As you can see you can use the --language switch multiple times.
1459
1460       Maybe you'd also like to have the player use the Dutch language as the
1461       default language. You also have extra subtitles, e.g. in English and
1462       French, and want to have the player display the French ones by default.
1463       This can be done with
1464
1465           $ 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
1466
1467       If you do not see the language or default track flags that you've
1468       specified in mkvinfo(1)'s output then please read the section about
1469       default values.
1470
1471       Turn off the compression for an input file.
1472
1473           $ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt
1474

TRACK IDS

1476   Regular track IDs
1477       Some of the options for mkvmerge(1) need a track ID to specify which
1478       track they should be applied to. Those track IDs are printed by the
1479       readers when demuxing the current input file, or if mkvmerge(1) is
1480       called with the --identify option. An example for such output:
1481
1482           $ mkvmerge -i v.mkv
1483           File 'v.mkv': container: Matroska(TM)
1484           Track ID 0: video (V_MS/VFW/FOURCC, DIV3)
1485           Track ID 1: audio (A_MPEG/L3)
1486
1487       Do not confuse the track IDs that are assigned to the tracks that are
1488       placed in the output MKV file with the track IDs of the input files.
1489       Only the input file track IDs are used for options needing these
1490       values.
1491
1492       Also note that each input file has its own set of track IDs. Therefore
1493       the track IDs for file 'file1.ext' as reported by 'mkvmerge --identify'
1494       do not change no matter how many other input files are there or in
1495       which position 'file1.ext' is used.
1496
1497       Track IDs are assigned like this:
1498
1499       ·   AVI files: The video track has the ID 0. The audio tracks get IDs
1500           in ascending order starting at 1.
1501
1502       ·   AAC, AC-3, MP3, SRT and WAV files: The one 'track' in that file
1503           gets the ID 0.
1504
1505       ·   Most other files: The track IDs are assigned in order the tracks
1506           are found in the file starting at 0.
1507
1508       The options that use the track IDs are the ones whose description
1509       contains 'TID'. The following options use track IDs as well:
1510       --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks and
1511       --track-tags.
1512
1513   Special track IDs
1514       There are several IDs that have special meaning and do not occur in the
1515       identification output.
1516
1517       The special track ID '-1' is a wild card and applies the given switch
1518       to all tracks that are read from an input file.
1519
1520       The special track ID '-2' refers to the chapters in a source file.
1521       Currently only the --sync option uses this special ID. As an
1522       alternative to --sync -2:...  the option --chapter-sync ...  can be
1523       used.
1524

TEXT FILES AND CHARACTER SET CONVERSIONS

1526           Note
1527           This section applies to all programs in MKVToolNix even if it only
1528           mentions mkvmerge(1).
1529
1530   Introduction
1531       All text in a Matroska(TM) file is encoded in UTF-8. This means that
1532       mkvmerge(1) has to convert every text file it reads as well as every
1533       text given on the command line from one character set into UTF-8. In
1534       return this also means that mkvmerge(1)'s output has to be converted
1535       back to that character set from UTF-8, e.g. if a non-English
1536       translation is used with --ui-language or for text originating from a
1537       Matroska(TM) file.
1538
1539       mkvmerge(1) does this conversion automatically based on the presence of
1540       a byte order marker (short: BOM) or the system's current locale. How
1541       the character set is inferred from the locale depends on the operating
1542       system that mkvmerge(1) is run on.
1543
1544   Byte order markers (BOM)
1545       Text files that start with a BOM are already encoded in one
1546       representation of UTF.  mkvmerge(1) supports the following five modes:
1547       UTF-8, UTF-16 Little and Big Endian, UTF-32 Little and Big Endian. Text
1548       files with a BOM are automatically converted to UTF-8. Any of the
1549       parameters that would otherwise set the character set for such a file
1550       (e.g.  --sub-charset) is silently ignored.
1551
1552   Linux and Unix-like systems including macOS
1553       On Unix-like systems mkvmerge(1) uses the setlocale(3) system call
1554       which in turn uses the environment variables LANG, LC_ALL and LC_CYPE.
1555       The resulting character set is often one of UTF-8 or the ISO-8859-*
1556       family and is used for all text file operations and for encoding
1557       strings on the command line and for output to the console.
1558
1559   Windows
1560       On Windows the default character set used for converting text files is
1561       determined by a call to the GetACP() system call.
1562
1563       Reading the command line is done with the GetCommandLineW() function
1564       which already returns a Unicode string. Therefore the option
1565       --command-line-charset is ignored on Windows.
1566
1567       Output to the console consists of three scenarios:
1568
1569        1. If the output is redirected with the option --redirect-output then
1570           the default charset is UTF-8. This can be changed with
1571           --output-charset.
1572
1573           If the output is redirected with cmd.exe itself, e.g. with mkvinfo
1574           file.mkv > info.txt, then the charset is always UTF-8 and cannot be
1575           changed.
1576
1577           Otherwise (when writing directly to the console) the Windows
1578           function WriteConsoleW() is used and the option --output-charset is
1579           ignored. The console should be able to output all Unicode
1580           characters for which the corresponding language support is
1581           installed (e.g. Chinese characters might not be displayed on
1582           English Windows versions).
1583
1584   Command line options
1585       The following options exist that allow specifying the character sets:
1586
1587       ·   --sub-charset for text subtitle files and for text subtitle tracks
1588           stored in container formats for which the character set cannot be
1589           determined unambiguously (e.g. Ogg files),
1590
1591       ·   --chapter-charset for chapter text files and for chapters and file
1592           titles stored in container formats for which the character set
1593           cannot be determined unambiguously (e.g. Ogg files for chapter
1594           information, track and file titles etc; MP4 files for chapter
1595           information),
1596
1597       ·   --command-line-charset for all strings on the command line,
1598
1599       ·   --output-charset for all strings written to the console or to a
1600           file if the output has been redirected with the --redirect-output
1601           option. On non-Windows systems the default for the output charset
1602           is the system's current charset. On Windows it defaults to UTF-8
1603           both for redirecting with --redirect-output and with cmd.exe
1604           itself, e.g.  mkvinfo file.mkv > info.txt.
1605

OPTION FILES

1607       An option file is a file mkvmerge(1) can read additional command line
1608       arguments from. This can be used in order to circumvent certain
1609       limitations of the shell or the operating system when executing
1610       external programs like a limited command line length.
1611
1612       An option file contains JSON-formatted data. Its content must be a
1613       valid JSON array consisting solely of JSON strings. The file's encoding
1614       must be UTF-8. The file should not start with a byte order marker
1615       (BOM), but if one exists, it will be skipped.
1616
1617       The rules for escaping special characters inside JSON are the ones in
1618       the official JSON specification, RFC 7159[4].
1619
1620       The command line 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg'
1621       could be converted into the following JSON option file called e.g.
1622       'options.json':
1623
1624           [
1625             "-o",
1626             "c:\\Matroska\\my file.mkv",
1627             "--title",
1628             "#65",
1629             "-A",
1630             "a movie.avi",
1631             "sound.ogg"
1632           ]
1633

FILE LINKING

1635       Matroska(TM) supports file linking which simply says that a specific
1636       file is the predecessor or successor of the current file. To be
1637       precise, it's not really the files that are linked but the Matroska(TM)
1638       segments. As most files will probably only contain one Matroska(TM)
1639       segment the following explanations use the term 'file linking' although
1640       'segment linking' would be more appropriate.
1641
1642       Each segment is identified by a unique 128 bit wide segment UID. This
1643       UID is automatically generated by mkvmerge(1). The linking is done
1644       primarily via putting the segment UIDs (short: SID) of the
1645       previous/next file into the segment header information.  mkvinfo(1)
1646       prints these SIDs if it finds them.
1647
1648       If a file is split into several smaller ones and linking is used then
1649       the timestamps will not start at 0 again but will continue where the
1650       last file has left off. This way the absolute time is kept even if the
1651       previous files are not available (e.g. when streaming). If no linking
1652       is used then the timestamps should start at 0 for each file. By default
1653       mkvmerge(1) does not use file linking. If you want that you can turn it
1654       on with the --link option. This option is only useful if splitting is
1655       activated as well.
1656
1657       Regardless of whether splitting is active or not the user can tell
1658       mkvmerge(1) to link the produced files to specific SIDs. This is
1659       achieved with the options --link-to-previous and --link-to-next. These
1660       options accept a segment SID in the format that mkvinfo(1) outputs: 16
1661       hexadecimal numbers between 0x00 and 0xff prefixed with '0x' each, e.g.
1662       '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca
1663       0xb3 0x93'. Alternatively a shorter form can be used: 16 hexadecimal
1664       numbers between 0x00 and 0xff without the '0x' prefixes and without the
1665       spaces, e.g. '41da7366d9cfb21eae78ebb45ecab393'.
1666
1667       If splitting is used then the first file is linked to the SID given
1668       with --link-to-previous and the last file is linked to the SID given
1669       with --link-to-next. If splitting is not used then the one output file
1670       will be linked to both of the two SIDs.
1671

DEFAULT VALUES

1673       The Matroska(TM) specification states that some elements have a default
1674       value. Usually an element is not written to the file if its value is
1675       equal to its default value in order to save space. The elements that
1676       the user might miss in mkvinfo(1)'s output are the language and the
1677       default track flag elements. The default value for the language is
1678       English ('eng'), and the default value for the default track flag is
1679       true. Therefore if you used --language 0:eng for a track then it will
1680       not show up in mkvinfo(1)'s output.
1681

ATTACHMENTS

1683       Maybe you also want to keep some photos along with your Matroska(TM)
1684       file, or you're using SSA subtitles and need a special TrueType(TM)
1685       font that's really rare. In these cases you can attach those files to
1686       the Matroska(TM) file. They will not be just appended to the file but
1687       embedded in it. A player can then show those files (the 'photos' case)
1688       or use them to render the subtitles (the 'TrueType(TM) fonts' case).
1689
1690       Here's an example how to attach a photo and a TrueType(TM) font to the
1691       output file:
1692
1693           $ mkvmerge -o output.mkv -A video.avi sound.ogg \
1694             --attachment-description "Me and the band behind the stage in a small get-together" \
1695             --attachment-mime-type image/jpeg \
1696             --attach-file me_and_the_band.jpg \
1697             --attachment-description "The real rare and unbelievably good looking font" \
1698             --attachment-mime-type application/octet-stream \
1699             --attach-file really_cool_font.ttf
1700
1701       If a Matroska(TM) containing attachments file is used as an input file
1702       then mkvmerge(1) will copy the attachments into the new file. The
1703       selection which attachments are copied and which are not can be changed
1704       with the options --attachments and --no-attachments.
1705

CHAPTERS

1707       The Matroska(TM) chapter system is more powerful than the old known
1708       system used by OGM files. The full specifications can be found at the
1709       Matroska(TM) website[1].
1710
1711       mkvmerge(1) supports two kinds of chapter files as its input. The first
1712       format, called 'simple chapter format', is the same format that the OGM
1713       tools expect. The second format is a XML based chapter format which
1714       supports all of Matroska(TM)'s chapter functionality.
1715
1716       Apart from dedicated chapter files mkvmerge(1) can also read chapters
1717       from other file formats (e.g. MP4, Ogg, Blu-rays or DVDs).
1718
1719   The simple chapter format
1720       This format consists of pairs of lines that start with 'CHAPTERxx=' and
1721       'CHAPTERxxNAME=' respectively. The first one contains the start
1722       timestamp while the second one contains the title. Here's an example:
1723
1724           CHAPTER01=00:00:00.000
1725           CHAPTER01NAME=Intro
1726           CHAPTER02=00:02:30.000
1727           CHAPTER02NAME=Baby prepares to rock
1728           CHAPTER03=00:02:42.300
1729           CHAPTER03NAME=Baby rocks the house
1730
1731       mkvmerge(1) will transform every pair or lines into one Matroska(TM)
1732       ChapterAtom. It does not set any ChapterTrackNumber which means that
1733       the chapters all apply to all tracks in the file.
1734
1735       As this is a text file character set conversion may need to be done.
1736       See the section about text files and character sets for an explanation
1737       how mkvmerge(1) converts between character sets.
1738
1739   The XML based chapter format
1740       The XML based chapter format looks like this example:
1741
1742           <?xml version="1.0" encoding="ISO-8859-1"?>
1743           <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd">
1744           <Chapters>
1745             <EditionEntry>
1746               <ChapterAtom>
1747                 <ChapterTimeStart>00:00:30.000</ChapterTimeStart>
1748                 <ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
1749                 <ChapterDisplay>
1750                   <ChapterString>A short chapter</ChapterString>
1751                   <ChapterLanguage>eng</ChapterLanguage>
1752                 </ChapterDisplay>
1753                 <ChapterAtom>
1754                   <ChapterTimeStart>00:00:46.000</ChapterTimeStart>
1755                   <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
1756                   <ChapterDisplay>
1757                     <ChapterString>A part of that short chapter</ChapterString>
1758                     <ChapterLanguage>eng</ChapterLanguage>
1759                   </ChapterDisplay>
1760                 </ChapterAtom>
1761               </ChapterAtom>
1762             </EditionEntry>
1763           </Chapters>
1764
1765       With this format three things are possible that are not possible with
1766       the simple chapter format:
1767
1768        1. The timestamp for the end of the chapter can be set,
1769
1770        2. chapters can be nested,
1771
1772        3. the language and country can be set.
1773
1774       The mkvtoolnix distribution contains some sample files in the doc
1775       subdirectory which can be used as a basis.
1776
1777       The following lists the supported XML tags, their data types and, where
1778       appropriate, the valid range for their values:
1779
1780           Chapters (master)
1781             EditionEntry (master)
1782               EditionUID (unsigned integer, valid range: 1 <= value)
1783               EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
1784               EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1)
1785               EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1)
1786               ChapterAtom (master)
1787                 ChapterAtom (master)
1788                 ChapterUID (unsigned integer, valid range: 1 <= value)
1789                 ChapterTimeStart (unsigned integer)
1790                 ChapterTimeEnd (unsigned integer)
1791                 ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
1792                 ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1)
1793                 ChapterSegmentUID (binary, valid range: 1 <= length in bytes)
1794                 ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value)
1795                 ChapterPhysicalEquiv (unsigned integer)
1796                 ChapterTrack (master)
1797                   ChapterTrackNumber (unsigned integer, valid range: 1 <= value)
1798                 ChapterDisplay (master)
1799                   ChapterString (UTF-8 string)
1800                   ChapterLanguage (UTF-8 string)
1801                   ChapterCountry (UTF-8 string)
1802                 ChapterProcess (master)
1803                   ChapterProcessCodecID (unsigned integer)
1804                   ChapterProcessPrivate (binary)
1805                   ChapterProcessCommand (master)
1806                     ChapterProcessTime (unsigned integer)
1807                     ChapterProcessData (binary)
1808
1809   Reading chapters from Blu-rays
1810       mkvmerge(1) can read chapters from unencrypted Blu-rays. For that you
1811       can use the path to one of the MPLS play lists with the --chapters
1812       parameter.
1813
1814       Example: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
1815
1816   Reading chapters from DVDs
1817       When MKVToolNix is compiled with the libdvdread(TM) library,
1818       mkvmerge(1) can read chapters from DVDs. For that you can use the path
1819       to one of the folders or files on the DVD with the --chapters
1820       parameter. As DVDs can contain more than one title and each title has
1821       its own set of chapters, you can append a colon and the desired title
1822       number to the end of the file name argument. The title number defaults
1823       to 1.
1824
1825       Example: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
1826
1827   General notes
1828       When splitting files mkvmerge(1) will correctly adjust the chapters as
1829       well. This means that each file only includes the chapter entries that
1830       apply to it, and that the timestamps will be offset to match the new
1831       timestamps of each output file.
1832
1833       mkvmerge(1) is able to copy chapters from Matroska(TM) source files
1834       unless this is explicitly disabled with the --no-chapters option. The
1835       chapters from all sources (Matroska(TM) files, Ogg files, MP4 files,
1836       chapter text files) are usually not merged but end up in separate
1837       ChapterEditions. Only if chapters are read from several Matroska(TM) or
1838       XML files that share the same edition UIDs will chapters be merged into
1839       a single ChapterEdition. If such a merge is desired in other situations
1840       as well then the user has to extract the chapters from all sources with
1841       mkvextract(1) first, merge the XML files manually and mux them
1842       afterwards.
1843

TAGS

1845   Introduction
1846       Matroska(TM)'s tag system is similar to that of other containers: a set
1847       of KEY=VALUE pairs. However, in Matroska(TM) these tags can also be
1848       nested, and both the KEY and the VALUE are elements of their own. The
1849       example file example-tags-2.xml shows how to use this system.
1850
1851   Scope of the tags
1852       Matroska(TM) tags do not automatically apply to the complete file. They
1853       can, but they also may apply to different parts of the file: to one or
1854       more tracks, to one or more chapters, or even to a combination of both.
1855       The Matroska(TM) specification[5] gives more details about this fact.
1856
1857       One important fact is that tags are linked to tracks or chapters with
1858       the Targets Matroska(TM) tag element, and that the UIDs used for this
1859       linking are not the track IDs mkvmerge(1) uses everywhere. Instead the
1860       numbers used are the UIDs which mkvmerge(1) calculates automatically
1861       (if the track is taken from a file format other than Matroska(TM)) or
1862       which are copied from the source file if the track's source file is a
1863       Matroska(TM) file. Therefore it is difficult to know which UIDs to use
1864       in the tag file before the file is handed over to mkvmerge(1).
1865
1866       mkvmerge(1) knows two options with which you can add tags to
1867       Matroska(TM) files: The --global-tags and the --tags options. The
1868       difference is that the former option, --global-tags, will make the tags
1869       apply to the complete file by removing any of those Targets elements
1870       mentioned above. The latter option, --tags, automatically inserts the
1871       UID that mkvmerge(1) generates for the tag specified with the TID part
1872       of the --tags option.
1873
1874   Example
1875       Let's say that you want to add tags to a video track read from an AVI.
1876       mkvmerge --identify file.avi tells you that the video track's ID (do
1877       not mix this ID with the UID!) is 0. So you create your tag file, leave
1878       out all Targets elements and call mkvmerge(1):
1879
1880           $ mkvmerge -o file.mkv --tags 0:tags.xml file.avi
1881
1882   Tag file format
1883       mkvmerge(1) supports a XML based tag file format. The format is very
1884       closely modeled after the Matroska(TM) specification[5]. Both the
1885       binary and the source distributions of MKVToolNix come with a sample
1886       file called example-tags-2.xml which simply lists all known tags and
1887       which can be used as a basis for real life tag files.
1888
1889       The basics are:
1890
1891       ·   The outermost element must be <Tags>.
1892
1893       ·   One logical tag is contained inside one pair of <Tag> XML tags.
1894
1895       ·   White spaces directly before and after tag contents are ignored.
1896
1897   Data types
1898       The new Matroska(TM) tagging system only knows two data types, a UTF-8
1899       string and a binary type. The first is used for the tag's name and the
1900       <String> element while the binary type is used for the <Binary>
1901       element.
1902
1903       As binary data itself would not fit into a XML file mkvmerge(1)
1904       supports two other methods of storing binary data. If the contents of a
1905       XML tag starts with '@' then the following text is treated as a file
1906       name. The corresponding file's content is copied into the Matroska(TM)
1907       element.
1908
1909       Otherwise the data is expected to be Base64 encoded. This is an
1910       encoding that transforms binary data into a limited set of ASCII
1911       characters and is used e.g. in email programs.  mkvextract(1) will
1912       output Base64 encoded data for binary elements.
1913
1914       The deprecated tagging system knows some more data types which can be
1915       found in the official Matroska(TM) tag specs. As mkvmerge(1) does not
1916       support this system anymore these types aren't described here.
1917
1918   Known tags for the XML file format
1919       The following lists the supported XML tags, their data types and, where
1920       appropriate, the valid range for their values:
1921
1922           Tags (master)
1923             Tag (master)
1924               Targets (master)
1925                 TargetTypeValue (unsigned integer)
1926                 TargetType (UTF-8 string)
1927                 TrackUID (unsigned integer)
1928                 EditionUID (unsigned integer)
1929                 ChapterUID (unsigned integer)
1930                 AttachmentUID (unsigned integer)
1931               Simple (master)
1932                 Simple (master)
1933                 Name (UTF-8 string)
1934                 TagLanguage (UTF-8 string)
1935                 DefaultLanguage (unsigned integer)
1936                 String (UTF-8 string)
1937                 Binary (binary)
1938

THE SEGMENT INFO XML FILES

1940       With a segment info XML file it is possible to set certain values in
1941       the "segment information" header field of a Matroska(TM) file. All of
1942       these values cannot be set via other command line options.
1943
1944       Other "segment information" header fields can be set via command line
1945       options but not via the XML file. This includes e.g. the --title and
1946       the --timestamp-scale options.
1947
1948       There are other elements that can be set neither via command line
1949       options nor via the XML files. These include the following elements:
1950       DateUTC (also known as the "muxing date"), MuxingApp, WritingApp and
1951       Duration. They're always set by mkvmerge(1) itself.
1952
1953       The following lists the supported XML tags, their data types and, where
1954       appropriate, the valid range for their values:
1955
1956           Info (master)
1957             SegmentUID (binary, valid range: length in bytes == 16)
1958             SegmentFilename (UTF-8 string)
1959             PreviousSegmentUID (binary, valid range: length in bytes == 16)
1960             PreviousSegmentFilename (UTF-8 string)
1961             NextSegmentUID (binary, valid range: length in bytes == 16)
1962             NextSegmentFilename (UTF-8 string)
1963             SegmentFamily (binary, valid range: length in bytes == 16)
1964             ChapterTranslate (master)
1965               ChapterTranslateEditionUID (unsigned integer)
1966               ChapterTranslateCodec (unsigned integer)
1967               ChapterTranslateID (binary)
1968

MATROSKA(TM) FILE LAYOUT

1970       The Matroska(TM) file layout is quite flexible.  mkvmerge(1) will
1971       render a file in a predefined way. The resulting file looks like this:
1972
1973       [EBML head] [segment {meta seek #1} [segment information] [track
1974       information] {attachments} {chapters} [cluster 1] {cluster 2} ...
1975       {cluster n} {cues} {meta seek #2} {tags}]
1976
1977       The elements in curly braces are optional and depend on the contents
1978       and options used. A couple of notes:
1979
1980       ·   meta seek #1 includes only a small number of level 1 elements, and
1981           only if they actually exist: attachments, chapters, cues, tags,
1982           meta seek #2. Older versions of mkvmerge(1) used to put the
1983           clusters into this meta seek element as well. Therefore some
1984           imprecise guessing was necessary to reserve enough space. It often
1985           failed. Now only the clusters are stored in meta seek #2, and meta
1986           seek #1 refers to the meta seek element #2.
1987
1988       ·   Attachment, chapter and tag elements are only present if they were
1989           added.
1990
1991       The shortest possible Matroska(TM) file would look like this:
1992
1993       [EBML head] [segment [segment information] [track information] [cluster
1994       1]]
1995
1996       This might be the case for audio-only files.
1997

EXTERNAL TIMESTAMP FILES

1999       mkvmerge(1) allows the user to chose the timestamps for a specific
2000       track himself. This can be used in order to create files with variable
2001       frame rate video or include gaps in audio. A frame in this case is the
2002       unit that mkvmerge(1) creates separately per Matroska(TM) block. For
2003       video this is exactly one frame, for audio this is one packet of the
2004       specific audio type. E.g. for AC-3 this would be a packet containing
2005       1536 samples.
2006
2007       Timestamp files that are used when tracks are appended to each other
2008       must only be specified for the first part in a chain of tracks. For
2009       example if you append two files, v1.avi and v2.avi, and want to use
2010       timestamps then your command line must look something like this:
2011
2012           $ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi
2013
2014       There are four formats that are recognized by mkvmerge(1). The first
2015       line always contains the version number. Empty lines, lines containing
2016       only whitespace and lines beginning with '#' are ignored.
2017
2018   Timestamp file format v1
2019       This format starts with the version line. The second line declares the
2020       default number of frames per second. All following lines contain three
2021       numbers separated by commas: the start frame (0 is the first frame),
2022       the end frame and the number of frames in this range. The FPS is a
2023       floating point number with the dot '.' as the decimal point. The ranges
2024       can contain gaps for which the default FPS is used. An example:
2025
2026           # timestamp format v1
2027           assume 27.930
2028           800,1000,25
2029           1500,1700,30
2030
2031   Timestamp file format v2
2032       In this format each line contains a timestamp for the corresponding
2033       frame. This timestamp must be given in millisecond precision. It can be
2034       a floating point number, but it doesn't have to be. You have to give at
2035       least as many timestamp lines as there are frames in the track. The
2036       timestamps in this file must be sorted. Example for 25fps:
2037
2038           # timestamp format v2
2039           0
2040           40
2041           80
2042
2043   Timestamp file format v3
2044       In this format each line contains a duration in seconds followed by an
2045       optional number of frames per second. Both can be floating point
2046       numbers. If the number of frames per second is not present the default
2047       one is used. For audio you should let the codec calculate the frame
2048       timestamps itself. For that you should be using 0.0 as the number of
2049       frames per second. You can also create gaps in the stream by using the
2050       'gap' keyword followed by the duration of the gap. Example for an audio
2051       file:
2052
2053           # timestamp format v3
2054           assume 0.0
2055           25.325
2056           7.530,38.236
2057           gap, 10.050
2058           2.000,38.236
2059
2060   Timestamp file format v4
2061       This format is identical to the v2 format. The only difference is that
2062       the timestamps do not have to be sorted. This format should almost
2063       never be used.
2064

EXIT CODES

2066       mkvmerge(1) exits with one of three exit codes:
2067
2068       ·   0 -- This exit code means that muxing has completed successfully.
2069
2070       ·   1 -- In this case mkvmerge(1) has output at least one warning, but
2071           muxing did continue. A warning is prefixed with the text
2072           'Warning:'. Depending on the issues involved the resulting file
2073           might be ok or not. The user is urged to check both the warning and
2074           the resulting file.
2075
2076       ·   2 -- This exit code is used after an error occurred.  mkvmerge(1)
2077           aborts right after outputting the error message. Error messages
2078           range from wrong command line arguments over read/write errors to
2079           broken files.
2080

ENVIRONMENT VARIABLES

2082       mkvmerge(1) uses the default variables that determine the system's
2083       locale (e.g.  LANG and the LC_* family). Additional variables:
2084
2085       MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG and its short form MTX_DEBUG
2086           The content is treated as if it had been passed via the --debug
2087           option.
2088
2089       MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE and its short form MTX_ENGAGE
2090           The content is treated as if it had been passed via the --engage
2091           option.
2092

SEE ALSO

2094       mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
2095

WWW

2097       The latest version can always be found at the MKVToolNix homepage[6].
2098

AUTHOR

2100       Moritz Bunkus <moritz@bunkus.org>
2101           Developer
2102

NOTES

2104        1. the Matroska(TM) website
2105           https://www.matroska.org/
2106
2107        2. the IANA homepage
2108           https://www.iana.org/assignments/media-types/
2109
2110        3. mkvmerge-identification-output-schema-v12.json
2111           https://mkvtoolnix.download/doc/mkvmerge-identification-output-schema-v12.json
2112
2113        4. RFC 7159
2114           https://tools.ietf.org/html/rfc7159
2115
2116        5. Matroska(TM) specification
2117           https://www.matroska.org/technical/specs/index.html
2118
2119        6. the MKVToolNix homepage
2120           https://mkvtoolnix.download/
2121
2122
2123
2124MKVToolNix 53.0.0                 2021-01-30                       MKVMERGE(1)
Impressum