mkvmerge -- Spojit multimediální proudy do souboru Matroska

mkvmerge -- Spojit multimediální proudy do souboru Matroska(tm)

# 1. Přehled

mkvmerge global options {-o out} options1 {file1} options2 {file2} @options-file.json

# 2. Popis

Tento program načte vstup z několika mediálních souborů a spojí jejich proudy (všechny nebo pouze výběr) do souboru Matroska(tm); viz web Matroska.

Important:

Pořadí voleb příkazového řádku je důležité. Pokud program používáte poprvé, přečtěte si oddíl "Pořadí voleb".

## 2.1. Globální volby

Option | Description
--- | ---
-v, --verbose | Zvýšit podrobnost.
-q, --quiet | Potlačit stav výstupu.
-o, --output file-name | Zapíše do souboru file-name. Použije-li se rozdělení, s tímto parametrem se zachází trochu jinak. Podrobnosti viz vysvětlení volby --split.

-w, --webm

Vytvoří soubor odpovídající WebM. Režim se rovněž zapne, pokud přípona názvu výstupního souboru je "webm". Tento režim vynucuje několik omezení. Jedinými povolenými kodeky jsou video VP8 a VP9 a zvukové stopy Opus a Vorbis. Položka hlavičky DocType se změní na "webm".

Pro kapitoly a štítky je povolena pouze podmnožina prvků. mkvmerge(1) automaticky odstraní všechny prvky, které specifikace nepovoluje.

--title title | Nastavuje obecný název výstupního souboru, například název filmu.
--default-language language-code | Nastavuje výchozí jazykový kód použitý pro stopy, pro něž není jazyk nastaven volbou --language a pro něž zdrojový kontejner neposkytuje jazyk. Výchozí jazykový kód je pro „neurčeno“ und.

## 2.2. Zpracování informací o úseku (globální volby)

Option | Description
--- | ---
--segmentinfo filename.xml | Načte informace o úseku ze souboru XML. Tento soubor může obsahovat prvky UID rodiny úseků, UID úseku, UID předchozího a následujícího úseku. Ukázkový soubor a DTD jsou součástí distribuce MKVToolNix. Podrobnosti viz níže v oddílu soubory XML s informacemi o úseku.

--segment-uid SID1,SID2,...

Nastavuje UID úseků, která se mají použít. Jde o čárkami oddělený seznam 128bitových UID úseků v obvyklé podobě UID: šestnáctkové číslice s předponou "0x" nebo bez ní, s mezerami nebo bez nich, přesně 32 číslic.

Začíná-li SID znakem =, zbytek se interpretuje jako název souboru Matroska, jehož UID úseku se načte a použije.

Každý vytvořený soubor obsahuje jeden úsek a každý úsek má jedno UID úseku. Je-li zadáno více UID úseků než vytvořených úseků, přebytečná UID se ignorují. Je-li zadáno méně UID než vytvořených úseků, vytvoří se pro ně náhodná UID.

## 2.3. Zpracování kapitol a štítků (globální volby)

Option | Description
--- | ---

--chapter-language language-code

Nastavuje jazykový kód ISO 639-2 zapisovaný pro každou položku kapitoly. Výchozí je eng. Podrobnosti viz níže v oddílu kapitoly.

Tuto volbu lze použít jak pro jednoduché soubory kapitol, tak pro zdrojové soubory obsahující kapitoly, ale žádné informace o jazyku kapitol, například soubory MP4 a OGM.

Jazyk nastavený touto volbou se použije také při vytváření kapitol volbou --generate-chapters.

--chapter-charset character-set | Nastavuje znakovou sadu použitou pro převod jednoduchých souborů kapitol do UTF-8. Vysvětlení převodů mezi znakovými sadami programem mkvmerge(1) naleznete v oddílu textové soubory a znakové sady. Tato volba platí také pro kapitoly kopírované z určitých typů kontejnerů, například souborů Ogg/OGM a MP4. Podrobnosti viz níže v oddílu o kapitolách.

--chapter-sync d[,o[/p]]

Upraví časová razítka kapitol v následujícím zdrojovém souboru o d ms. Alternativně lze použít volbu --sync se zvláštním ID stopy -2 (viz oddíl zvláštní ID stop).

o/p: upraví časová razítka o o/p, aby opravil lineární posuny. Není-li p uvedeno, výchozí je 1. Hodnoty o i p mohou být čísla s pohyblivou řádovou čárkou.

Výchozí: žádná ruční oprava synchronizace (což je stejné jako d = 0 a o/p = 1.0).

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--generate-chapters mode

mkvmerge(1) může vytvářet kapitoly automaticky. V současnosti jsou podporovány následující dva režimy:

- 'when-appending' – Tento režim vytvoří jednu kapitolu na začátku a jednu kapitolu pokaždé, když je připojen soubor.

  Tento režim funguje také s režimy rozdělení 'parts:' a 'parts-frames:'. V těchto režimech se vytvoří jedna kapitola pro každý připojený rozsah časových razítek (ty, jejichž počáteční časové razítko má předponu '+').

  Note:

  mkvmerge(1) vyžaduje přítomnost video nebo zvukové stopy, aby mohl určit, kdy je připojen nový soubor. Jsou-li multiplexovány jedna nebo více video stop, použije se první z nich. Jinak se použije první zvuková stopa.

- 'interval: time-spec' – Tento režim vytváří jednu kapitolu v pevných intervalech určených time-spec. Formát je buď HH:MM:SS.nnnnnnnnn, nebo číslo následované jednou z jednotek 's', 'ms' či 'us'.

  Příklad: --generate-chapters interval:45s

Názvy nových kapitol řídí volba --generate-chapters-name-template. Jazyk nastavuje volba --chapter-language, která musí být uvedena před --generate-chapters.

--generate-chapters-name-template template

Nastavuje šablonu názvů kapitol vytvářených volbou --generate-chapters. Není-li volba použita, použije se výchozí 'Chapter <NUM:2>'.

V šabloně lze použít několik proměnných, které se při vytvoření kapitoly nahradí skutečnými hodnotami. Řetězec '<NUM>' se nahradí číslem kapitoly. Řetězec '<START>' se nahradí počátečním časovým razítkem kapitoly.

Řetězce '<FILE_NAME>' a '<FILE_NAME_WITH_EXT>' se vyplní pouze při vytváření kapitol pro připojené soubory. Nahradí se názvem připojeného souboru bez přípony, resp. s příponou. Vkládá se pouze základní název a přípona souboru, nikoli součásti adresáře nebo jednotky.

Minimální počet míst pro číslo kapitoly můžete určit pomocí '<NUM:places>', například '<NUM:3>'. Má-li číslo méně míst než je zadáno, doplní se počátečními nulami.

Formát počátečního časového razítka lze řídit pomocí <START:format>. Není-li formát zadán, výchozí je '%H:%M:%S'. Platné kódy formátu jsou:

- %h – hodiny

- %H – hodiny doplněné počátečními nulami na dvě místa

- %m – minuty

- %M – minuty doplněné počátečními nulami na dvě místa

- %s – sekundy

- %S – sekundy doplněné počátečními nulami na dvě místa

- %n – nanosekundy s devíti místy

- %<1-9>n – nanosekundy až s devíti místy (např. tři místa pomocí %3n)

Řetězec '<TITLE>' se vyplní pouze při vytváření kapitol pro připojené soubory. Je-li k dispozici, nahradí se názvem připojeného souboru.

--cue-chapter-name-format format

mkvmerge(1) podporuje načítání CUE sheetů zvukových souborů a jejich použití jako podkladu pro kapitoly. CUE sheety obvykle obsahují u každé položky indexu údaje PERFORMER a TITLE. mkvmerge(1) používá tyto dva řetězce k sestavení názvu kapitoly. Touto volbou lze nastavit formát použitý pro tento název.

Není-li tato volba zadána, mkvmerge(1) používá výchozí formát '%p - %t' (interpret, za ním mezera, pomlčka, další mezera a název).

Je-li formát zadán, vše kromě následujících metaznaků se zkopíruje beze změny a metaznaky se nahradí takto:

- %p se nahradí řetězcem PERFORMER aktuální položky,

- %t se nahradí řetězcem TITLE aktuální položky,

- %n se nahradí aktuálním číslem stopy a

- %N se nahradí aktuálním číslem stopy doplněným zleva nulou, je-li < 10.

--chapters file-name | Načte informace o kapitolách ze souboru file-name. Podrobnosti viz níže v oddílu o kapitolách.
--global-tags file-name | Načte globální štítky ze souboru file-name. Podrobnosti viz níže v oddílu o štítcích.

## 2.4. Obecné řízení výstupu (pokročilé globální volby)

Option | Description
--- | ---

--track-order FID1:TID1,FID2:TID2,...

Tato volba mění pořadí, v němž se vytvářejí stopy vstupního souboru. Argumentem je seznam dvojic ID oddělených čárkami. Každá dvojice obsahuje nejprve ID souboru (FID1), což je jednoduše číslo souboru na příkazovém řádku počínaje 0. Druhým údajem je ID stopy (TID1) z daného souboru. Jsou-li některá ID stop vynechána, příslušné stopy se vytvoří až po stopách uvedených touto volbou.

Není-li tato volba zadána, stopy se seřadí nejprve podle typu & poté podle pořadí jejich zdrojových souborů. Nejdříve budou video stopy, po nich zvukové & titulkové stopy. Ostatní zřídka používané typy stop budou zařazeny nakonec.

--cluster-length spec

Omezí počet datových bloků nebo délku dat v každém clusteru. Parametr spec může být buď číslo n bez jednotky, nebo číslo d s příponou 'ms'.

Není-li použita jednotka, mkvmerge(1) vloží do každého clusteru nejvýše n datových bloků. Maximální počet bloků je 65535.

Je-li číslo d zakončeno příponou 'ms', mkvmerge(1) vloží do každého clusteru nejvýše d milisekund dat. Minimální hodnota parametru d je '100ms' a maximální '32000ms'.

mkvmerge(1) ve výchozím nastavení vkládá do clusteru nejvýše 65535 datových bloků a 5000ms dat.

Programy hledající určitý snímek se mohou přesunout přímo pouze na cluster a poté musí přečíst celý cluster. Vytváření větších clusterů proto může vést k nepřesnému nebo pomalému vyhledávání.

--clusters-in-meta-seek | Určuje programu mkvmerge(1), aby na konci souboru vytvořil prvek hlavičky vyhledávání obsahující všechny clustery. Viz také oddíl o uspořádání souboru Matroska.

--timestamp-scale factor

Vynutí nastavení faktoru měřítka časových razítek na hodnotu factor. Platné hodnoty jsou v rozsahu 1000..10000000 nebo zvláštní hodnota -1.

mkvmerge(1) běžně používá hodnotu 1000000, což znamená, že časová razítka a délky mají přesnost 1 ms. U souborů bez video stopy, avšak alespoň s jednou zvukovou stopou, mkvmerge(1) automaticky zvolí faktor měřítka časových razítek tak, aby všechna časová razítka a délky měla přesnost jednoho zvukového vzorku. Zvyšuje to režii, ale umožňuje přesné vyhledávání a extrakci.

Použije-li se zvláštní hodnota -1, mkvmerge(1) použije přesnost na jeden vzorek i v případě, že je přítomna video stopa.

