mkvextract -- sávok kivonása Matroska(tm) fájlokból más fájlokba

# 1. Szinopszis

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

# 2. Leírás

Ez a program egy Matroska(tm) fájlból bizonyos részeket más hasznos formátumba von ki. Az első argumentum a forrásfájl neve, amelynek egy Matroska(tm) fájlnak kell lennie.

Az összes többi argumentum vagy átvált egy bizonyos extrahálási módra, vagy megváltoztatja az aktuálisan aktív mód beállításait, vagy megadja, hogy melyik fájlba mit kell extrahálni. Az mkvextract egyazon meghívásakor többféle mód is használható, ami lehetővé teszi több dolog egyetlen menetben történő kinyerését. A legtöbb opció csak bizonyos üzemmódokban használható, néhány opció azonban minden üzemmódra vonatkozik.

Jelenleg támogatott a sávok, tagok, csatolmányok, fejezetek, CUE lapok, időbélyegek és cues.

## 2.1. Közös lehetőségek

A következő beállítások minden üzemmódban rendelkezésre állnak, és ebben a szakaszban csak egyszer kerülnek ismertetésre.

Option | Description
--- | ---
-f, --parse-fully | Az elemzési módot 'full'-ra állítja. Az alapértelmezett mód nem elemzi a teljes fájlt, hanem a meta seek elemeket használja a forrásfájl szükséges elemeinek megtalálására. Az esetek 99%-ában ez elegendő. De olyan fájlok esetében, amelyek nem tartalmaznak meta seek elemeket, vagy amelyek sérültek, a felhasználónak esetleg ezt a módot kell használnia. Egy fájl teljes átvizsgálása néhány percig is eltarthat, míg a gyors átvizsgálás csak másodperceket vesz igénybe.
--command-line-charset karakterkészlet | Beállítja a karakterkészletet, amelyből a parancssorban megadott karakterláncokat konvertálni kell. Alapértelmezés szerint a rendszer aktuális területi beállítása által megadott karakterkészlet.
--output-charset karakterkészlet | Beállítja azt a karakterkészletet, amelybe a kimeneti karakterláncokat konvertálja. Alapértelmezés szerint a rendszer aktuális területi beállítása által megadott karakterkészlet.
-r, --redirect-output file-name | Az összes üzenetet a konzol helyett a fájlnév fájlba írja. Bár ez könnyen elvégezhető a kimenet átirányításával, vannak olyan esetek, amikor szükség van erre az opcióra: amikor a terminál újraértelmezi a kimenetet, mielőtt kiírná azt egy fájlba. A --output-charset karakterkészletet tiszteletben tartja.
--no-bom | Normally text files that are created & encoded in one of the UTF variants will start with a byte order marker (BOM). Using this option disables writing that byte order marker.
--flush-on-close | Megmondja a programnak, hogy az írásra megnyitott fájlok bezárásakor a memóriában tárolt összes adatot törölje a tárolóba. Ez arra használható, hogy megakadályozza az adatvesztést áramkimaradás esetén, vagy hogy megkerülje az operációs rendszer vagy az illesztőprogramok bizonyos problémáit. Hátránya, hogy a multiplexelés tovább tart, mivel az mkvmerge a kilépés előtt megvárja, amíg minden adat kiíródik a tárolóba. Az előnyök és hátrányok részletes megvitatásáért lásd az MKVToolNix hibakövetőjének #2469 és #2480 kérdéseit.
--ui-language code | Kényszeríti a nyelv kód fordításainak használatát (pl. 'de_DE' a német fordításokhoz). A 'list' mint kód megadásával a program kiadja a rendelkezésre álló fordítások listáját.
--abort-on-warnings | A program megszakítására utasítja a programot az első figyelmeztetés megjelenése után. A program kilépési kódja 1 lesz.
--debug topic | A hibakeresés bekapcsolása egy adott funkcióhoz. Ez az opció csak fejlesztők számára hasznos.
--engage feature | Kapcsolja be a kísérleti funkciókat. Az elérhető funkciók listája a mkvextract --engage list paranccsal kérhető le. Ezek a funkciók nem használhatók normál helyzetekben.
--gui-mode | Bekapcsolja a GUI módot. Ebben az üzemmódban speciálisan formázott sorokat adhat ki, amelyekkel a vezérlő GUI-nak elmondhatja, hogy mi történik. Ezek az üzenetek a '#GUI#message' formátumot követik. Az üzenetet kulcs/érték párok követhetik, mint a '#GUI#üzenet#key1=value1#key2=value2...'. Sem az üzenetek, sem a kulcsok nem kerülnek lefordításra, és mindig angol nyelven kerülnek kiadásra.
-v, --verbose | Legyen bőbeszédű, és mutassa meg az összes fontos Matroska(tm) elemet olvasás közben.
-h, --help | Használati információk megjelenítése és kilépés.
-V, --version | Verzióinformációk megjelenítése és kilépés.
@options-file.json | További parancssori argumentumokat olvas be a options-file fájlból. Az ilyen fájlok támogatott formátumainak teljes magyarázatát lásd az mkvmerge(1) man oldal "Opciós fájlok" című szakaszában.

