mkvextract -- extrahovat stopy ze souborů Matroska do jiných souborů

mkvextract -- extrahovat stopy ze souborů Matroska(tm) do jiných souborů

# 1. Přehled

mkvextract {source-filename} {mode1} options extraction-spec1 mode2 options extraction-spec2 …

# 2. Popis

Tento program extrahuje konkrétní části ze souboru Matroska(tm) do jiných užitečných formátů. Prvním argumentem je název zdrojového souboru, který musí být souborem Matroska(tm).

Všechny ostatní argumenty buď přepínají do určitého režimu extrakce, mění volby aktuálně aktivního režimu, nebo určují, co se má extrahovat do kterého souboru. V jednom spuštění mkvextract lze použít více režimů, což umožňuje extrahovat více věcí v jediném průchodu. Většinu voleb lze použít pouze v určitých režimech; několik voleb platí pro všechny režimy.

V současnosti je podporována extrakce stop, štítků, příloh, kapitol, CUE sheetů, časových razítek a indexů.

## 2.1. Společné volby

Následující volby jsou dostupné ve všech režimech a jsou popsány pouze jednou v tomto oddílu.

Option | Description
--- | ---
-f, --parse-fully | Nastavuje režim analýzy na 'full'. Výchozí režim neanalyzuje celý soubor, ale k nalezení požadovaných prvků zdrojového souboru používá prvky hlavičky vyhledávání. V 99 % všech případů to stačí. U souborů, které prvky hlavičky vyhledávání neobsahují nebo jsou poškozené, však uživatel možná bude muset tento režim použít. Úplná kontrola souboru může trvat několik minut, zatímco rychlá kontrola trvá jen sekundy.
--command-line-charset character-set | Nastavuje znakovou sadu, ze které se převádějí řetězce zadané na příkazovém řádku. Výchozí je znaková sada daná aktuálním národním prostředím systému.
--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.
--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 pomocí mkvextract --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.
-v, --verbose | Vypisuje podrobné informace a zobrazuje všechny důležité prvky Matroska(tm) při jejich čtení.
-h, --help | Zobrazí informace o použití a ukončí se.
-V, --version | Zobrazí informace o verzi a ukončí se.
@options-file.json | Načte další argumenty příkazového řádku ze souboru options-file. Úplné vysvětlení podporovaných formátů takových souborů naleznete v oddílu „Option files“ manuálové stránky mkvmerge(1).

## 2.2. Režim extrakce stop