--enable-durations | Zapíše délky všech bloků. Tím se zvětší velikost souboru a v současnosti to přehrávačům nepřináší žádnou další výhodu.
--no-cues | Určuje programu mkvmerge(1), aby nevytvářel ani nezapisoval data indexu, která lze přirovnat k indexu v souboru AVI. Soubory Matroska(tm) lze přehrávat i bez dat indexu, vyhledávání však bude pravděpodobně nepřesné a pomalejší. Tuto volbu použijte pouze tehdy, pokud nutně potřebujete ušetřit místo, nebo k testování. Viz také volba --cues, kterou lze zadat pro každý vstupní soubor.
--no-date | Ve výchozím nastavení mkvmerge(1) nastavuje pole "date" v informacích o úseku na čas & datum zahájení multiplexování. Při použití této volby se pole vůbec nezapíše.
--date timestamp | Nastaví pole DateUTC zapisované do informací o úseku. Časové razítko musí mít formát podobný ISO 8601: YYYY-mm-ddTHH:MM:SSZ pro UTC nebo s posunem ±HH:MM (místo T lze použít také mezeru), např. 2017-03-28T17:28:00Z nebo 2017-03-28 17:28:00+02:00. Použije-li se spolu s --no-date, má --no-date přednost a žádné datum se nezapíše.
--disable-lacing | Zakáže svazování pro všechny stopy. Tím se zvětší velikost souboru, zejména pokud obsahuje mnoho zvukových stop. Tato volba není určena pro běžné použití.
--disable-track-statistics-tags | mkvmerge(1) běžně zapisuje určité štítky se statistikami pro každou stopu. Pokud takové štítky již existují, budou přepsány. Jde o štítky BPS, DURATION, NUMBER_OF_BYTES a NUMBER_OF_FRAMES. Zapnutí této volby zabrání programu mkvmerge(1) zapisovat tyto štítky a měnit existující štítky se stejnými názvy.
--disable-language-ietf | mkvmerge(1) běžně zapisuje nové jazykové prvky IETF BCP 47 vedle zastaralých jazykových prvků v hlavičkách stop, kapitolách a štítcích. Při použití této volby se zapisují pouze zastaralé prvky.

--normalize-language-ietf mode

Povolí normalizaci všech jazykových značek IETF BCP 47 buď na jejich kanonickou podobu v režimu 'canonical', na podobu rozšířených jazykových podznaček v režimu 'extlang', nebo ji vypne režimem 'off'. Ve výchozím nastavení se používá normalizace na kanonickou podobu.

V kanonické podobě se všechny podznačky, pro něž existují upřednostňované hodnoty, nahradí těmito hodnotami. Tím se např. 'zh-yue-jyutping' převede na 'yue-jyutping' nebo 'fr-FX' na 'fr-FR'.

Pro podobu rozšířených jazykových podznaček se nejprve vytvoří kanonická podoba. Poté se všechny primární jazykové podznačky, pro něž existuje rozšířená jazyková podznačka, nahradí touto rozšířenou jazykovou podznačkou a její předponou. Tím se např. 'yue-jyutping' převede zpět na 'zh-yue-jyutping', na 'fr-FR' to však nemá vliv, protože 'fr' není rozšířená jazyková podznačka.

--stop-after-video-ends | Po skončení primární video stopy zastaví zpracování a zahodí všechny zbývající pakety ostatních stop.

## 2.5. Rozdělení souborů, propojování, připojování a zřetězování (další globální volby)

Option | Description
--- | ---

--split specification

Rozdělí výstupní soubor po dosažení zadané velikosti nebo po uplynutí zadané doby. Upozorňujeme, že stopy lze rozdělovat pouze bezprostředně před klíčovým snímkem. Bod rozdělení se proto může od zadání uživatele mírně lišit.

V současnosti mkvmerge(1) podporuje následující režimy:

1. Rozdělení podle velikosti.

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

   Příklady: --split size:700m nebo --split 150000000

   Parametr d může končit písmenem 'k', 'm' nebo 'g', čímž se určí velikost v KB, MB, respektive GB. Jinak se předpokládá velikost v bajtech. Jakmile aktuální výstupní soubor dosáhne tohoto limitu velikosti, začne se vytvářet nový výstupní soubor.

   Předponu 'size:' lze z důvodů kompatibility vynechat.

2. Rozdělení po uplynutí doby.

   Syntaxe: --split [duration:]HH:MM:SS.nnnnnnnnn|ds

   Příklady: --split duration:00:60:00.000 nebo --split 3600s

   Parametr musí mít buď tvar HH:MM:SS.nnnnnnnnn pro zadání trvání s přesností až na nanosekundy, nebo musí jít o číslo d následované písmenem 's' pro trvání v sekundách. HH je počet hodin, MM počet minut, SS počet sekund a nnnnnnnnn počet nanosekund. Počet hodin i počet nanosekund lze vynechat. Za desetinnou tečkou může být až devět číslic. Jakmile trvání obsahu aktuálního výstupního souboru dosáhne tohoto limitu, začne se vytvářet nový výstupní soubor.

   Předponu 'duration:' lze z důvodů kompatibility vynechat.

3. Rozdělení za konkrétními časovými razítky.

   Syntaxe: --split timestamps: A[,B[,C...]]

   Příklad: --split timestamps:00:45:00.000,01:20:00.250,6300s

   Parametry A, B, C atd. musí mít stejný formát jako hodnoty délky (viz výše). Seznam časových razítek je oddělen čárkami. Jakmile vstupní proud dosáhne časového razítka aktuálního bodu rozdělení, vytvoří se nový soubor. Poté se použije další bod rozdělení uvedený v seznamu.

   Předpona 'timestamps:' se nesmí vynechat.

4. Zachování určitých částí určením rozsahů časových razítek při vyřazení ostatních.

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

   Příklady:

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

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

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

   Režim parts určuje programu mkvmerge(1), aby zachoval určité rozsahy časových razítek a ostatní zahodil. Zachovávané rozsahy musí být uvedeny za klíčovým slovem parts: a odděleny čárkami. Každý rozsah se skládá z počátečního a koncového časového razítka ve stejném formátu, jaký přijímají ostatní varianty --split (např. 00:01:20 a 80s označují stejné časové razítko).

   Je-li počáteční časové razítko vynecháno, použije se ve výchozím nastavení koncové časové razítko předchozího rozsahu. Nebyl-li předchozí rozsah, použije se začátek souboru (viz příklad 3).

   Je-li koncové časové razítko vynecháno, použije se ve výchozím nastavení konec zdrojových souborů, čímž se programu mkvmerge(1) v podstatě určí, aby zachoval zbytek (viz příklad 3).

   Každý rozsah se běžně zapíše do nového souboru. To lze změnit tak, aby se po sobě jdoucí rozsahy zapisovaly do stejného souboru. Uživatel proto musí před počáteční časové razítko vložit +. Touto předponou se programu mkvmerge(1) určí, aby nevytvářel nový soubor, ale připojil rozsah ke stejnému souboru, do něhož byl zapsán předchozí rozsah. Časová razítka se upraví tak, aby ve výstupním souboru nebyla mezera, i když mezi oběma rozsahy ve vstupním souboru mezera byla.

   V příkladu 1 mkvmerge(1) vytvoří dva soubory. První bude obsahovat část obsahu od 00:01:20 do 00:02:45. Druhý soubor bude obsahovat část obsahu od 00:05:50 do 00:10:30.

   V příkladu 2 mkvmerge(1) vytvoří pouze jeden soubor. Tento soubor bude obsahovat části obsahu od 00:01:20 do 00:02:45 a od 00:05:50 do 00:10:30.

   V příkladu 3 mkvmerge(1) vytvoří dva soubory. První bude obsahovat část obsahu od začátku zdrojových souborů do 00:02:45. Druhý soubor bude obsahovat část obsahu od 00:05:50 do konce zdrojových souborů.

   Note:

   Upozorňujeme, že mkvmerge(1) rozhoduje o rozdělení pouze na pozicích klíčových snímků. To platí pro začátek i konec každého rozsahu. I když tedy koncové časové razítko leží mezi dvěma klíčovými snímky, mkvmerge(1) bude nadále zapisovat snímky až po následující klíčový snímek, ten však už nezahrne.

5. Zachování určitých částí zadáním rozsahů čísel snímků/půlsnímků a vyřazení ostatních.

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

   Příklady:

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

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

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

   Režim parts-frames určuje programu mkvmerge(1), aby zachoval určité rozsahy čísel snímků/půlsnímků a ostatní zahodil. Zachovávané rozsahy musí být uvedeny za klíčovým slovem parts-frames: a odděleny čárkami. Každý rozsah se skládá z počátečního a koncového čísla snímku/půlsnímku. Číslování začíná od 1.

   Je-li počáteční číslo vynecháno, použije se ve výchozím nastavení koncové číslo předchozího rozsahu. Nebyl-li předchozí rozsah, použije se začátek souboru (viz příklad 3).

   Je-li koncové číslo vynecháno, použije se ve výchozím nastavení konec zdrojových souborů, čímž se programu mkvmerge(1) v podstatě určí, aby zachoval zbytek (viz příklad 3).

   Každý rozsah se běžně zapíše do nového souboru. To lze změnit tak, aby se po sobě jdoucí rozsahy zapisovaly do stejného souboru. Uživatel proto musí před počáteční číslo vložit +. Touto předponou se programu mkvmerge(1) určí, aby nevytvářel nový soubor, ale připojil rozsah ke stejnému souboru, do něhož byl zapsán předchozí rozsah. Časová razítka se upraví tak, aby ve výstupním souboru nebyla mezera, i když mezi oběma rozsahy ve vstupním souboru mezera byla.

   Note:

   Upozorňujeme, že mkvmerge(1) rozhoduje o rozdělení pouze na pozicích klíčových snímků. To platí pro začátek i konec každého rozsahu. I když tedy koncové číslo snímku/půlsnímku leží mezi dvěma klíčovými snímky, mkvmerge(1) bude nadále zapisovat snímky až po následující klíčový snímek, ten však už nezahrne.

   V příkladu 1 mkvmerge(1) vytvoří dva soubory. První bude obsahovat část obsahu počínaje prvním klíčovým snímkem s číslem 137 nebo vyšším a konče těsně před prvním klíčovým snímkem s číslem 258 nebo vyšším. Druhý soubor bude obsahovat část obsahu od 548 do 1211.

   V příkladu 2 mkvmerge(1) vytvoří pouze jeden soubor. Tento soubor bude obsahovat části obsahu od 733 do 912 a od 1592 do 2730.

   V příkladu 3 mkvmerge(1) vytvoří dva soubory. První bude obsahovat část obsahu od začátku zdrojových souborů do 430. Druhý soubor bude obsahovat část obsahu od 2512 do konce zdrojových souborů.

   Tento režim zohledňuje pouze první výstupní video stopu. Není-li výstupní žádná video stopa, nedojde k rozdělení.

   Note:

   Čísla zadaná pomocí tohoto argumentu se interpretují podle počtu výstupních bloků Matroska(tm). Jeden blok Matroska(tm) obsahuje buď celý snímek (u progresivního obsahu), nebo jedno pole (u prokládaného obsahu). mkvmerge mezi nimi nerozlišuje a jednoduše počítá bloky. Příklad: chcete-li prokládaný obsah rozdělit po 25. celém snímku, je nutné jako bod rozdělení použít 50 (dvě pole na celý snímek).

6. Rozdělení za konkrétními snímky/půlsnímky.

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

   Příklad: --split frames:120,237,891

   Parametry A, B, C atd. musí být kladná celá čísla. Číslování začíná od 1. Seznam čísel snímků/půlsnímků je oddělen čárkami. Jakmile vstupní proud dosáhne čísla snímku/pole aktuálního bodu rozdělení, vytvoří se nový soubor. Poté se použije další bod rozdělení uvedený v seznamu.

   Předpona 'frames:' se nesmí vynechat.

   Tento režim zohledňuje pouze první výstupní video stopu. Není-li výstupní žádná video stopa, nedojde k rozdělení.

   Note:

   Čísla zadaná pomocí tohoto argumentu se interpretují podle počtu výstupních bloků Matroska(tm). Jeden blok Matroska(tm) obsahuje buď celý snímek (u progresivního obsahu), nebo jedno pole (u prokládaného obsahu). mkvmerge mezi nimi nerozlišuje a jednoduše počítá bloky. Příklad: chcete-li prokládaný obsah rozdělit po 25. celém snímku, je nutné jako bod rozdělení použít 50 (dvě pole na celý snímek).

7. Rozdělení před konkrétními kapitolami.

   Syntaxe: --split chapters:all nebo --split chapters: A[,B[,C...]]

   Příklad: --split chapters:5,8

   Parametry A, B, C atd. musí být kladná celá čísla. Číslování začíná od 1. Seznam čísel kapitol je oddělen čárkami. K rozdělení dojde těsně před prvním klíčovým snímkem, jehož časové razítko je stejné nebo vyšší než počáteční časové razítko kapitol s uvedenými čísly. Kapitola začínající v čase 0s se při rozdělení nikdy nezohlední a bez upozornění se zahodí.

   Klíčové slovo all lze použít místo ručního výpisu všech čísel kapitol.

   Předpona 'chapters:' se nesmí vynechat.

   Note:

   Formát souborů Matroska(tm) podporuje libovolně hluboce vnořené struktury kapitol nazývané 'položky edice' a 'atomy kapitol'. Tento režim však zohledňuje jen nejvyšší úroveň kapitol ve všech položkách edice.

