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

Table of contents

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ů:

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.