Syntaxe: mkvextract source-filename tracks [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

Následující volby příkazového řádku jsou dostupné pro každou stopu v režimu extrakce 'tracks'. Musí být uvedeny před specifikací stopy (viz níže), na kterou se mají použít.

Option | Description
--- | ---
-c character-set | Nastavuje znakovou sadu, do které se má převést následující textová titulková stopa. Platí pouze tehdy, pokud ID následující stopy označuje textovou titulkovou stopu. Výchozí je UTF-8.
--blockadd level | Zachová pouze BlockAdditions až do této úrovně. Výchozí je zachovat všechny úrovně. Tato volba ovlivňuje pouze určité druhy kodeků, například WAVPACK4.
--cuesheet | Způsobí, že mkvextract(1) extrahuje CUE sheet z informací o kapitolách a dat štítků následující stopy do souboru, jehož název je výstupním názvem stopy s připojenou příponou '.cue'.
--raw | Extrahuje surová data do souboru bez okolních kontejnerových dat. Na rozdíl od volby --fullraw tato volba nezpůsobí zápis obsahu prvku CodecPrivate do souboru. Tento režim funguje se všemi CodecIDs, dokonce i s těmi, které mkvextract(1) jinak nepodporuje, ale výsledné soubory nemusí být použitelné.
--fullraw | Extrahuje surová data do souboru bez okolních kontejnerových dat. Obsah prvku CodecPrivate se nejprve zapíše do souboru, pokud stopa takový prvek hlavičky obsahuje. Tento režim funguje se všemi CodecIDs, dokonce i s těmi, které mkvextract(1) jinak nepodporuje, ale výsledné soubory nemusí být použitelné.

TID:outname

Způsobí extrakci stopy s ID TID do souboru outname, pokud taková stopa ve zdrojovém souboru existuje. Tuto volbu lze zadat vícekrát. ID stop jsou stejná jako ID vypisovaná volbou --identify programu mkvmerge(1).

Každý výstupní název by se měl použít pouze jednou. Výjimkou jsou stopy RealAudio a RealVideo. Použijete-li stejný název pro různé stopy, budou tyto stopy uloženy do stejného souboru. Příklad:

    $ mkvextract input.mkv tracks 0:video.h264 2:output-two-vobsub-tracks.idx 3:output-two-vobsub-tracks.idx

## 2.3. Režim extrakce příloh

Syntaxe: mkvextract source-filename attachments [options] AID1:outname1 [AID2:outname2 ...]

Option | Description
--- | ---
AID:outname | Způsobí extrakci přílohy s ID AID do souboru outname, pokud taková příloha ve zdrojovém souboru existuje. Zůstane-li outname prázdný, použije se místo něj název přílohy uvnitř zdrojového souboru Matroska(tm). Tuto volbu lze zadat vícekrát. ID příloh jsou stejná jako ID vypisovaná volbou --identify programu mkvmerge(1).

## 2.4. Režim extrakce kapitol

Syntaxe: mkvextract source-filename chapters [options] output-filename.xml

Option | Description
--- | ---
-s, --simple | Exportuje informace o kapitolách v jednoduchém formátu používaném nástroji OGM (CHAPTER01=..., CHAPTER01NAME=...). V tomto režimu je nutné některé informace zahodit. Výchozí je výpis kapitol ve formátu XML.

--simple-language language

Je-li povolen jednoduchý formát, mkvextract(1) vypíše pouze jednu položku pro každý nalezený atom kapitoly, i když atom kapitoly obsahuje více než jeden název kapitoly. Ve výchozím stavu mkvextract(1) použije pro každý atom první nalezený název kapitoly bez ohledu na jeho jazyk.

Pomocí této volby může uživatel určit, které názvy kapitol se vypíší, pokud atomy obsahují více než jeden název kapitoly. Parametr language musí být kód ISO 639-1 nebo ISO 639-2.

Kapitoly se zapíší do zadaného výstupního souboru. Výchozí je formát XML, kterému rozumí mkvmerge(1). Nejsou-li v souboru nalezeny kapitoly, výstupní soubor se nevytvoří.

## 2.5. Režim extrakce štítků

Syntaxe: mkvextract source-filename tags [options] output-filename.xml

Option | Description
--- | ---
-T, --no-track-tags | Exportuje pouze štítky, které nejsou specifické pro stopu.

Štítky se zapíší do zadaného výstupního souboru ve formátu XML, kterému rozumí mkvmerge(1). Nejsou-li v souboru nalezeny štítky, výstupní soubor se nevytvoří.

## 2.6. Režim extrakce CUE sheetu

Syntaxe: mkvextract source-filename cuesheet [options] output-filename.cue

CUE sheet se zapíše do zadaného výstupního souboru. Nejsou-li v souboru nalezeny kapitoly ani štítky, výstupní soubor se nevytvoří.

## 2.7. Režim extrakce časových razítek

Syntaxe: mkvextract source-filename timestamps_v2 [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

Option | Description
--- | ---

TID:outname

Způsobí extrakci časových razítek stopy s ID TID do souboru outname, pokud taková stopa ve zdrojovém souboru existuje. Tuto volbu lze zadat vícekrát. ID stop jsou stejná jako ID vypisovaná volbou --identify programu mkvmerge(1).

Příklad:

    $ mkvextract input.mkv timestamps_v2 1:ts-track1.txt 2:ts-track2.txt

## 2.8. Režim extrakce indexů

Syntaxe: mkvextract source-filename cues [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

Option | Description
--- | ---
TID:dest-filename | Způsobí extrakci indexů stopy s ID TID do souboru outname, pokud taková stopa ve zdrojovém souboru existuje. Tuto volbu lze zadat vícekrát. ID stop jsou stejná jako ID vypisovaná volbou --identify programu mkvmerge(1), nikoli čísla obsažená v prvku CueTrack.

Výstupní formát je jednoduchý textový formát: jeden řádek pro každý prvek CuePoint s dvojicemi key=value. Není-li v prvku CuePoint přítomen volitelný prvek (např. CueDuration), vypíše se jako hodnota pomlčka.

Příklad:

    timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11

Možné klíče jsou:

Option | Description
--- | ---
timestamp | Časové razítko bodu indexu s přesností na nanosekundy. Formát je HH:MM:SS.nnnnnnnnn. Tento prvek je vždy nastaven.
duration | Délka bodu indexu s přesností na nanosekundy. Formát je HH:MM:SS.nnnnnnnnn.
cluster_position | Absolutní pozice v bajtech uvnitř souboru Matroska(tm), kde začíná cluster obsahující odkazovaný prvek. Note: Uvnitř souboru Matroska(tm) je CueClusterPosition relativní vůči počátečnímu posunu dat úseku. Hodnota vypisovaná režimem extrakce indexů programu mkvextract(1) však již tento posun obsahuje a je absolutním posunem od začátku souboru.
relative_position | Relativní pozice v bajtech uvnitř clusteru, kde začíná prvek BlockGroup nebo SimpleBlock, na který bod indexu odkazuje. Note: Uvnitř souboru Matroska(tm) je CueRelativePosition relativní vůči počátečnímu posunu dat clusteru. Hodnota vypisovaná režimem extrakce indexů programu mkvextract(1) je však relativní vůči ID clusteru. Absolutní pozici uvnitř souboru lze vypočítat sečtením cluster_position a relative_position.

Příklad:

    $ mkvextract input.mkv cues 1:cues-track1.txt 2:cues-track2.txt

# 3. Příklady

Současná extrakce kapitol a štítků v příslušných formátech XML:

    $ mkvextract movie.mkv chapters movie-chapters.xml tags movie-tags.xml

Současná extrakce několika stop a jejich příslušných časových razítek:

    $ mkvextract "Another Movie.mkv" tracks 0:video.h265 "1:main audio.aac" "2:director's comments.aac" timestamps_v2 "0:timestamps video.txt" "1:timestamps main audio.txt" "2:timestamps director's comments.txt"

Extrakce kapitol ve formátu Ogg/OGM a překódování textové titulkové stopy do jiné znakové sady:

    $ mkvextract "My Movie.mkv" chapters --simple "My Chapters.txt" tracks -c MS-ANSI "2:My Subtitles.srt"

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

Podrobnou diskusi o způsobu, jakým všechny nástroje sady MKVToolNix pracují s převody znakových sad, kódováním vstupu/výstupu, příkazového řádku a konzole, naleznete ve stejnojmenném oddílu manuálové stránky mkvmerge(1).

# 5. Formáty výstupních souborů

Rozhodnutí o výstupním formátu je založeno na typu stopy, nikoli na příponě použité pro název výstupního souboru. V současnosti jsou podporovány následující typy stop:

Option | Description
--- | ---
A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC | Všechny soubory AAC budou zapsány do souboru AAC s hlavičkami ADTS před každým paketem. Hlavičky ADTS nebudou obsahovat zastaralé pole zdůraznění.
A_AC3, A_EAC3 | Tyto stopy budou extrahovány do surových souborů AC-3.
A_ALAC | Stopy ALAC se zapisují do souborů CAF.
A_DTS | Tyto stopy budou extrahovány do surových souborů DTS.
A_FLAC | Stopy FLAC se zapisují do surových souborů FLAC.
A_MPEG/L2 | Proudy MPEG-1 Audio Layer II budou extrahovány do surových souborů MP2.
A_MPEG/L3 | Tyto stopy budou extrahovány do surových souborů MP3.
A_OPUS | Stopy Opus(tm) se zapisují do souborů OggOpus(tm).
A_PCM/INT/LIT, A_PCM/INT/BIG | Surová data PCM budou zapsána do souboru WAV. Celočíselná data big-endian budou při zpracování převedena na data little-endian.
A_REAL/* | Stopy RealAudio(tm) se zapisují do souborů RealMedia(tm).
A_TRUEHD, A_MLP | Tyto stopy budou extrahovány do surových souborů TrueHD/MLP.
A_TTA1 | Stopy TrueAudio(tm) se zapisují do souborů TTA. Upozorňujeme, že kvůli omezené přesnosti časových razítek Matroska(tm) se hlavička extrahovaného souboru bude lišit ve dvou polích: data_length (celkový počet vzorků v souboru) a CRC.
A_VORBIS | Zvuk Vorbis bude zapsán do souboru OggVorbis(tm).
A_WAVPACK4 | Stopy WavPack(tm) se zapisují do souborů WV.
S_HDMV/PGS | Titulky PGS budou zapsány jako soubory SUP.
S_HDMV/TEXTST | Textové titulky TextST budou zapsány jako zvláštní formát souboru vytvořený pro mkvmerge(1) a mkvextract(1).
S_KATE | Proudy Kate(tm) budou zapsány v kontejneru Ogg(tm).
S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS | Textové titulky SSA a ASS budou zapsány jako soubory SSA, resp. ASS.
S_TEXT/UTF8, S_TEXT/ASCII | Jednoduché textové titulky budou zapsány jako soubory SRT.
S_VOBSUB | Titulky VobSub(tm) budou zapsány jako soubory SUB spolu s příslušnými indexovými soubory IDX.
S_TEXT/USF | Textové titulky USF budou zapsány jako soubory USF.
S_TEXT/WEBVTT | Textové titulky WebVTT budou zapsány jako soubory WebVTT.
V_MPEG1, V_MPEG2 | Video stopy MPEG-1 a MPEG-2 budou zapsány jako elementární proudy MPEG.
V_MPEG4/ISO/AVC | Video stopy H.264 / AVC se zapisují jako elementární proudy H.264, které lze dále zpracovat například programem MP4Box(tm) z balíku GPAC(tm).
V_MPEG4/ISO/HEVC | Video stopy H.265 / HEVC se zapisují jako elementární proudy H.265, které lze dále zpracovat například programem MP4Box(tm) z balíku GPAC(tm).
V_MS/VFW/FOURCC | Video stopy s pevnou FPS s tímto CodecID se zapisují do souborů AVI.
V_REAL/* | Stopy RealVideo(tm) se zapisují do souborů RealMedia(tm).
V_THEORA | Proudy Theora(tm) budou zapsány v kontejneru Ogg(tm)
V_VP8, V_VP9 | Stopy VP8 / VP9 se zapisují do souborů IVF.
Štítky | Štítky jsou převedeny do formátu XML. Tento formát je stejný, jaký mkvmerge(1) podporuje pro čtení štítků.
Přílohy | Přílohy se zapisují do výstupního souboru beze změny. Neprovádí se žádný převod.
Kapitoly | Kapitoly jsou převedeny do formátu XML. Tento formát je stejný, jaký mkvmerge(1) podporuje pro čtení kapitol. Alternativně lze vypsat zjednodušenou verzi v jednoduchém formátu ve stylu OGM.
Časová razítka | Časová razítka se nejprve seřadí a pak vypíšou jako soubor odpovídající formátu časových razítek v2, připravený pro mkvmerge(1). Extrakce do jiných formátů (v1, v3 a v4) není podporována.

# 6. Návratové kódy

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

- 0 – Tento návratový kód znamená, že extrakce byla úspěšně dokončena.

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

- 2 – Tento návratový kód se použije po výskytu chyby. mkvextract(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.

# 7. Proměnné prostředí

mkvextract(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
--- | ---
MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG a její zkrácený tvar MTX_DEBUG | Obsah se zpracuje, jako by byl předán pomocí volby --debug.
MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE a její zkrácený tvar MTX_ENGAGE | Obsah se zpracuje, jako by byl předán pomocí volby --engage.

# 8. Viz také

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

# 9. WWW

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