V tomto režimu rozdělení se s názvem výstupního souboru zachází jinak než při běžném zpracování. Může obsahovat výraz ve stylu printf '%d' včetně volitelné šířky pole, např. '%02d'. Pokud jej obsahuje, aktuální číslo souboru se odpovídajícím způsobem naformátuje a vloží na dané místo názvu souboru. Není-li takový vzor přítomen, před příponou souboru se předpokládá vzor '-%03d': '-o output.mkv' vytvoří 'output-001.mkv' atd. Nemá-li název příponu, '-%03d' se připojí k názvu.

Dalším možným vzorem je '%c', který se nahradí názvem první kapitoly v souboru. Je-li přítomen '%c', vzor '-%03d' se nepřidá automaticky.

--link | Při rozdělení výstupního souboru vzájemně propojí soubory. Podrobnosti viz níže v oddílu o propojování souborů.
--link-to-previous segment-UID | Propojí první výstupní soubor s úsekem, jehož UID je zadáno parametrem segment-UID. Podrobnosti viz níže v oddílu o propojování souborů. Začíná-li SID znakem =, zbytek se interpretuje jako název souboru Matroska, jehož UID úseku se načte a použije.
--link-to-next segment-UID | Propojí poslední výstupní soubor s úsekem, jehož UID je zadáno parametrem segment-UID. Podrobnosti viz níže v oddílu o propojování souborů. Začíná-li SID znakem =, zbytek se interpretuje jako název souboru Matroska, jehož UID úseku se načte a použije.

--append-mode mode

Určuje způsob výpočtu časových razítek při připojování souborů. Parametr mode může mít dvě hodnoty: 'file', která je také výchozí, a 'track'.

Když mkvmerge připojí stopu (dále 'track2_1') z druhého souboru (dále 'file2') ke stopě (dále 'track1_1') z prvního souboru (dále 'file1'), musí všechna časová razítka stopy 'track2_1' posunout o určitou hodnotu. V režimu 'file' je touto hodnotou nejvyšší časové razítko nalezené v 'file1', i když pocházelo z jiné stopy než 'track1_1'. V režimu 'track' se jako posun použije nejvyšší časové razítko stopy 'track1_1'.

mkvmerge bohužel nedokáže spolehlivě zjistit, který režim použít. Proto je výchozí režim 'file'. Režim 'file' obvykle funguje lépe pro soubory vytvořené nezávisle na sobě, např. při připojování souborů AVI nebo MP4. Režim 'track' může fungovat lépe pro zdroje, které jsou v podstatě pouze částmi jednoho velkého souboru, např. pro soubory VOB a EVO.

S titulkovými stopami se vždy zachází, jako by byl aktivní režim 'file', i když je ve skutečnosti aktivní režim 'track'.

--append-to SFID1:STID1:DFID1:DTID1[,...]

Tato volba určuje, ke které stopě se připojí jiná stopa. Každá specifikace obsahuje čtyři ID: ID souboru, ID stopy, ID druhého souboru a ID druhé stopy. První dvojice, „ID zdrojového souboru“ a „ID zdrojové stopy“, určuje stopu, která se má připojit. Druhá dvojice, „ID cílového souboru“ a „ID cílové stopy“, určuje stopu, ke které se první stopa připojí.

Je-li tato volba vynechána, použije se standardní mapování. Při něm se každá stopa z aktuálního souboru připojí ke stopě z předchozího souboru se stejným ID stopy. Pokud byl film rozdělen na dvě části a oba soubory mají stejný počet stop i stejná ID stop, umožňuje to jejich snadné připojení příkazem mkvmerge -o output.mkv part1.mkv +part2.mkv.

+

Jediný znak '+' způsobí, že se následující soubor připojí namísto přidání. Znak '+' lze také umístit před název následujícího souboru. Následující dva příkazy jsou proto rovnocenné:

    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv file1.mkv +file2.mkv

[ file1 file2 ]

Je-li v páru hranatých závorek uvedeno více názvů souborů, druhý a všechny následující soubory se připojí k prvnímu souboru uvedenému v závorkách.

Toto je alternativní syntaxe k použití znaku '+' mezi názvy souborů. Následující dva příkazy jsou proto ekvivalentní:

    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv '[' file1.mkv file2.mkv ']'

=

U určitých typů souborů (programové proudy MPEG = VOB) mkvmerge(1) za běžných okolností hledá ve stejném adresáři jako vstupní soubor další soubory se stejným základním názvem, které se liší pouze pořadovým číslem (např. 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB' atd.), a zachází se všemi těmito soubory, jako by byly zřetězeny do jednoho velkého souboru. Tato volba, jediný znak '=', způsobí, že mkvmerge tyto další soubory hledat nebude.

Znak '=' lze také umístit před název následujícího souboru. Následující dva příkazy jsou proto ekvivalentní:

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

( file1 file2 )

Je-li v páru kulatých závorek uvedeno více názvů souborů, bude s těmito soubory zacházeno, jako by byly zřetězeny do jednoho velkého souboru tvořeného obsahem jednotlivých souborů v uvedeném pořadí.

To lze použít například pro soubory VOB pocházející z DVD nebo pro transportní proudy MPEG. Nelze to použít, pokud každý soubor obsahuje vlastní sadu hlaviček, což bývá případ samostatných souborů, jako jsou AVI nebo MP4.

Umístění názvu souboru do kulatých závorek také způsobí, že mkvmerge(1) nebude hledat další soubory se stejným základním názvem, jak je popsáno u volby =. Následující dva příkazové řádky jsou proto rovnocenné:

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

Je třeba vzít v úvahu několik věcí:

1. Za otevírací i před zavírací závorkou musí být mezery.

2. Každý parametr mezi kulatými závorkami se vykládá jako název souboru. Všechny volby vztahující se k tomuto logickému souboru proto musí být uvedeny před otevírací závorkou.

3. Některé shelly považují závorky za zvláštní znaky. Proto je nutné je eskapovat nebo uzavřít do uvozovek, jak ukazuje uvedený příklad.

## 2.6. Podpora příloh (další globální volby)

Option | Description
--- | ---
--attachment-description description | Prostý textový popis následující přílohy. Platí pro následující volbu --attach-file nebo --attach-file-once.
--attachment-mime-type MIME type | Typ MIME následující přílohy. Platí pro následující volbu --attach-file nebo --attach-file-once. Seznam oficiálně registrovaných typů MIME najdete například na domovské stránce IANA. Typ MIME je pro přílohu povinný. Není-li pro přílohu uveden žádný typ MIME, její typ se zjistí automaticky.
--attachment-name name | Nastaví název, který se pro tuto přílohu uloží do výstupního souboru. Není-li tato volba zadána, název se odvodí z názvu souboru přílohy zadaného volbou --attach-file nebo --attach-file-once.

--attach-file file-name, --attach-file-once file-name

Vytvoří uvnitř souboru Matroska(tm) přílohu. Rozdíl mezi oběma podobami spočívá v tom, že při rozdělení se soubory přiložené pomocí --attach-file připojí ke všem výstupním souborům, zatímco soubory přiložené pomocí --attach-file-once pouze k prvnímu vytvořenému souboru. Není-li rozdělení použito, obě podoby se chovají stejně.

mkvextract(1) lze použít k extrahování připojených souborů ze souboru Matroska(tm).

--enable-legacy-font-mime-types

Povolí používání zastaralých typů MIME pro určité typy příloh písem. Například pro písma TrueType se použije 'application/x-truetype-font' namísto 'fonts/ttf'.

Týká se to jak nových příloh, pokud se jejich typ MIME zjišťuje automaticky, tak existujících příloh, jejichž uložené typy MIME se přemapují na zastaralé typy.

Dotčenými typy MIME jsou 'font/sfnt', 'font/ttf' a 'font/collection', které se všechny mapují na 'application/x-truetype-fonts', a 'font/otf', který se mapuje na 'application/vnd.ms-opentype'.

## 2.7. Volby, které lze použít pro každý vstupní soubor

Option | Description
--- | ---

-a, --audio-tracks [!]n,m,...

Zkopíruje zvukové stopy n, m atd. Čísla jsou ID stop, která lze získat volbou --identify. Nejde pouze o čísla stop (viz oddíl ID stop). Výchozí: zkopírují se všechny zvukové stopy.

Místo ID stop lze zadat také jazykové kódy ISO 639-2. Funguje to pouze pro zdrojové soubory, které pro své stopy poskytují jazykové značky.

Výchozí: zkopírovat všechny stopy tohoto druhu.

Mají-li ID předponu !, význam se obrátí: zkopírují se všechny stopy tohoto druhu kromě stop uvedených za !.

-d, --video-tracks [!]n,m,...

Zkopíruje video stopy n, m atd. Čísla jsou ID stop, která lze získat volbou --identify. Nejde pouze o čísla stop (viz oddíl ID stop). Výchozí: zkopírují se všechny video stopy.

Místo ID stop lze zadat také jazykové kódy ISO 639-2. Funguje to pouze pro zdrojové soubory, které pro své stopy poskytují jazykové značky.

Mají-li ID předponu !, význam se obrátí: zkopírují se všechny stopy tohoto druhu kromě stop uvedených za !.

-s, --subtitle-tracks [!]n,m,...

Zkopíruje titulkové stopy n, m atd. Čísla jsou ID stop, která lze získat volbou --identify. Nejde pouze o čísla stop (viz oddíl ID stop). Výchozí: zkopírují se všechny titulkové stopy.

Místo ID stop lze zadat také jazykové kódy ISO 639-2. Funguje to pouze pro zdrojové soubory, které pro své stopy poskytují jazykové značky.

Mají-li ID předponu !, význam se obrátí: zkopírují se všechny stopy tohoto druhu kromě stop uvedených za !.

-b, --button-tracks [!]n,m,...

Zkopíruje stopy tlačítek n, m atd. Čísla jsou ID stop, která lze získat volbou --identify. Nejde pouze o čísla stop (viz oddíl ID stop). Výchozí: zkopírují se všechny stopy tlačítek.

Místo ID stop lze zadat také jazykové kódy ISO 639-2. Funguje to pouze pro zdrojové soubory, které pro své stopy poskytují jazykové značky.

Mají-li ID předponu !, význam se obrátí: zkopírují se všechny stopy tohoto druhu kromě stop uvedených za !.

--track-tags [!]n,m,... | Zkopíruje štítky stop n, m atd. Čísla jsou ID stop, která lze získat volbou --identify (viz oddíl ID stop). Nejde pouze o čísla stop. Výchozí: zkopírují se štítky všech stop. Mají-li ID předponu !, význam se obrátí: zkopíruje se vše kromě ID uvedených za !.

-m, --attachments [!]n[:all|first],m[:all|first],...

Zkopíruje přílohy s ID n, m atd. do všech výstupních souborů, nebo pouze do prvního. Za každým ID může následovat ':all' (výchozí hodnota, není-li zadána žádná z obou možností) nebo ':first'. Je-li aktivní rozdělení, přílohy s ID zadanými pomocí ':all' se zkopírují do všech výsledných výstupních souborů, zatímco ostatní pouze do prvního výstupního souboru. Není-li rozdělení aktivní, mají obě varianty stejný účinek.

Ve výchozím stavu se všechny přílohy zkopírují do všech výstupních souborů.

Mají-li ID předponu !, význam se obrátí: zkopíruje se vše kromě ID uvedených za !.

-A, --no-audio | Z tohoto souboru nekopírovat žádnou zvukovou stopu.
-D, --no-video | Z tohoto souboru nekopírovat žádnou video stopu.
-S, --no-subtitles | Z tohoto souboru nekopírovat žádnou titulkovou stopu.
-B, --no-buttons | Z tohoto souboru nekopírovat žádnou stopu tlačítek.
-T, --no-track-tags | Z tohoto souboru nekopírovat žádné štítky specifické pro stopu.
--no-chapters | Z tohoto souboru nekopírovat kapitoly.
-M, --no-attachments | Z tohoto souboru nekopírovat přílohy.
--no-global-tags | Z tohoto souboru nekopírovat globální štítky.

--regenerate-track-uids

Při použití této volby pro zdrojový soubor Matroska vytvoří mkvmerge(1) nová náhodná jedinečná ID stop namísto zachování ID existujících v souboru. Existující UID stop v kapitolách & štítcích načtených ze stejného souboru se přemapují na nově vytvořené hodnoty.

Toto chování se automaticky povoluje pro soubory Matroska vytvořené programem MakeMKV. Důvodem je, že MakeMKV používá jako UID po sobě jdoucí čísla (1, 2, 3…) namísto generování náhodných hodnot.

-y, --sync TID:d[,o[/p]]

Upraví časová razítka stopy s ID TID o d ms. ID stop jsou stejná jako ID uváděná volbou --identify (viz oddíl ID stop).

o/p: upraví časová razítka o o/p, aby opravil lineární posuny. Není-li p uvedeno, výchozí je 1. Hodnoty o i p mohou být čísla s pohyblivou řádovou čárkou.

Výchozí: žádná ruční oprava synchronizace (což je stejné jako d = 0 a o/p = 1.0).

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--cues TID:none|iframes|all

Určuje, pro které bloky se pro danou stopu vytvoří položky indexu (viz oddíl ID stop). Hodnota 'none' vytváření položek indexu zakáže. Při hodnotě 'iframes' se do indexu vloží pouze bloky bez zpětných nebo dopředných referencí (= snímky I ve video stopách). Hodnota 'all' způsobí, že mkvmerge(1) vytvoří položky indexu pro všechny bloky, čímž soubor výrazně naroste.

Výchozí hodnotou je 'iframes' pro video a titulkové stopy a 'none' pro zvukové stopy. Viz také volba --no-cues, která zakáže vytváření položek indexu bez ohledu na použité volby --cues.

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--default-track-flag TID[:bool]

Nastaví příznak "výchozí stopa" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Příznak se nastaví, pokud zdrojový kontejner tuto informaci neposkytuje a uživatel ji nezadá touto volbou.

Nevybere-li uživatel během přehrávání stopu výslovně, měl by přehrávač vybrat jednu ze stop s nastaveným příznakem "výchozí stopa" a zohlednit přitom uživatelské předvolby, například upřednostňovaný jazyk.

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--track-enabled-flag TID[:bool]

Nastaví příznak "povolená stopa" pro danou stopu (viz oddíl ID stop) na zadanou hodnotu bool (0 nebo 1; není-li zadána, výchozí je 1). Ve výchozím nastavení jsou stopy povoleny, pokud pro ně není zadána žádná volba a zdrojový kontejner tuto informaci rovněž neposkytuje.

Při přehrávání se mají zohlednit pouze stopy, pro něž je nastaven příznak "povolená stopa".

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--forced-display-flag TID[:bool] | Nastaví příznak "vynucené zobrazení" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Použijte jej pro stopy obsahující text zobrazovaný na obrazovce nebo dialogy v cizím jazyce. Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.
--hearing-impaired-flag TID[:bool] | Nastaví příznak "sluchové postižení" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Tento příznak lze nastavit, je-li stopa vhodná pro uživatele se sluchovým postižením. Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.
--visual-impaired-flag TID[:bool] | Nastaví příznak "zrakové postižení" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Tento příznak lze nastavit, je-li stopa vhodná pro uživatele se zrakovým postižením. Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--text-descriptions-flag TID[:bool]

Nastaví příznak "textové popisy" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Tento příznak lze nastavit, obsahuje-li stopa textové popisy video obsahu vhodné k přehrávání systémem převodu textu na řeč pro uživatele se zrakovým postižením.

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

--original-flag TID[:bool] | Nastaví příznak "původní jazyk" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Tento příznak lze nastavit, je-li stopa v původním jazyce obsahu (nejde o překlad). Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.
--commentary-flag TID[:bool] | Nastaví příznak "komentář" pro danou stopu (viz oddíl ID stop), je-li volitelný argument bool nastaven na 1 nebo není-li přítomen. Tento příznak lze nastavit, obsahuje-li stopa komentář. Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.
--track-name TID:name | Nastaví název dané stopy (viz oddíl ID stop) na name.
--language TID:language | Nastaví jazyk dané stopy (viz oddíl ID stop). Povoleny jsou jazykové kódy ISO 639-2 i kódy zemí ISO 639-1. Kódy zemí se automaticky převedou na jazykové kódy. Všechny jazyky včetně jejich kódů ISO 639-2 lze vypsat volbou --list-languages. Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.
-t, --tags TID:file-name | Načte štítky pro stopu s číslem TID ze souboru file-name. Podrobnosti najdete níže v oddílu o štítcích.

--aac-is-sbr TID[:0|1]

Určuje programu mkvmerge(1), že stopa s ID TID je SBR AAC (známá také jako HE-AAC nebo AAC+). Tato volba je nutná, pokud a) je zdrojovým souborem soubor AAC (nikoli soubor Matroska(tm)) a b) soubor AAC obsahuje data SBR AAC. Důvodem této volby je, že běžná data AAC nelze automaticky odlišit od dat SBR AAC bez dekódování celého snímku AAC. Protože s dekodéry AAC souvisí několik patentových problémů, mkvmerge(1) tuto fázi dekódování nikdy obsahovat nebude. Pro soubory SBR AAC je proto tato volba povinná. Při jejím vynechání se výsledný soubor nemusí přehrát správně, nebo vůbec.