## 2.2. Nyomvonal-kivonási mód

Szintaxis: mkvextract forrás-fájlnév tracks [options] TID1:dest-fájlnév1 [TID2:dest-fájlnév2 ...]

A következő parancssori opciók állnak rendelkezésre minden egyes sávhoz a 'tracks' extrakciós módban. Ezeknek az opcióknak a sávspecifikáció előtt kell állniuk (lásd alább), amelyre alkalmazni kell őket.

Option | Description
--- | ---
-c karakterkészlet | Beállítja a következő szöveges felirat-sáv átkonvertálásának karakterkészletét. Csak akkor érvényes, ha a következő sáv azonosítója szöveges felirat-sávot céloz meg. Alapértelmezés szerint UTF-8.
--blockadd szint | Csak a BlockAdditions-t tartsa meg ezen a szinten. Az alapértelmezett beállítás az összes szint megtartása. Ez az opció csak bizonyos típusú kodekeket érint, mint például a WAVPACK4.
--kódex | Az mkvextract(1) a következő szám fejezetinformációiból és címkeadataiból egy CUE lap kivonására egy olyan fájlba, amelynek neve a szám kimeneti neve és a hozzá csatolt '.cue'.
---nyers | A nyers adatok kivonása egy fájlba, a körülötte lévő tároló adatok nélkül. A --fullraw jelzővel ellentétben ez a jelző nem okozza a CodecPrivate elem tartalmának a fájlba írását. Ez az üzemmód minden CodecID-val működik, még azokkal is, amelyeket az mkvextract(1) egyébként nem támogat, de az eredményül kapott fájlok nem biztos, hogy használhatóak lesznek.
----fullraw | A nyers adatok kivonása egy fájlba, a körülötte lévő tároló adatok nélkül. A CodecPrivate elem tartalma kerül először a fájlba, ha a track tartalmaz ilyen fejlécelemet. Ez a mód minden CodecID elemmel működik, még azokkal is, amelyeket az mkvextract(1) egyébként nem támogat, de az eredményül kapott fájlok esetleg nem használhatóak.
TID:outname. | A TID azonosítóval rendelkező sáv kivonását okozza a outname fájlba, ha létezik ilyen sáv a forrásfájlban. Ez az opció többször is megadható. A sávazonosítók megegyeznek az mkvmerge(1) --identify opció által kiadottakkal. Minden kimeneti név csak egyszer használható. Kivételt képeznek a RealAudio és RealVideo sávok. Ha ugyanazt a nevet használja különböző sávokhoz, akkor ezek a sávok ugyanabba a fájlba lesznek mentve. Példa:
    $ mkvextract input.mkv sávok 0:video.h264 2:output-két-vobsub-sáv.idx 3:output-két-vobsub-sáv.idx

## 2.3. Csatolmányok kivonási mód

Szintaxis: mkvextract forrás-fájlnév attachments [options] AID1:outname1 [AID2:outname2 ...]

Option | Description
--- | ---
AID:külső név | A AID azonosítóval rendelkező csatolmány kivonását okozza a outname fájlba, ha létezik ilyen csatolmány a forrásfájlban. Ha a outname üresen marad, akkor helyette a forrás Matroska(tm) fájlban lévő csatolmány neve kerül felhasználásra. Ez az opció többször is megadható. A csatolmányok azonosítói megegyeznek az mkvmerge(1) --identify opció által kiadottakkal.