Je-li zdrojovým souborem soubor Matroska(tm), měl by CodecID stačit k rozpoznání SBR AAC. Je-li však CodecID chybný, lze tuto volbu použít k jeho opravě.

Rozpozná-li mkvmerge chybně soubor AAC jako SBR, můžete k ID stopy přidat ':0'.

--audio-emphasis TID:n|symbolic-name | Nastaví zdůraznění zvuku pro stopu s ID TID. Režim může být buď číslo n (určité hodnoty mezi 0 a 16), nebo symbolický název. Všechna platná čísla & symbolické názvy lze vypsat volbou --list-audio-emphasis.
--reduce-to-core TID | Některé zvukové kodeky mají ztrátové jádro a volitelná rozšíření umožňující bezeztrátové dekódování. Tato volba způsobí, že mkvmerge(1) zkopíruje pouze jádro, nikoli rozšíření. Ve výchozím nastavení mkvmerge(1) kopíruje jádro i rozšíření. V současnosti se tato volba týká pouze stop DTS. Stopy TrueHD obsahující vložené jádro AC-3 se namísto toho zobrazují jako dvě samostatné stopy, z nichž může uživatel vybrat, kterou zkopírovat. U DTS by takové řešení nefungovalo, protože rozšíření HD nelze na rozdíl od dat TrueHD dekódovat samostatně.

--remove-dialog-normalization-gain TID

Některé zvukové kodeky obsahují pole hlavičky, která dekodéru nebo přehrávači určují použití zesílení (obvykle se zápornou hodnotou) pro normalizaci dialogů. Tato volba způsobí, že mkvmerge(1) toto zesílení odstraní nebo minimalizuje úpravou příslušných polí hlavičky.

V současnosti se tato volba týká pouze stop AC-3, DTS a TrueHD.

--timestamps TID:file-name | Načte ze souboru file-name časová razítka, která se mají použít pro konkrétní ID stopy. Tato časová razítka vynuceně přepíší časová razítka, která mkvmerge(1) běžně vypočítává. Přečtěte si oddíl o externích souborech časových razítek.

--default-duration TID:x

Vynutí výchozí délku dané stopy na zadanou hodnotu. Rovněž upraví časová razítka stopy tak, aby odpovídala výchozí délce. Argument x musí mít příponu 's', 'ms', 'us', 'ns', 'fps', 'p' nebo 'i'; tyto přípony v uvedeném pořadí určují výchozí délku v sekundách, milisekundách, mikrosekundách, nanosekundách, 'snímcích za sekundu', 'progresivních snímcích za sekundu' nebo 'prokládaných snímcích za sekundu'. Samotné číslo x může být desetinné číslo nebo zlomek.

Není-li výchozí délka vynucena, pokusí se mkvmerge u určitých typů stop, např. AVC/H.264 nebo MPEG-2, odvodit výchozí délku stopy z kontejneru nebo zakódovaného bitového toku, případně z obou.

Touto volbou lze také změnit FPS video stop, aniž by bylo nutné použít externí soubor časových razítek.

--fix-bitstream-timing-information TID[:0|1]

Za běžných okolností mkvmerge(1) nemění časovací informace (frekvenci snímků/půlsnímků) uložené v bitovém toku videa. Touto volbou se tyto informace upraví tak, aby odpovídaly časovacím informacím kontejneru. Ty mohou pocházet z různých zdrojů: z příkazového řádku (viz volba --default-duration), ze zdrojového kontejneru nebo mohou být odvozeny z bitového toku.

Note:

Dosud je to implementováno pouze pro video stopy AVC/H.264.

--compression TID:n

Vybere metodu komprese, která se má použít pro stopu. Tuto metodu musí podporovat také přehrávač. Platné hodnoty jsou 'none', 'zlib' a 'mpeg4_p2'/'mpeg4p2'.

Metoda komprese 'mpeg4_p2'/'mpeg4p2' je zvláštní metoda zvaná 'odstranění hlavičky', která je dostupná pouze pro video stopy MPEG4 část 2.

Pro některé typy titulků je výchozí komprese 'zlib'. Tuto metodu komprese podporuje také většina, ne-li všechny přehrávací aplikace. Podpora jiných metod komprese než 'none' není zaručena.

## 2.8. Volby, které se vztahují pouze na video stopy

Option | Description
--- | ---
-f, --fourcc TID:FourCC | Vynutí FourCC na zadanou hodnotu. Funguje pouze pro video stopy v 'režimu kompatibility s MS'.
--display-dimensions TID:widthxheight | Soubory Matroska(tm) obsahují dvě hodnoty, podle nichž má přehrávač při přehrávání škálovat obraz: šířku zobrazení a výšku zobrazení. Tyto hodnoty lze nastavit touto volbou, např. '1:640x480'. Hodnoty lze zadat také volbou --aspect-ratio nebo --aspect-ratio-factor (viz níže). Tyto volby se navzájem vylučují.

--aspect-ratio TID:ratio|width/height

Soubory Matroska(tm) obsahují dvě hodnoty, podle nichž má přehrávač při přehrávání škálovat obraz: šířku zobrazení a výšku zobrazení. Touto volbou mkvmerge(1) automaticky vypočítá šířku a výšku zobrazení podle původní šířky a výšky obrazu a poměru stran zadaného touto volbou. Poměr lze zadat buď jako desetinné číslo ratio, nebo jako zlomek 'width/height', např. '16/9'.

Hodnoty lze zadat také volbami --aspect-ratio-factor nebo --display-dimensions (viz výše a níže). Tyto volby se navzájem vylučují.

--aspect-ratio-factor TID:factor|n/d | Poměr stran lze nastavit také zadáním factor. Původní poměr stran se nejprve vynásobí tímto factor a výsledek se použije jako cílový poměr stran. Hodnoty lze zadat také volbami --aspect-ratio nebo --display-dimensions (viz výše). Tyto volby se navzájem vylučují.
--cropping TID:left,top,right,bottom | Nastavuje parametry oříznutí pixelů video stopy na zadané hodnoty.
--color-matrix-coefficients TID:n | Nastaví koeficienty matice videa používané k odvození hodnot jasu a chrominance z červených, zelených a modrých primárních barev. Parametr n je celé číslo v rozsahu od 0 do 10. Platné hodnoty a jejich význam jsou: 0: GBR, 1: BT709, 2: neurčeno, 3: vyhrazeno, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 s nekonstantním jasem, 10: BT2020 s konstantním jasem
--color-bits-per-channel TID:n | Nastaví počet kódovaných bitů pro barevný kanál. Hodnota 0 označuje, že počet bitů není určen.
--chroma-subsample TID:hori,vert | Počet pixelů, které se mají odebrat v kanálech Cr a Cb na každý pixel, který se neodebere vodorovně/svisle. Příklad: U videa s podvzorkováním chrominance 4:2:0 má být parametr nastaven na TID:1,1.
--cb-subsample TID:hori,vert | Počet pixelů, které se mají v kanálu Cb odstranit na každý pixel neodstraněný ve vodorovném/svislém směru. Tato hodnota se přičítá k --chroma-subsample. Příklad: U videa s podvzorkováním chrominance 4:2:1 má být parametr --chroma-subsample nastaven na TID:1,0 a podvzorkování Cb na TID:1,0.
--chroma-siting TID:hori,vert | Nastaví způsob vodorovného/svislého umístění chrominance (0: neurčeno, 1: společně umístěno nahoře, 2: poloviční posun).
--color-range TID:n | Nastaví oříznutí barevných rozsahů (0: neurčeno, 1: vysílací rozsah, 2: plný rozsah (bez oříznutí), 3: určeno pomocí MatrixCoefficients/TransferCharacteristics).
--color-transfer-characteristics TID:n | Přenosové charakteristiky videa. Platné hodnoty a jejich význam jsou: 0: vyhrazeno, 1: ITU-R BT.709, 2: neurčeno, 3: vyhrazeno, 4: křivka gama 2.2, 5: křivka gama 2.8, 6: SMPTE 170M, 7: SMPTE 240M, 8: lineární, 9: log, 10: odmocnina z log, 11: IEC 61966-2-4, 12: rozšířený barevný gamut ITU-R BT.1361, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bitů, 15: ITU-R BT.2020 12 bitů, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--color-primaries TID:n | Nastavuje primární barvy videa. Platné hodnoty a jejich význam jsou: 0: vyhrazeno, 1: ITU-R BT.709, 2: neurčeno, 3: vyhrazeno, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: luminofory JEDEC P22
--max-content-light TID:n | Nastaví maximální jas jednoho pixelu (Maximum Content Light Level) v kandelách na metr čtvereční (cd/m²). Hodnota n musí být nezáporné celé číslo.
--max-frame-light TID:n | Nastaví maximální jas jednoho celého snímku (Maximum Frame-Average Light Level) v kandelách na metr čtvereční (cd/m²). Hodnota n musí být nezáporné celé číslo.
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y | Nastavuje souřadnice chromatičnosti červené/zelené/modré podle CIE 1931.
--white-color-coordinates TID:x,y | Nastavuje souřadnice chromatičnosti bílé podle CIE 1931.
--max-luminance TID:float | Nastavuje maximální jas v kandelách na metr čtvereční (cd/m²). Hodnota by měla být menší než 9999.99.
--min-luminance TID:float | Nastavuje minimální jas v kandelách na metr čtvereční (cd/m²). Hodnota by měla být menší než 999.9999.
--projection-type TID:method | Nastaví použitou metodu projekce videa. Platné hodnoty jsou 0 (obdélníková projekce), 1 (ekvirektangulární projekce), 2 (projekce mapy krychle) a 3 (síťová projekce).
--projection-private TID:data | Nastaví soukromá data platná pouze pro určitou projekci. Data musí být zadána jako šestnáctková čísla s předponou "0x" nebo bez ní a s mezerami nebo bez nich.
--projection-pose-yaw TID:float | Určuje rotaci projekce v ose yaw.
--projection-pose-pitch TID:float | Určuje rotaci projekce v ose pitch.
--projection-pose-roll TID:float | Určuje rotaci projekce v ose roll.
--field-order TID:n | Nastaví pořadí půlsnímků video stopy s ID stopy TID. Pořadí musí být jedno z následujících čísel: 0: progresivní; 1: prokládané, horní půlsnímek se zobrazí jako první a uloží jako první; 2: neurčené pořadí půlsnímků; 6: prokládané, dolní půlsnímek se zobrazí jako první a uloží jako první; 9: prokládané, dolní půlsnímek se zobrazí jako první a horní půlsnímek se uloží jako první; 14: prokládané, horní půlsnímek se zobrazí jako první a dolní půlsnímek se uloží jako první
--stereo-mode TID:n|symbolic-name | Nastaví režim sterea video stopy s ID stopy TID. Režim může být buď číslo n mezi 0 a 14, nebo symbolický název. Všechna platná čísla & názvy lze vypsat volbou --list-stereo-modes.

## 2.9. Volby, které platí pouze pro textové titulkové stopy

Option | Description
--- | ---

--sub-charset TID:character-set

Nastaví pro dané ID stopy znakovou sadu používanou při převodu titulků do UTF-8. Není-li zadána, odvodí se znaková sada z aktuálního nastavení národního prostředí. Pro titulky načtené ze souborů Matroska(tm) nebo z proudů Kate není znaková sada potřeba, protože jsou vždy uloženy v UTF-8. Vysvětlení, jak mkvmerge(1) převádí mezi znakovými sadami, najdete v oddílu o textových souborech a znakových sadách.

Tuto volbu lze pro vstupní soubor použít vícekrát; pokaždé lze vybrat jiné ID stopy, takže platí pro několik stop.

## 2.10. Další volby

Option | Description
--- | ---
-i, --identify file-name | Nechá mkvmerge(1) prozkoumat jediný soubor a oznámit jeho typ, stopy obsažené v souboru a jejich ID stop. Při použití této volby je jediným dalším povoleným argumentem název souboru. Výstupní formát výsledku lze změnit volbou --identification-format.
-J file-name | Toto je pohodlný alias pro "--identification-format json --identify file-name".

-F, --identification-format format

Určuje výstupní formát používaný volbou --identify. Podporovány jsou následující formáty: text (výchozí, není-li tato volba použita) a json.

1. Formát text je stručný a čitelný pro člověka. Skládá se z jednoho řádku pro každou nalezenou položku (kontejner, stopy, přílohy atd.).

   Tento formát není určen ke strojovému zpracování. Výstup se přeloží do jazyka používaného programem mkvmerge(1) (viz také --ui-language).

2. Formát json vypisuje strojově čitelnou reprezentaci JSON. Tento formát se řídí schématem JSON popsaným v následujícím souboru:

   mkvmerge-identification-output-schema-v20.json

   Všechny verze schématu JSON jsou dostupné online i ve vydaných archivech zdrojového kódu.

--probe-range-percentage percentage

Typy souborů, jako jsou programové a transportní proudy MPEG (.vob, .m2ts), vyžadují analýzu určitého množství dat, aby bylo možné rozpoznat všechny stopy obsažené v souboru. Toto množství činí 0,3 % velikosti zdrojového souboru nebo 10 MB podle toho, která hodnota je větší.

Je-li známo, že stopy jsou přítomny, ale nebyly nalezeny, lze touto volbou změnit procento prohledávaných dat. Minimum 10 MB je pevně vestavěno a nelze je změnit.

--list-audio-emphasis | Vypíše všechna platná čísla & jejich odpovídající symbolické názvy pro volbu --audio-emphasis.
--list-languages | Vypíše všechny jazyky a jejich kódy ISO 639-2, které lze použít s volbou --language.
--list-stereo-modes | Vypíše všechna platná čísla & jejich odpovídající symbolické názvy pro volbu --stereo-mode.
-l, --list-types | Vypíše podporované typy vstupních souborů.

--priority priority

Nastaví prioritu procesu, s níž mkvmerge(1) běží. Platné hodnoty jsou 'lowest', 'lower', 'normal', 'higher' a 'highest'. Není-li zadána žádná hodnota, použije se 'normal'. Na systémech podobných Unixu používá mkvmerge(1) funkci nice(2). Hodnoty 'higher' a 'highest' proto může použít pouze superuživatel. V systému Windows může všechny hodnoty použít každý uživatel.

Výběr hodnoty 'lowest' způsobí, že mkvmerge(1) vedle nejnižší možné priority procesu zvolí také prioritu I/O v režimu nečinnosti.

--command-line-charset character-set | Nastaví znakovou sadu, ze které se mají převádět řetězce zadané na příkazovém řádku. Výchozí je znaková sada určená aktuálním národním prostředím systému. Toto nastavení platí pro argumenty následujících voleb: --title, --track-name a --attachment-description.
--output-charset character-set | Nastavuje znakovou sadu, do které se převádějí řetězce určené k výstupu. Výchozí je znaková sada daná aktuálním národním prostředím systému.
-r, --redirect-output file-name | Zapíše všechny zprávy do souboru file-name místo na konzoli. Ačkoli to lze snadno provést přesměrováním výstupu, tato volba je potřeba v případech, kdy terminál výstup před zápisem do souboru znovu interpretuje. Je respektována znaková sada nastavená pomocí --output-charset.
--no-bom | Textové soubory vytvořené & kódované v některé z variant UTF obvykle začínají značkou pořadí bajtů (BOM). Tato volba zakáže zápis této značky pořadí bajtů.
--flush-on-close | Dává programu pokyn, aby při zavírání souborů otevřených pro zápis vyprázdnil na úložiště všechna data uložená v paměti. Lze tím zabránit ztrátě dat při výpadku napájení nebo obejít určité problémy v operačním systému či ovladačích. Nevýhodou je, že multiplexování bude trvat déle, protože mkvmerge před ukončením čeká na zápis všech dat na úložiště. Podrobnou diskusi o výhodách a nevýhodách najdete v hlášeních č. 2469 a 2480 ve sledování chyb MKVToolNix.
--ui-language code | Vynutí použití překladů pro jazyk code (např. 'de_DE' pro německé překlady). Zadáním 'list' jako code program vypíše seznam dostupných překladů.
--abort-on-warnings | Ukončí program po vydání prvního upozornění. Návratový kód programu bude 1.

--deterministic seed

Povolí vytváření bajtově shodných souborů, pokud se použije stejná verze mkvmerge(1) se stejnými zdrojovými soubory, stejnou sadou voleb a stejnou počáteční hodnotou. V tomto režimu se nezapisuje pole „date“ v informacích o úseku.

Počáteční hodnota může být libovolný řetězec a nemusí být číslem.

Výsledek bajtově shodných souborů je zaručen pouze při následujících podmínkách:

1. Používá se stejná verze mkvmerge(1) sestavená se stejnými verzemi libEBML a libMatroska.

2. Použité zdrojové soubory jsou bajtově shodné.

3. Použijí se stejné volby příkazového řádku ve stejném pořadí (s významnou výjimkou --output …).

Použití jiných verzí mkvmerge(1) nebo jiných voleb příkazového řádku může vést ke stejnému bajtově shodnému souboru, není to však zaručeno.

--debug topic | Zapne ladění určité funkce. Tato volba je užitečná pouze pro vývojáře.
--engage feature | Zapne experimentální funkce. Seznam dostupných funkcí lze vyžádat příkazem mkvmerge --engage list. Tyto funkce nejsou určeny pro běžné použití.
--gui-mode | Zapne režim GUI. V tomto režimu mohou být vypisovány speciálně formátované řádky, které řídicímu GUI sdělují, co se děje. Tyto zprávy mají formát '#GUI#message'. Za zprávou mohou následovat dvojice klíč/hodnota jako v '#GUI#message#key1=value1#key2=value2…'. Zprávy ani klíče se nikdy nepřekládají a vždy jsou vypisovány anglicky.

@options-file.json

Načte další argumenty příkazového řádku ze souboru options-file. Další informace najdete v oddílu o souborech voleb.

Chcete-li použít znak @ jako první znak argumentu volby, například '--title', musíte jej zdvojit přidáním druhého znaku @. Příklad:

    $ mkvmerge -o midnight-s01e01.mkv --title @@midnight midnight-s01e01.mp4

--capabilities

Vypíše informace o volitelných funkcích zahrnutých při kompilaci a skončí. První řádek výstupu bude obsahovat informace o verzi. Každý následující řádek bude obsahovat právě jedno slovo, jehož přítomnost označuje, že daná funkce byla zahrnuta při kompilaci. Jde o tyto funkce:

- 'FLAC' -- čtení samostatných souborů FLAC a zpracování stop FLAC v jiných kontejnerech, např. Ogg(tm) nebo Matroska(tm).

-h, --help | Zobrazí informace o použití a ukončí se.
-V, --version | Zobrazí informace o verzi a ukončí se.