## 2.4. Fejezetek kivonási mód

Szintaxis: mkvextract forrás-fájlnév fejezetek [opciók] kimenet-fájlnév.xml.

Option | Description
--- | ---
-s, --simple | A fejezetinformációk exportálása a OGM eszközökben használt egyszerű formátumban (CHAPTER01=..., CHAPTER01NAME=...). Ebben a módban néhány információt el kell dobni. Alapértelmezés szerint a fejezeteket XML. formátumban adja ki.
--simple-language language | Ha az egyszerű formátum engedélyezve van, akkor az mkvextract(1) csak egyetlen bejegyzést ad ki minden egyes fejezetatomhoz, még akkor is, ha egy fejezetatom egynél több fejezetnevet tartalmaz. Alapértelmezés szerint az mkvextract(1) minden atomhoz az első talált fejezetnevet fogja használni, függetlenül annak nyelvétől. Ezzel az opcióval a felhasználó meghatározhatja, hogy mely fejezetnevek kerüljenek ki, ha az atomok egynél több fejezetnevet tartalmaznak. A nyelv paraméternek ISO 639-1 vagy ISO 639-2 kódnak kell lennie.

A fejezetek a megadott kimeneti fájlba kerülnek kiírásra. Alapértelmezés szerint az mkvmerge(1) által értett XML. formátumot használja. Ha a fájlban nem található fejezet, a kimeneti fájl nem jön létre.

## 2.5. Címkék kivonási mód

Szintaxis: mkvextract forrás-fájlnév tags [options] kimenet-fájlnév.xml

Option | Description
--- | ---
-T, --no-track-tags | Exports only tags that aren't track-specific.

A címkék az mkvmerge(1) által értett XML. formátumban kerülnek a megadott kimeneti fájlba. Ha a fájlban nem találunk címkéket, a kimeneti fájl nem jön létre.

## 2.6. Cue sheet kivonási mód

Szintaxis: mkvextract forrás-fájlnév táblalap [opciók] kimenet-fájlnév.cue.

A cue sheet a megadott kimeneti fájlba íródik. Ha a fájlban nem található fejezet vagy címke, a kimeneti fájl nem jön létre.

## 2.7. Időbélyeg kivonási mód

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

Option | Description
--- | ---
TID:outname. | A TID azonosítóval rendelkező sáv időbélyegeinek kivonását okozza a outname fájlba, ha létezik ilyen sáv a forrásfájlban. Ez az opció többször is megadható. A sávazonosítók megegyeznek az mkvmerge(1) --identify opció által kiadottakkal. Példa:
    $ mkvextract input.mkv timestamps_v2 1:ts-track1.txt 2:ts-track2.txt

## 2.8. Cues kivonási mód

Szintaxis: mkvextract forrás-fájlnév cues [options] TID1:dest-fájlnév1 [TID2:dest-fájlnév2 ...]

Option | Description
--- | ---
TID:dest-filename | A TID azonosítóval rendelkező sávhoz tartozó cue-ok kivonását okozza a outname fájlba, ha létezik ilyen sáv a forrásfájlban. Ez az opció többször is megadható. A sávazonosítók megegyeznek az mkvmerge(1) --identify opció által kimeneti azonosítókkal, nem pedig a CueTrack elemben szereplő számok.

A kimeneti formátum egyszerű szöveges formátum: egy sor CuePoint elemenként key=value párokkal. Ha egy opcionális elem nincs jelen a CuePoint-ban (pl. CueDuration), akkor értékként egy kötőjelet kapunk.

Példa:

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

A lehetséges kulcsok a következők:

Option | Description
--- | ---
időbélyegző | A cue pont időbélyege nanoszekundumos pontossággal. A formátum HH:MM:SS.nnnnnnnnnnnnn. Ez az elem mindig be van állítva.
időtartam | A jelzőpont időtartama nanoszekundumos pontossággal. A formátum HH:MM:SS.nnnnnnnnnnnnn.
cluster_position | A Matroska(tm) fájlon belüli abszolút pozíció bájtokban, ahol a hivatkozott elemet tartalmazó klaszter kezdődik. Note: A Matroska(tm) fájlban a CueClusterPosition a szegmens adatainak kezdő eltolásához viszonyítva van. Az mkvextract(1) cue extrakciós módja által kimeneti érték azonban már tartalmazza ezt az eltolást, és a fájl elejétől számított abszolút eltolás.
relative_position | A klaszteren belüli relatív pozíció bájtokban, ahol a BlockGroup vagy SimpleBlock elem, amelyre a cue point utal, kezdődik. Note: Az Matroska(tm) fájlban a CueRelativePosition a klaszter adatainak kezdő eltolásához viszonyítva van. Az mkvextract(1) cue extrakciós mód által kimeneti érték azonban a klaszter azonosítójához viszonyítva van. Az abszolút pozíció a fájlon belül a cluster_position és a relative_position összeadásával számítható ki.

Példa:

    $ mkvextract input.mkv cues 1:cues-sáv1.txt 2:cues-sáv2.txt

# 3. Példák

Mind a fejezetek, mind a címkék kivonása a megfelelő XML. formátumokban egyszerre:

    $ mkvextract movie.mkv fejezetek movie-chapters.xml címkék movie-tags.xml

Néhány zeneszám és a hozzájuk tartozó időbélyegzők egyidejű kivonása:

    $ mkvextract "Another Movie.mkv" trackek 0:video.h265 "1:main audio.aac" "2:rendezői megjegyzések.aac" timestamps_v2 "0:timestamps video.txt" "1:timestamps main audio.txt" "2:időbélyegek rendezői megjegyzések.txt"

Fejezetek kivonása Ogg/OGM formátumban és szöveges feliratsáv újrakódolása más karakterkészletbe:

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

# 4. Szövegfájlok és karakterkészlet-átalakítások

Az MKVToolNix csomagban található összes eszköz karakterkészlet-konverziójának, a be- és kimeneti kódolásnak, a parancssori kódolásnak és a konzol kódolásnak a kezeléséről részletesebben az mkvmerge(1) man oldal azonos nevű szakaszában olvashat.

# 5. Kimeneti fájlformátumok

A kimeneti formátumról szóló döntés a sáv típusán alapul, nem pedig a kimeneti fájlnévhez használt kiterjesztésen. Jelenleg a következő sávtípusok támogatottak:

Option | Description
--- | ---
A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC | Minden AAC fájl egy AAC fájlba íródik, minden csomag előtt ADTS fejléccel. Az ADTS fejlécek nem tartalmazzák a deprecated emphasis mezőt.
A_AC3, A_EAC3 | Ezeket nyers AC-3 fájlokká kell kicsomagolni.
A_ALAC | A ALAC zeneszámok CAF fájlokba íródnak.
A_DTS | Ezeket nyers DTS fájlokká kell kicsomagolni.
A_FLAC | A FLAC sávok nyers FLAC fájlokba íródnak.
A_MPEG/L2 | Az MPEG-1 Audio Layer II adatfolyamokat nyers MP2 fájlokká vonja ki.
A_MPEG/L3 | Ezeket nyers MP3 fájlokká fogjuk kinyerni.
A_OPUS | Opus(tm) tracks are written to OggOpus(tm) files.
A_PCM/INT/LIT, A_PCM/INT/BIG | A nyers PCM adatok egy WAV fájlba íródnak. A big-endian egész számadatokat a folyamat során little-endian adatokká konvertálja.
A_REAL/* | RealAudio(tm) tracks are written to RealMedia(tm) files.
A_TRUEHD, A_MLP | Ezeket nyers TrueHD/MLP fájlokká kell kicsomagolni.
A_TTA1 | TrueAudio(tm) tracks are written to TTA files. Please note that due to Matroska(tm)'s limited timestamp precision the extracted file's header will be different regarding two fields: data_length (the total number of samples in the file) and the CRC.
A_VORBIS | A Vorbis hang egy OggVorbis(tm) fájlba kerül kiírásra.
A_WAVPACK4 | WavPack(tm) tracks are written to WV files.
S_HDMV/PGS | A PGS feliratok SUP fájlként lesznek kiírva.
S_HDMV/TEXTST | TextST A feliratok egy speciális fájlformátumban kerülnek kiírásra, amelyet az mkvmerge(1) és mkvextract(1) számára találtak ki.
S_KATE | Kate(tm) streams will be written within an Ogg(tm) container.
S_TEXT/SA, S_TEXT/ASS, S_SSA, S_ASS | A SSA és ASS szöveges feliratokat SSA/ASS fájlként írjuk ki.
S_TEXT/UTF8, S_TEXT/ASCII | Az egyszerű szöveges feliratokat SRT fájlként írja ki.
S_VOBSUB | VobSub(tm) subtitles will be written as SUB files along with the respective index files, as IDX files.
S_TEXT/USF | A USF szöveges feliratokat USF fájlként írja ki.
S_TEXT/WEBVTT | A WebVTT szöveges feliratokat WebVTT fájlként írja ki.
V_MPEG1, V_MPEG2 | A MPEG-1 és MPEG-2 videósávok MPEG elemi folyamként kerülnek kiírásra.
V_MPEG4/ISO/AVC | H.264 / AVC video tracks are written to H.264 elementary streams which can be processed further with e.g. MP4Box(tm) from the GPAC(tm) package.
V_MPEG4/ISO/HEVC | H.265 / HEVC video tracks are written to H.265 elementary streams which can be processed further with e.g. MP4Box(tm) from the GPAC(tm) package.
V_MS/VFW/FOURCC | Javított FPS videósávok ezzel a CodecID kóddal AVI fájlba íródnak.
V_REAL/* | RealVideo(tm) tracks are written to RealMedia(tm) files.
V_THEORA | Theora(tm) streams will be written within an Ogg(tm) container
V_VP8, V_VP9 | A VP8 / VP9 sávok IVF fájlokba íródnak.
Címkék | A címkéket XML. formátumra konvertáljuk. Ez a formátum ugyanaz, mint amit az mkvmerge(1) támogat a címkék olvasásához.
Mellékletek | A mellékletek változatlanul a kimeneti fájlba kerülnek. Semmilyen átalakítás nem történik.
Fejezetek | A fejezetek XML. formátumra vannak konvertálva. Ez a formátum ugyanaz, mint amit az mkvmerge(1) támogat a fejezetek olvasásához. Alternatívaként egy lecsupaszított változatot is ki lehet adni az egyszerű OGM stílusú formátumban.
Időbélyegek | Az időbélyegeket először rendezi, majd kimeneti időbélyeg v2 formátumú fájlként kész a mkvmerge(1) -be való betáplálásra. A más formátumba (v1, v3 és v4) történő kivonás nem támogatott.

# 6. Kilépési kódok

mkvextract(1) a három kilépési kód egyikével lép ki:

- 0 -- Ez a kilépési kód azt jelenti, hogy az extrakció sikeresen befejeződött.

- 1 -- Ebben az esetben az mkvextract(1) legalább egy figyelmeztetést adott ki, de az extrakció folytatódott. A figyelmeztetés előtt a 'Figyelmeztetés:' szöveg áll. Az érintett problémáktól függően az eredményül kapott fájlok lehetnek rendben vagy nem. A felhasználót arra kérjük, hogy ellenőrizze mind a figyelmeztetést, mind a kapott fájlokat.

- 2 -- Ezt a kilépési kódot hiba esetén használjuk. mkvextract(1) a hibaüzenet kiadása után azonnal megszakad. A hibaüzenetek a hibás parancssori argumentumoktól kezdve az olvasási/írási hibákon át a törött fájlokig terjednek.

# 7. Környezeti változók

mkvextract(1) az alapértelmezett változókat használja, amelyek meghatározzák a rendszer nyelvjárását (pl. LANG és a LC_* család). További változók:

Option | Description
--- | ---
MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG és annak rövidített formája MTX_DEBUG. | A tartalmat úgy kezeli, mintha a --debug opcióval adta volna át.
MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE és annak rövidített formája MTX_ENGAGE. | A tartalmat úgy kezeli, mintha a --engage opcióval adta volna át.

# 8. Lásd még

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

# 9. WWW

A legfrissebb verzió mindig megtalálható a az MKVToolNix honlapon.