# 3. Použití

U každého souboru může uživatel vybrat, které stopy má mkvmerge(1) převzít. Všechny se vloží do souboru zadaného volbou -o. Seznam známých (a podporovaných) zdrojových formátů lze získat volbou -l.

Important:

Pořadí voleb příkazového řádku je důležité. Pokud program používáte poprvé, přečtěte si oddíl "Pořadí voleb".

# 4. Pořadí voleb

Pořadí, v němž se zadávají volby, je u některých voleb důležité. Volby spadají do dvou kategorií:

1. Volby, které ovlivňují celý program a nejsou svázány s žádným vstupním souborem. Patří mezi ně mimo jiné --command-line-charset, --output nebo --title. Na příkazovém řádku mohou být uvedeny kdekoli.

2. Volby, které ovlivňují jeden vstupní soubor nebo jednu stopu ve vstupním souboru. Všechny tyto volby platí pro následující vstupní soubor na příkazovém řádku. Všechny volby platné pro stejný vstupní soubor (nebo pro stopy ze stejného vstupního souboru) lze zapsat v libovolném pořadí, pokud jsou všechny uvedeny před názvem tohoto vstupního souboru. Příklady voleb platných pro vstupní soubor jsou --no-chapters nebo --chapter-charset. Příklady voleb platných pro jednu stopu jsou --default-duration nebo --language.

Volby se zpracovávají zleva doprava. Objeví-li se volba ve stejném rozsahu vícekrát, použije se její poslední výskyt. V následujícím příkladu se proto název nastaví na "Something else":

    $ mkvmerge -o output.mkv --title 'This and that' input.avi --title 'Something else'

Následující příklad ukazuje, že dvojí použití volby --language je v pořádku, protože je použita v různých rozsazích. Přestože se obě použití vztahují ke stejnému ID stopy, platí pro různé vstupní soubory, a mají proto různé rozsahy:

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

# 5. Příklady

Předpokládejme, že máte soubor MyMovie.avi a zvukovou stopu v samostatném souboru, např. 'MyMovie.wav'. Nejprve chcete zvuk zakódovat do OggVorbis(tm):

    $ oggenc -q4 -oMyMovie.ogg MyMovie.wav

Po několika minutách můžete spojit video a zvuk:

    $ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg

Obsahuje-li váš soubor AVI již zvukovou stopu, zkopíruje se také (pokud mkvmerge(1) daný zvukový formát podporuje). Chcete-li tomu zabránit, jednoduše použijte

    $ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg

Po chvíli přemýšlení vyextrahujete další zvukovou stopu, například komentář režiséra nebo stopu v jiném jazyce, do souboru 'MyMovie-add-audio.wav'. Znovu ji zakódujte a spojte s druhým souborem:

    $ oggenc -q4 -oMyMovie-add-audio.ogg MyMovie-add-audio.wav
    $ mkvmerge -o MM-complete.mkv MyMovie-with-sound.mkv MyMovie-add-audio.ogg

Stejného výsledku lze dosáhnout pomocí

    $ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg

Nyní spusťte mplayer(tm) a užívejte si výsledek. Máte-li více zvukových stop (nebo dokonce video stop), můžete programu mplayer(tm) volbami '-vid' a '-aid' určit, kterou stopu má přehrát. Číslování začíná od 0 a nerozlišuje mezi videem a zvukem.

Potřebujete-li zvukovou stopu synchronizovat, lze to snadno provést. Nejprve zjistěte ID stopy Vorbis pomocí

    $ mkvmerge --identify outofsync.ogg

Nyní můžete toto ID použít v následujícím příkazovém řádku:

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

Tím by se na začátek zvukové stopy s ID 12345 převzaté ze souboru 'outofsync.ogg' přidalo 200 ms ticha.

Některé filmy začínají správně synchronizované, ale postupně se rozcházejí. Pro takové filmy lze zadat faktor zpoždění, který se použije na všechna časová razítka -- žádná data se nepřidají ani neodeberou. Je-li faktor příliš velký nebo příliš malý, bude výsledek chybný. Například jedna mnou překódovaná epizoda byla 0.2 sekundy mimo synchronizaci na konci filmu, který měl 77340 snímků. Při 29.97fps odpovídá 0.2 sekundy přibližně 6 snímkům. Použil jsem tedy

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

Výsledek byl v pořádku.

Volby synchronizace lze stejným způsobem použít i pro titulky.

Pro textové titulky můžete použít buď některý program pro Windows (například SubRipper(tm)), nebo balíček subrip(tm), který se nachází ve zdrojích programu transcode(1) v adresáři 'contrib/subrip'. Obecný postup je následující:

1. extrahovat ze zdroje nezpracovaný proud titulků:

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

2. převést výsledné obrázky PGM na text pomocí gocr:

       $ pgm2txt mymovie

3. zkontrolovat pravopis výsledných textových souborů:

       $ ispell -d american *txt

4. převést textové soubory na soubor SRT:

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

Výsledný soubor lze použít jako další vstupní soubor pro mkvmerge(1):

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

Chcete-li zadat jazyk určité stopy, lze to snadno provést. Nejprve zjistěte kód ISO 639-2 svého jazyka. mkvmerge(1) vám může všechny tyto kódy vypsat:

    $ mkvmerge --list-languages

Vyhledejte v seznamu potřebné jazyky. Předpokládejme, že jste do souboru Matroska(tm) vložili dvě zvukové stopy, chcete nastavit jejich jazykové kódy a jejich ID stop jsou 2 a 3. Lze to provést příkazem

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

Jak vidíte, volbu --language lze použít vícekrát.

Možná také chcete, aby přehrávač ve výchozím nastavení používal nizozemštinu. Máte rovněž další titulky, například anglické a francouzské, a chcete, aby přehrávač ve výchozím nastavení zobrazoval francouzské. Lze to provést příkazem

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

Nevidíte-li ve výstupu mkvinfo(1) zadané příznaky jazyka nebo výchozí stopy, přečtěte si oddíl o výchozích hodnotách.

Vypne kompresi pro vstupní soubor.

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

# 6. ID stop

## 6.1. Běžná ID stop

Některé volby mkvmerge(1) vyžadují ID stopy k určení, na kterou stopu se mají použít. Tato ID stop vypisují čtečky při demultiplexování aktuálního vstupního souboru nebo se vypíší při spuštění mkvmerge(1) s volbou --identify. Příklad takového výstupu:

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

Nezaměňujte ID přiřazená stopám vkládaným do výstupního souboru MKV s ID stop vstupních souborů. Pro volby vyžadující tyto hodnoty se používají pouze ID stop vstupních souborů.

Každý vstupní soubor má navíc vlastní sadu ID stop. ID stop souboru 'file1.ext' oznámená příkazem 'mkvmerge --identify' se proto nemění bez ohledu na počet ostatních vstupních souborů nebo pozici, na které je 'file1.ext' použit.

ID stop se přiřazují takto:

- Soubory AVI: video stopa má ID 0. Zvukové stopy dostávají ID vzestupně od 1.

- Soubory AAC, AC-3, MP3, SRT a WAV: jediná 'stopa' v takovém souboru dostane ID 0.

- Většina ostatních souborů: ID stop se přiřazují v pořadí, v jakém se stopy v souboru najdou, od 0.

ID stop se používají u voleb, jejichž popis obsahuje 'TID'. Používají je také následující volby: --audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks a --track-tags.

## 6.2. Zvláštní ID stop

Existuje několik ID se zvláštním významem, která se nevyskytují ve výstupu identifikace.

Zvláštní ID stopy '-1' je zástupný znak a použije zadanou volbu na všechny stopy načtené ze vstupního souboru.

Zvláštní ID stopy '-2' odkazuje na kapitoly ve zdrojovém souboru. Toto zvláštní ID v současnosti používá pouze volba --sync. Jako alternativu k --sync -2:… lze použít volbu --chapter-sync ….

# 7. Zpracování jazyků

Matroska(tm) podporuje dva různé typy jazykových prvků: starý, zastaralý prvek "Language" obsahující třípísmenné kódy ISO 639-2 a nové značky "LanguageIETF" obsahující jazykové značky IETF BCP 47. Všechny volby mkvmerge(1), které přijímají jazyk, přijímají jazykovou značku BCP 47. Kdykoli je to možné, mkvmerge(1) odvodí hodnotu zastaralého prvku "Language" z jazykových značek BCP 47.

Při identifikaci souboru v režimu JSON se existující prvky "LanguageIETF" v hlavičkách stop vypíší jako vlastnost stopy language_ietf.

Při zápisu souboru mkvmerge(1) vždy zapíše prvky "LanguageIETF", "ChapLanguageIETF" a "TagLanguageIETF" (poslední dva pouze tehdy, zapisují-li se kapitoly, respektive štítky). Vedle těchto prvků se zapíší odpovídající staré prvky, které budou nastaveny na část jazykové značky BCP 47 tvořenou kódem ISO 639-2. Je-li například jazyk stopy nastaven na sr-Cyrl-RS, "LanguageIETF" se nastaví na sr-Cyrl-RS a starý prvek "Language" na srp.

Při čtení existujících souborů (souborů Matroska, souborů kapitol nebo štítků XML atd.), které již obsahují prvky "…LanguageIETF", se tyto prvky zachovají. Jinak se prvky "…LanguageIETF" přidají na základě voleb příkazového řádku a ostatních existujících zastaralých prvků "…Language".

Vytváření nových prvků lze zcela zakázat volbou příkazového řádku --disable-language-ietf, která působí na všechny tři nové prvky.

Parametrem --normalize-language-ietf lze zvolit metodu normalizace používanou pro rozšířené jazykové podznačky.

# 8. Textové soubory a převody znakových sad

Note:

Tento oddíl platí pro všechny programy v MKVToolNix, i když zmiňuje pouze mkvmerge(1).

## 8.1. Úvod

Veškerý text v souboru Matroska(tm) je kódován v UTF-8. mkvmerge(1) proto musí převádět každý načtený textový soubor i každý text zadaný na příkazovém řádku z určité znakové sady do UTF-8. Zároveň to znamená, že výstup mkvmerge(1) musí být z UTF-8 převeden zpět do této znakové sady, například při použití jiného než anglického překladu s volbou --ui-language nebo u textu pocházejícího ze souboru Matroska(tm).

mkvmerge(1) tento převod provádí automaticky podle přítomnosti značky pořadí bajtů (zkráceně BOM) nebo aktuálního národního prostředí systému. Způsob odvození znakové sady z národního prostředí závisí na operačním systému, na kterém mkvmerge(1) běží.

## 8.2. Značky pořadí bajtů (BOM)

Textové soubory začínající značkou BOM jsou již zakódovány v některé reprezentaci UTF. mkvmerge(1) podporuje následujících pět režimů: UTF-8, UTF-16 s pořadím bajtů Little Endian a Big Endian a UTF-32 s pořadím bajtů Little Endian a Big Endian. Textové soubory s BOM se automaticky převádějí do UTF-8. Všechny parametry, které by jinak nastavovaly znakovou sadu takového souboru (např. --sub-charset), se bez upozornění ignorují.

## 8.3. Linux a systémy podobné Unixu včetně macOS

Na systémech podobných Unixu používá mkvmerge(1) systémové volání setlocale(3), které používá proměnné prostředí LANG, LC_ALL a LC_CTYPE. Výslednou znakovou sadou je často UTF-8 nebo některá ze sady ISO-8859-*; používá se pro všechny operace s textovými soubory, pro kódování řetězců na příkazovém řádku i pro výstup do konzole.

## 8.4. Windows

V systému Windows se výchozí znaková sada používaná k převodu textových souborů určuje voláním systémové funkce GetACP().

Příkazový řádek se načítá funkcí GetCommandLineW(), která již vrací řetězec Unicode. Volba --command-line-charset se proto v systému Windows ignoruje.

Při výstupu do konzole nastávají tři případy:

1. Je-li výstup přesměrován volbou --redirect-output, je výchozí znakovou sadou UTF-8. Lze ji změnit volbou --output-charset.

2. Je-li výstup přesměrován samotným programem cmd.exe, např. pomocí mkvinfo file.mkv > info.txt, je znakovou sadou vždy UTF-8 a nelze ji změnit.

3. Jinak (při zápisu přímo do konzole) se používá funkce Windows WriteConsoleW() a volba --output-charset se ignoruje. Konzole by měla umět vypsat všechny znaky Unicode, pro něž je nainstalována odpovídající jazyková podpora (např. čínské znaky se nemusí zobrazit v anglických verzích Windows).

## 8.5. Volby příkazového řádku

Pro zadání znakových sad jsou k dispozici následující volby:

- --sub-charset pro textové soubory titulků a pro textové titulkové stopy uložené v kontejnerových formátech, u nichž nelze znakovou sadu jednoznačně určit (např. soubory Ogg),

- --chapter-charset pro textové soubory kapitol a pro kapitoly a názvy souborů uložené v kontejnerových formátech, u nichž nelze znakovou sadu jednoznačně určit (např. soubory Ogg pro informace o kapitolách, názvy stop a souborů atd.; soubory MP4 pro informace o kapitolách),

- --command-line-charset pro všechny řetězce na příkazovém řádku,

- --output-charset pro všechny řetězce zapisované do konzole nebo do souboru, je-li výstup přesměrován volbou --redirect-output. Na systémech jiných než Windows je výchozí znakovou sadou výstupu aktuální znaková sada systému. V systému Windows je výchozí UTF-8 jak při přesměrování volbou --redirect-output, tak při přesměrování samotným programem cmd.exe, např. mkvinfo file.mkv > info.txt.

# 9. Soubory voleb

Soubor voleb je soubor, ze kterého může mkvmerge(1) načíst další argumenty příkazového řádku. Lze jím obejít určitá omezení shellu nebo operačního systému při spouštění externích programů, například omezenou délku příkazového řádku.

Soubor voleb obsahuje data ve formátu JSON. Jeho obsah musí být platné pole JSON tvořené výhradně řetězci JSON. Soubor musí být kódován v UTF-8. Neměl by začínat značkou pořadí bajtů (BOM), je-li však přítomna, přeskočí se.

Pravidla pro uvozování zvláštních znaků uvnitř JSON stanovuje oficiální specifikace JSON, RFC 7159.

Samotný název souboru voleb musí být zadán jako argument příkazového řádku s předponou tvořenou znakem '@'.

Příkazový řádek 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg' lze převést na následující soubor voleb JSON nazvaný například 'options.json':

    [
      "-o",
      "c:\\Matroska\\my file.mkv",
      "--title",
      "#65",
      "-A",
      "a movie.avi",
      "sound.ogg"
    ]

Odpovídající příkaz by potom byl 'mkvmerge @options.json'.

# 10. Propojování souborů

Matroska(tm) podporuje propojování souborů, jímž se jednoduše určuje, že určitý soubor je předchůdcem nebo následníkem aktuálního souboru. Přesněji řečeno nejsou ve skutečnosti propojeny soubory, ale úseky Matroska(tm). Protože většina souborů bude pravděpodobně obsahovat pouze jeden úsek Matroska(tm), používají následující vysvětlení pojem 'propojování souborů', přestože přesnější by bylo 'propojování úseků'.

Každý úsek je identifikován jedinečným 128bitovým UID úseku. Toto UID automaticky vytváří mkvmerge(1). Propojení se provádí především vložením UID úseků (zkráceně SID) předchozího/následujícího souboru do informací v hlavičce úseku. mkvinfo(1) tyto identifikátory SIDs vypíše, pokud je najde.

Je-li soubor rozdělen na několik menších a použije se propojování, časová razítka nezačnou znovu od 0, ale pokračují od místa, kde skončil předchozí soubor. Tím se zachová absolutní čas, i když předchozí soubory nejsou dostupné (např. při streamování). Není-li propojování použito, měla by časová razítka každého souboru začínat od 0. Ve výchozím nastavení mkvmerge(1) propojování souborů nepoužívá. Chcete-li je použít, můžete je zapnout volbou --link. Tato volba má význam pouze tehdy, je-li aktivováno také rozdělení.

Bez ohledu na to, zda je rozdělení aktivní, může uživatel programu mkvmerge(1) určit, aby vytvořené soubory propojil s konkrétními SIDs. K tomu slouží volby --link-to-previous a --link-to-next. Tyto volby přijímají SID úseku ve formátu vypisovaném programem mkvinfo(1): 16 šestnáctkových čísel mezi 0x00 a 0xff, z nichž každé má předponu '0x', např. '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. Alternativně lze použít kratší podobu: 16 šestnáctkových čísel mezi 0x00 a 0xff bez předpon '0x' a bez mezer, např. '41da7366d9cfb21eae78ebb45ecab393'.

Je-li použito rozdělení, první soubor se propojí s SID zadaným volbou --link-to-previous a poslední soubor s SID zadaným volbou --link-to-next. Není-li rozdělení použito, jediný výstupní soubor se propojí s oběma identifikátory SIDs.

# 11. Výchozí hodnoty

Specifikace Matroska(tm) stanovuje pro některé prvky výchozí hodnotu. Je-li hodnota prvku rovna jeho výchozí hodnotě, prvek se do souboru obvykle nezapisuje, aby se šetřilo místem. Prvky, které může uživatel postrádat ve výstupu mkvinfo(1), jsou language a default track flag. Výchozí hodnotou prvku language je angličtina ('eng') a výchozí hodnotou prvku default track flag je true. Použijete-li tedy pro stopu --language 0:eng, ve výstupu mkvinfo(1) se neobjeví.

# 12. Přílohy

Možná chcete se souborem Matroska(tm) uchovat také fotografie nebo používáte titulky SSA a potřebujete zvláštní, velmi vzácné písmo TrueType(tm). V takových případech lze tyto soubory přiložit k souboru Matroska(tm). Nebudou k souboru pouze připojeny, ale vloží se do něj. Přehrávač pak může tyto soubory zobrazit (v případě 'fotografií') nebo je použít k vykreslení titulků (v případě 'písem TrueType(tm)').

Zde je příklad, jak k výstupnímu souboru přiložit fotografii a písmo TrueType(tm):

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

Je-li jako vstupní soubor použit soubor Matroska(tm) obsahující přílohy, mkvmerge(1) zkopíruje přílohy do nového souboru. Výběr příloh, které se mají zkopírovat a které nikoli, lze změnit volbami --attachments a --no-attachments.

# 13. Kapitoly

Systém kapitol Matroska(tm) je propracovanější než starší zavedený systém používaný v souborech OGM. Úplnou specifikaci najdete na webu Matroska.

mkvmerge(1) podporuje jako vstup dva druhy souborů kapitol. První formát, nazývaný „jednoduchý formát kapitol“, je stejný jako formát očekávaný nástroji OGM. Druhý je formát kapitol založený na XML, který podporuje všechny funkce kapitol Matroska(tm).

Kromě samostatných souborů kapitol umí mkvmerge(1) načítat kapitoly také z jiných formátů souborů (např. MP4, Ogg, Blu-ray nebo DVD).

## 13.1. Jednoduchý formát kapitol

Tento formát se skládá z dvojic řádků začínajících v tomto pořadí 'CHAPTERxx=' a 'CHAPTERxxNAME='. První obsahuje počáteční časové razítko a druhý název. Příklad:

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

mkvmerge(1) převede každou dvojici řádků na jeden prvek Matroska(tm) ChapterAtom. Nenastaví žádný prvek ChapterTrackNumber, což znamená, že všechny kapitoly platí pro všechny stopy v souboru.

Protože jde o textový soubor, může být nutný převod znakové sady. Vysvětlení převodu mezi znakovými sadami v programu mkvmerge(1) najdete v oddílu o textových souborech a znakových sadách.

## 13.2. Formát kapitol založený na XML

Formát kapitol založený na XML vypadá jako v následujícím příkladu:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd">
    <Chapters>
      <EditionEntry>
        <ChapterAtom>
          <ChapterTimeStart>00:00:30.000</ChapterTimeStart>
          <ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
          <ChapterDisplay>
            <ChapterString>A short chapter</ChapterString>
            <ChapterLanguage>eng</ChapterLanguage>
          </ChapterDisplay>
          <ChapterAtom>
            <ChapterTimeStart>00:00:46.000</ChapterTimeStart>
            <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
            <ChapterDisplay>
              <ChapterString>A part of that short chapter</ChapterString>
              <ChapterLanguage>eng</ChapterLanguage>
            </ChapterDisplay>
          </ChapterAtom>
        </ChapterAtom>
      </EditionEntry>
    </Chapters>

Tento formát umožňuje tři věci, které v jednoduchém formátu kapitol možné nejsou:

1. lze nastavit časové razítko konce kapitoly,

2. kapitoly lze vnořovat,

3. lze nastavit jazyk a zemi.

Distribuce MKVToolNix obsahuje v podadresáři doc několik ukázkových souborů, které lze použít jako základ.

Následující seznam uvádí podporované značky XML, jejich datové typy a případně platný rozsah jejich hodnot:

    Chapters (hlavní)
      EditionEntry (hlavní)
        EditionUID (celé číslo bez znaménka, platný rozsah: 1 <= hodnota)
        EditionFlagHidden (celé číslo bez znaménka, platný rozsah: 0 <= hodnota <= 1)
        EditionFlagDefault (celé číslo bez znaménka, platný rozsah: 0 <= hodnota <= 1)
        EditionFlagOrdered (celé číslo bez znaménka, platný rozsah: 0 <= hodnota <= 1)
        ChapterAtom (hlavní)
          ChapterAtom (hlavní)
          ChapterUID (celé číslo bez znaménka, platný rozsah: 1 <= hodnota)
          ChapterTimeStart (celé číslo bez znaménka)
          ChapterTimeEnd (celé číslo bez znaménka)
          ChapterFlagHidden (celé číslo bez znaménka, platný rozsah: 0 <= hodnota <= 1)
          ChapterFlagEnabled (celé číslo bez znaménka, platný rozsah: 0 <= hodnota <= 1)
          ChapterSegmentUID (binární, platný rozsah: 1 <= délka v bajtech)
          ChapterSegmentEditionUID (celé číslo bez znaménka, platný rozsah: 1 <= hodnota)
          ChapterPhysicalEquiv (celé číslo bez znaménka)
          ChapterTrack (hlavní)
            ChapterTrackNumber (celé číslo bez znaménka, platný rozsah: 1 <= hodnota)
          ChapterDisplay (hlavní)
            ChapterString (řetězec UTF-8)
            ChapterLanguage (řetězec UTF-8)
            ChapterCountry (řetězec UTF-8)
          ChapterProcess (hlavní)
            ChapterProcessCodecID (celé číslo bez znaménka)
            ChapterProcessPrivate (binární)
            ChapterProcessCommand (hlavní)
              ChapterProcessTime (celé číslo bez znaménka)
              ChapterProcessData (binární)

## 13.3. Načítání kapitol z disků Blu-ray

mkvmerge(1) umí načítat kapitoly z nešifrovaných disků Blu-ray. K tomu lze parametru --chapters předat cestu k některému seznamu stop MPLS.

Příklad: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls

## 13.4. Načítání kapitol z disků DVD

Je-li MKVToolNix zkompilován s knihovnou libdvdread(tm), umí mkvmerge(1) načítat kapitoly z disků DVD. K tomu lze parametru --chapters předat cestu k některému adresáři nebo souboru na DVD. Protože DVD může obsahovat více titulů a každý titul má vlastní sadu kapitol, lze na konec argumentu s názvem souboru připojit dvojtečku a požadované číslo titulu. Výchozí číslo titulu je 1.

Příklad: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2

## 13.5. Obecné poznámky

Při rozdělení souborů mkvmerge(1) správně upraví také kapitoly. Každý soubor tedy obsahuje pouze položky kapitol, které se na něj vztahují, a časová razítka se posunou tak, aby odpovídala novým časovým razítkům jednotlivých výstupních souborů.

mkvmerge(1) umí kopírovat kapitoly ze zdrojových souborů Matroska(tm), pokud to není výslovně zakázáno volbou --no-chapters. Kapitoly ze všech zdrojů (souborů Matroska(tm), souborů Ogg, souborů MP4 a textových souborů kapitol) se obvykle neslučují, ale skončí v samostatných prvcích ChapterEditions. Pouze pokud jsou kapitoly načteny z několika souborů Matroska(tm) nebo XML, které sdílejí stejná UID edic, sloučí se do jediného prvku ChapterEdition. Je-li takové sloučení požadováno i v jiných případech, musí uživatel nejprve pomocí mkvextract(1) extrahovat kapitoly ze všech zdrojů, ručně sloučit soubory XML a poté je multiplexovat.

# 14. Štítky

## 14.1. Úvod

Systém štítků Matroska(tm) je podobný systémům jiných kontejnerů: jde o sadu dvojic KEY=VALUE. V Matroska(tm) však mohou být tyto štítky také vnořené a KEY i VALUE jsou samostatné prvky. Ukázkový soubor example-tags-2.xml znázorňuje použití tohoto systému.

## 14.2. Rozsah platnosti štítků

Štítky Matroska(tm) se automaticky nevztahují na celý soubor. Mohou se na něj vztahovat, ale mohou se také vztahovat na různé části souboru: na jednu či více stop, jednu či více kapitol, nebo dokonce na kombinaci obojího. Další podrobnosti uvádí specifikace Matroska.

Důležité je, že štítky jsou se stopami nebo kapitolami propojeny prostřednictvím prvku štítku Matroska(tm) Targets a že UID použitá k tomuto propojení nejsou ID stop, která mkvmerge(1) používá na jiných místech. Používají se naopak UID, která mkvmerge(1) automaticky vypočítá (pochází-li stopa z jiného formátu než Matroska(tm)), nebo která zkopíruje ze zdrojového souboru, je-li zdrojem stopy soubor Matroska(tm). Proto je obtížné před předáním souboru programu mkvmerge(1) zjistit, která UID v souboru štítků použít.

mkvmerge(1) nabízí dvě volby pro přidávání štítků do souborů Matroska(tm): --global-tags a --tags. Rozdíl spočívá v tom, že první volba, --global-tags, odstraní všechny výše uvedené prvky Targets, a štítky se proto budou vztahovat na celý soubor. Druhá volba, --tags, automaticky vloží UID, které mkvmerge(1) vytvoří pro stopu zadanou částí TID volby --tags.

## 14.3. Příklad

Předpokládejme, že chcete přidat štítky k video stopě načtené ze souboru AVI. Příkaz mkvmerge --identify file.avi oznámí, že ID video stopy (nezaměňujte toto ID s UID) je 0. Vytvoříte tedy soubor štítků, vynecháte všechny prvky Targets a spustíte mkvmerge(1):

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

## 14.4. Formát souboru štítků

mkvmerge(1) podporuje formát souboru štítků založený na XML. Formát je velmi těsně odvozen od specifikace Matroska. Binární i zdrojová distribuce MKVToolNix obsahují ukázkový soubor example-tags-2.xml, který jednoduše uvádí všechny známé štítky a lze jej použít jako základ skutečných souborů štítků.

Základní pravidla:

- Kořenovým prvkem musí být <Tags>.

- Jeden logický štítek je obsažen v jedné dvojici <Tag> značek XML.

- Bílé znaky bezprostředně před obsahem štítku a za ním se ignorují.

## 14.5. Datové typy

Nový systém štítků Matroska(tm) zná pouze dva datové typy: řetězec UTF-8 a binární typ. První se používá pro název štítku a prvek <String>, zatímco binární typ se používá pro prvek <Binary>.

Protože samotná binární data nelze vložit do souboru XML, podporuje mkvmerge(1) dva jiné způsoby jejich uložení. Začíná-li obsah značky XML znakem '@', považuje se následující text za název souboru. Obsah odpovídajícího souboru se zkopíruje do prvku Matroska(tm).

Jinak se očekává, že data budou kódována pomocí Base64. Toto kódování převádí binární data na omezenou sadu znaků ASCII a používá se například v e-mailových programech. mkvextract(1) vypíše binární prvky jako data kódovaná pomocí Base64.

Zastaralý systém štítků zná několik dalších datových typů, které jsou uvedeny v oficiální specifikaci štítků Matroska(tm). Protože mkvmerge(1) tento systém již nepodporuje, nejsou zde tyto typy popsány.

## 14.6. Známé značky pro formát souboru XML

Následující seznam uvádí podporované značky XML, jejich datové typy a případně platný rozsah jejich hodnot:

    Tags (hlavní)
      Tag (hlavní)
        Targets (hlavní)
          TargetTypeValue (celé číslo bez znaménka)
          TargetType (řetězec UTF-8)
          TrackUID (celé číslo bez znaménka)
          EditionUID (celé číslo bez znaménka)
          ChapterUID (celé číslo bez znaménka)
          AttachmentUID (celé číslo bez znaménka)
        Simple (hlavní)
          Simple (hlavní)
          Name (řetězec UTF-8)
          TagLanguage (řetězec UTF-8)
          DefaultLanguage (celé číslo bez znaménka)
          String (řetězec UTF-8)
          Binary (binární)

# 15. Informace o úseku

Pomocí souboru XML s informacemi o úseku lze nastavit určité hodnoty v poli hlavičky "informace o úseku" souboru Matroska(tm). Žádnou z těchto hodnot nelze nastavit jinými volbami příkazového řádku.

Jiná pole hlavičky "informace o úseku" lze nastavit volbami příkazového řádku, nikoli však souborem XML. Patří sem například volby --title a --timestamp-scale.

Některé další prvky nelze nastavit ani volbami příkazového řádku, ani soubory XML. Patří mezi ně následující prvky: DateUTC (známý také jako "datum multiplexování"), MuxingApp, WritingApp a Duration. Vždy je nastavuje samotný mkvmerge(1).

Následující seznam uvádí podporované značky XML, jejich datové typy a případně platný rozsah jejich hodnot:

    Info (hlavní)
      SegmentUID (binární, platný rozsah: délka v bajtech == 16)
      SegmentFilename (řetězec UTF-8)
      PreviousSegmentUID (binární, platný rozsah: délka v bajtech == 16)
      PreviousSegmentFilename (řetězec UTF-8)
      NextSegmentUID (binární, platný rozsah: délka v bajtech == 16)
      NextSegmentFilename (řetězec UTF-8)
      SegmentFamily (binární, platný rozsah: délka v bajtech == 16)
      ChapterTranslate (hlavní)
        ChapterTranslateEditionUID (celé číslo bez znaménka)
        ChapterTranslateCodec (celé číslo bez znaménka)
        ChapterTranslateID (binární)

# 16. Uspořádání souboru Matroska

Uspořádání souboru Matroska(tm) je poměrně flexibilní. mkvmerge(1) vytvoří soubor předem stanoveným způsobem. Výsledný soubor vypadá takto:

[hlavička EBML] [úsek {hlavička vyhledávání č. 1} [informace o úseku] [informace o stopách] {přílohy} {kapitoly} [cluster 1] {cluster 2} ... {cluster n} {indexy} {hlavička vyhledávání č. 2} {štítky}]

Prvky ve složených závorkách jsou volitelné a závisí na obsahu a použitých volbách. Několik poznámek:

- Prvek hlavičky vyhledávání č. 1 obsahuje pouze malý počet prvků úrovně 1, a to jen tehdy, pokud skutečně existují: přílohy, kapitoly, indexy, štítky a prvek hlavičky vyhledávání č. 2. Starší verze mkvmerge(1) ukládaly do tohoto prvku hlavičky vyhledávání také clustery. Proto bylo nutné nepřesným odhadem vyhradit dostatek místa, což často selhalo. Nyní jsou clustery uloženy pouze v prvku hlavičky vyhledávání č. 2 a prvek hlavičky vyhledávání č. 1 odkazuje na prvek hlavičky vyhledávání č. 2.

- Prvky příloh, kapitol a štítků jsou přítomny pouze tehdy, pokud byly přidány.

Nejkratší možný soubor Matroska(tm) by vypadal takto:

[hlavička EBML] [úsek [informace o úseku] [informace o stopách] [cluster 1]]

Tak tomu může být u souborů obsahujících pouze zvuk.

# 17. Externí soubory časových razítek

mkvmerge(1) umožňuje uživateli zvolit časová razítka pro konkrétní stopu. To lze využít k vytváření souborů s videem s proměnlivou frekvencí snímků nebo k vkládání mezer do zvuku. Snímek je zde jednotka, kterou mkvmerge(1) vytváří samostatně pro každý blok Matroska(tm). U videa jde přesně o jeden snímek, u zvuku o jeden paket příslušného zvukového typu. Například u AC-3 by šlo o paket obsahující 1536 vzorků.

Soubory časových razítek používané při připojování stop k sobě se smějí zadat pouze pro první část řetězce stop. Pokud například připojujete dva soubory v1.avi a v2.avi a chcete použít časová razítka, musí příkazový řádek vypadat přibližně takto:

    $ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi

mkvmerge(1) rozpoznává čtyři formáty. První řádek vždy obsahuje číslo verze. Prázdné řádky, řádky obsahující pouze bílé znaky a řádky začínající znakem '#' se ignorují.

## 17.1. Formát souboru časových razítek v1

Tento formát začíná řádkem s verzí. Druhý řádek určuje výchozí počet snímků za sekundu. Všechny následující řádky obsahují tři čísla oddělená čárkami: počáteční snímek (0 je první snímek), koncový snímek a počet snímků za sekundu v tomto rozsahu. Hodnota FPS je číslo s plovoucí desetinnou čárkou, přičemž jako desetinný oddělovač se používá tečka '.'. Rozsahy mohou obsahovat mezery, pro které se použije výchozí hodnota FPS. Příklad:

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

## 17.2. Formát souboru časových razítek v2

V tomto formátu obsahuje každý řádek časové razítko odpovídajícího snímku. Časové razítko musí být zadáno s přesností na milisekundy. Může jít o číslo s plovoucí desetinnou čárkou, ale nemusí. Musíte zadat alespoň tolik řádků s časovými razítky, kolik je ve stopě snímků. Časová razítka v tomto souboru musí být seřazena. Příklad pro 25 fps:

    # timestamp format v2
    0
    40
    80

## 17.3. Formát souboru časových razítek v3

V tomto formátu každý řádek obsahuje délku v sekundách následovanou volitelným počtem snímků za sekundu. Obě hodnoty mohou být čísla s plovoucí desetinnou čárkou. Není-li počet snímků za sekundu uveden, použije se výchozí hodnota. U zvuku byste měli nechat časová razítka snímků vypočítat samotný kodek. Proto použijte jako počet snímků za sekundu hodnotu 0.0. Mezery v proudu lze vytvořit také klíčovým slovem 'gap' následovaným délkou mezery. Příklad pro zvukový soubor:

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

## 17.4. Formát souboru časových razítek v4

Tento formát je totožný s formátem v2. Jediný rozdíl spočívá v tom, že časová razítka nemusejí být seřazena. Tento formát by se téměř nikdy neměl používat.

# 18. Návratové kódy

mkvmerge(1) končí jedním ze tří návratových kódů:

- 0 – Tento návratový kód znamená, že multiplexování bylo úspěšně dokončeno.

- 1 – V tomto případě mkvmerge(1) vypsal alespoň jedno upozornění, ale multiplexování pokračovalo. Upozornění má předponu 'Warning:'. V závislosti na daných problémech může, ale nemusí být výsledný soubor v pořádku. Uživatel by měl zkontrolovat upozornění i výsledný soubor.

- 2 – Tento návratový kód se použije po výskytu chyby. mkvmerge(1) se ukončí hned po vypsání chybové zprávy. Chybové zprávy sahají od chybných argumentů příkazového řádku přes chyby čtení a zápisu až po poškozené soubory.

# 19. Proměnné prostředí

mkvmerge(1) používá výchozí proměnné určující národní prostředí systému (např. LANG a rodinu LC_*). Další proměnné:

Option | Description
--- | ---
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG a její zkrácený tvar MTX_DEBUG | Obsah se zpracuje, jako by byl předán pomocí volby --debug.
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE a její zkrácený tvar MTX_ENGAGE | Obsah se zpracuje, jako by byl předán pomocí volby --engage.

# 20. Viz také

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

# 21. WWW

Nejnovější verzi lze vždy najít na domovské stránce MKVToolNix.