mkvextract -- выманне трэка з файлаў Matroska(tm) у іншыя файлы

# 1. Кароткі змест

mkvextract {імя-файла-крыніцы} {рэжым1} параметры уласцівасці-вымання1 рэжым2 параметры уласцівасці-вымання2 …

# 2. Апісанне

Гэтая праграма вымае зададзеныя фрагменты з файла Matroska(tm) у іншыя неабходныя фарматы. Першы аргумент — імя зыходнага файла, які павінен быць файлам Matroska(tm).

Усе астатнія аргументы або пераключаюць у пэўны рэжым вымання, змяняюць параметры бягучага актыўнага рэжыма, або задаюць, у які файл трэба выняцт. Пры выкліку mkvextract могуць выкарыстоўвацца некалькі рэжымаў, што дазваляе вымаць некалькі элементаў за адзін праход. Большасць параметраў могуць выкарыстоўвацца толькі ў пэўных рэжымах з некалькімі параметрамі, якія ўжываюцца да ўсіх рэжымаў.

У дадзены час падтрымліваецца выманне трэкаў, тэгаў, далучэнняў, раздзелаў, файлаў разметкі CUE, метак часу і Сue.

## 2.1. Агульныя параметры

Наступныя параметры даступныя ва ўсіх рэжымах і апісваюцца ў гэтай секцыі аднойчы.

Option | Description
--- | ---
-f, --parse-fully | Задаецца рэжым аналізу на «поўны». Стандартны рэжым не аналізуе ўвесь файл, а выкарыстоўвае элементы метапошуку для знаходжання элементаў у зыходным файле. У 99% выпадкаў гэтага дастаткова. Але для пашкоджаных файлаў і для тых, у якіх няма элементаў метапошуку, карыстальніку прыйдзецца выкарыстоўваць гэты рэжым. Поўнае сканаванне файла можа патрабаваць некалькі хвілін, у той час як хуткае сканаванне праходзіць за секунды.
--command-line-charset кадзіроўка | Задае кадзіроўку для канвертацыі радкоў, зададзеных у камандным радку. Стандартная кадзіроўка прывязаная да сістэмнай лакалізацыі.
--output-charset кадзіроўка | Задае кадзіроўку, у якой канвертуюцца выхадныя радкі. Па змаўчанні выкарыстоўваецца бягучая кадзіроўка сістэмнай мовы.
-r, --redirect-output імя-файла | Усе паведамленні запісваюцца ў файл імя-файла замест кансолі. Хаця гэта можна зрабіць і праз перанакіраванне вываду, ёсць асобныя выпадкі ўжывання менавіта гэтага параметра: калі тэрмінал інтэрпрэтуе ў іншы спосаб вываду пераз запісам файла. Кадзіороўка, зададзеная ў --output-charset, улічваецца.
--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 | Задае праграме скінуць усе даныя, закэшаваныя ў памяці, у сховішчы пры закрыцці файлаў, адкрытых для запісу. Гэта можа быць выкарыстана для прадухілення страты даных пры адключэнні сілкавання або для абыходу пэўных праблем у аперацыйнай сістэме або драйверах. Недахопам з'яўляецца тое, што зліццё зойме больш часу, бо mkvmerge прыйдзецца чакаць, пакуль усе даныя не будуць запісаныя ў сховішча перад выхадам. Гдядзіце праблемы #2469 і #2480 ў трэкеры памылак MKVToolNix, дзе падрабязна пракаментаваныя плючы і мінусы.
--ui-language код | Прымусова выкарыстоўваць пераклад на код мовы (напр., «de_DE» для нямецкай). Калі задаць «list» замест кода, то будзе выведзены спіс даступных перакладаў.
--abort-on-warnings | Задае mkvmerge перапыненне пасля з'яўлення першага папярэджання. Код завяршэння праграмы будзе 1.
--debug тэматыка | Уключыць рэжым адладкі для зададзенай функцыі. Гэты параметр карысны толькі для распрацоўшчыкаў.
--engage функцыя | Уключыць эксперыментальныя функцыі. Спіс даступных функцый можа быць выкліканы праз mkvextract --engage list. Гэтыя функцыі не прызначаныя для звычайнага выкарыстання.
--gui-mode | Уключае рэжым графічнага інтэрфейса. У гэтым рэжыме могуць выводзіцца спецыяльна адфармаціраваныя радкі для адпраўкі кантрольных паведамленняў інтэрфейсу. Фармат паведмленняў — '#GUI#message'. За паведамленнем могуць быць зададзеныя пары ключа і значэння, напрыклад '#GUI#message#key1=value1#key2=value2…'. Паведамленні і ключы не перакладаюцца і заўжды выводзяцца на англійскай.
-v, --verbose | Увесці пашыраны вывад і паказваць усе важныя элементы Matroska(tm) па меры іх чытання.
-h, --help | Паказаць звесткі аб выкарыстанні і выйсці.
-V, --version | Паказаць звесткі аб версіі і выйсці.
@файл-параметраў.json | Счытвае дадатковыя аргументы каманднага радка з файла options-file. Поўнае апісанне падтрымліваных фарматаў для такіх файлаў глядзіце ў секцыі «Файлы параметраў» на старонцы дакументацыі mkvmerge(1).

## 2.2. Рэжым вымання трэка

Сінтаксіс: mkvextract імя-зыходнага-файла трэкі [параметры] TID1:імя-мэтавага-файла1 [TID2:імя-мэтавага-файла2 ...]

Наступныя параметры каманднага радка даступныя для кожнага трэка ў рэжыме вымання 'tracks'. Яны павінны прысутнічаць перад заданнем трэка (гл. ніжэй), да якога будуць ужывацца.

Option | Description
--- | ---
-c кадзіроўка | Задае набор сімвалаў, які павінен змяшчаць наступны трэк субцітраў пасля канвертацыі. Ужывацца толькі тады, калі ID наступнага трэка паказвае на трэк субцітраў. Па змаўчанні выкарыстоўваецца UTF-8.
--blockadd узровень | Захаваць BlockAdditions толькі да гэтага ўзроўня. Па змаўчанні захоўваюцца ўсе ўзроўні. Гэты параметр уплывае толькі на пэўны тып кадзіроўшчыкаў, напрыклад WAVPACK4.
--Сuesheet | Выконвае з дапамогай mkvextract(1) вымання спісаў CUE са звестак аб раздзелах і з даных тэгаў дадзенага трэка ў файл з назвай выхаднога трэка і пашырэннем '.Сue'.
--raw | У адрозненні ад пазнакі --fullraw гэты параметр не прыводзіць да запісу звесціва элемента CodecPrivate у файл. Гэты рэжым працуе з усімі CodecIDs, нават з тымі, якія mkvextract(1) не падтрымлівае, але гэта можа прывесці да стварэння пашкоджанага файла.
--fullraw | Вымае неапрацаваныя даныя ў файл без кантэйнера. Змесціва элемента CodecPrivate будзе запісана першым у файл, калі трэк утрымлівае падобны элемент загалоўка. Гэты рэжым працуе з усімі CodecIDs, нават з тымі, якія mkvextract(1) не падтрымлівае, але гэта можа прывесці да стварэння пашкоджанага файла.
TID:выхадное-імя | Вымае трэк з ID TID у файла выхадное_імя пры ўмове, што такі трэк утрымліваецца ў зыходным файле. Гэты параметр можна задаваць некалькі разоў. ID трэкаў павінны быць такімі ж як і пры вывадзе звестак камандай mkvmerge(1) з параметрам --identify. Кожнае імя выхаднога файла павінна выкарыстоўвацца толькі раз. Выключэннем ёсць трэкі RealAudio і RealVideo. Калі выкарыстоўваць аднолькавыя імі для розных трэкаў, то яны будуць захаваныя ў адным файле. Прыклад:
    $ mkvextract input.mkv tracks 0:video.h264 2:output-two-vobsub-tracks.idx 3:output-two-vobsub-tracks.idx

## 2.3. Рэжым вымання далучэнняў

Сінтаксіс: mkvextract імя-зыходнага-файла далучэнні [параметры] AID1:выхадное-імя1 [AID2:выхадное-імя2 ...]

Option | Description
--- | ---
AID:выхадное-імя | Робіць выманне далучэння з ID AID у файл outname пры ўмове, калі такое далучэнне ўтрымліваецца ва ўваходным файле. Калі ж пакінуць outname пустым, то будзе выкарыстоўвацца імя далучэння з уваходнага файла Matroska(tm). Гэты параметр можна выкарыстоўваць некалькі разоў. ID далучэнняў павінныя быць такімі ж як і пры вывадзе звестак камандай mkvmerge(1) з параметрам --identify.

## 2.4. Рэжым вымання раздзелаў

Сінтаксіс: mkvextract імя-зыходнага-файла раздзелы [параметры] імя-выхаднога-файла.xml

Option | Description
--- | ---
-s, --simple | Экспарт раздзела звестак у просты фармат, які выкарыстоўваецца ў інструментах OGM (РАЗДЗЕЛ01=..., РАЗДЗЕЛ01ІІМЯ=...). У гэтым рэжыме некаторыя звесткі павінны быць адкінутыя. Па змаўчанні раздзелы выводзяцца ў фармат XML.
--simple-language мова | Калі ўключаны просты фармат, то mkvextract(1) будзе выводзіць толькі адзіны запіс для кожнага сустрэчнага атама раздзелаў, нават калі атам раздзелаў утрымлівае больш за адно імя раздзела. Па змаўчанні mkvextract(1) будзе выкарыстоўваць першы знойдзены залаговак раздзела для кожнага атама незалежна ад яго мовы. Выкарыстанне гэтага параметра дае магчымасць карыстальніку вызначыць, якія імі раздзелаў выводзяцца, калі атамы ўтрымліваюць больш за адно імя раздзела. Параметр language павінен быць кодам з ISO 639-1 або ISO 639-2.

Раздзелы запісаныя ў зададзены выхадны файл. Па змаўчанні выкарыстоўваецца зразумеды для mkvmerge(1) фармат XML. Калі ў файле няма раздзелаў, то выхадны файл не створаны.

## 2.5. Рэжым вымання метак

Сінтаксіс: mkvextract імя-зыходнага-файла тэгі [параметры] імя-выхаднога-файла.xml

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

Тэгі запісаныя ў зададзены выхадны XML-файл, зразумелы для mkvmerge(1). Калі ў файле няма тэгаў, то выхадны файл не створаны.

## 2.6. Рэжым вымання файлаў разметкі Cue

Сінтаксіс: mkvextract імя-зыходнага-файла Сuesheet [параметры] імя-выхаднога-файла.Сue

Cue sheet (файл разметкі) запісаны ў зададзены выхадны файл. Калі ў фале няма раздзелаў або тэгаў, то выхадны файл не створаны.

## 2.7. Рэжым вымання меткі часу

Сінтаксіс: mkvextract імя-зыходнага-файла меткі-часу_v2 [параметры] TID1:імя-мэтавага-файла1 [TID2:імя-мэтавага-файла2 ...]

Option | Description
--- | ---
TID:выхадное-імя | Вымае меткі часу трэка з ID TID у файла выхадное_імя пры ўмове, што такі трэк утрымліваецца ў зыходным файле. Гэты параметр можна задаць некалькі разоў. ID трэкаў павінны быць такія ж як і пры вывадзе звестка камандай mkvmerge(1) з параметрам --identify. Прыклад:
    $ mkvextract input.mkv timestamps_v2 1:ts-track1.txt 2:ts-track2.txt

## 2.8. Рэжым вымання Cue

Сінтаксіс: mkvextract імя-зыходнага-файла Cue [параметры] TID1:імя-мэтавага-файла1 [TID2:імя-мэтавага-файла2 ...]

Option | Description
--- | ---
TID:імя-мэтавага-файла | Вымае трэк з ID TID у файла выхадное_імя пры ўмове, што такі трэк утрымліваецца ў зыходным фале. Гэты параметр можна задаваць некалькі разоў. ID трэкаў павінен быць такім жа, як і пры вывадзе звестак камандай mkvmerge(1) з параметрам --identify, пры гэтым не павінны супадаць з лічбамі, якія ўтрымліваюцца ў элеменце CueTrack.

Выхадны фармат прадстаўлены ў тэкставым выглядзе: адзін элемент CuePoint на лінію з парай ключ=значэнне. Калі элемент параметра не прадстаўлены ў CuePoint (напр. CueDuration), то замест значэння будзе працяжнік.

Прыклад:

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

Магчымыя ключы:

Option | Description
--- | ---
метка часу | Даўжыня кропкі Сue з дакладнасцю да нанасекунд. Фармат: HH:MM:SS.nnnnnnnnn. Гэты элемент заўсёды задаецца.
даўжыня | Даўжыня кропкі Сue з дакладнасцю да нанасекунд. Фармат: HH:MM:SS.nnnnnnnnn.
cluster_position | Абсалютная пазіцыя ў байтах унутры файла Matroska(tm), з якой пачынаецца кластар, які ўтрымлівае спасылачны элемент. Note: Унутры файла Matroska(tm) CueClusterPosition знаходзіцца адносна пачатковага змяшчэння дадзеных сегмента. Аднак значэнне, якое выводзіцца ў рэжыме вымання Сue mkvextract(1), ўжо ўтрымлівае гэтае змяшчэнне і з'яўляецца абслаютным змяшчэннем ад пачатка файла.
relative_position | Адносная пазіцыя ў байтах унутры кластара, дзе пачынаюцца элементы BlockGroup або SimpleBlock, на якія спачылаецца Сue-кропка. Note: Унутры файла Matroska(tm) CueRelativePosition адносна пачатковага змяшчэння дадзеных кластара. Аднак значэнне, якое выводзіцца рэжымам вымання меткі mkvextract(1), залежыць ад ідэнтыфікатара кластара. Абсалютная пазіцыя ўнутры файла можна вылічыць дабаўленнем cluster_position і relative_position.

Прыклад:

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

# 3. Прыклады

Выманне раздзелаў і тэгаў у іхнія адпаведныя фарматы XML за адзін раз:

    $ mkvextract фільм.mkv chapters раздзелы-фільма.xml tags тэгі-фільма.xml

Выманне пары трэкаў і іхнія адпаведныя меткі часу за адзін раз:

    $ mkvextract "Іншы фільм.mkv" tracks 0:video.h265 "1:асноўнае аўдыя.aac" "2:каментарыі рэжысёра.aac" меткі часу_v2 "0:меткі часу відэа.txt" "1:меткі часу асноўнага аўдыя.txt" "2:меткі часу каментарыяў рэжысёра.txt"

Выманне раздзелаў у фармат Ogg/OGM і перакадзіраванне трэка тэкставых субцітраў у іншую кадзіроўку:

    $ mkvextract "Мой фільм.mkv" chapters --simple "Мае раздзелы.txt" tracks -c MS-ANSI "2:Мае субцітры.srt"

# 4. Канвертацыя тэкставых файлаў і кадзіровак

Падрабязнае абмеркаванне таго, як усе інструменты пакета MKVToolNix апрацоўваюць канвертацыю набораў сімвалаў, кадзіроўку ўводу/вываду, кадзіроўку каманднага радка і кадзіроўку кансолі, глядзіце ў секцыі з ідэнтычнай назвай у даведкавай старонцы mkvmerge(1).

# 5. Фарматы файлаў на выхадзе

Рашэнне аб фармаце файла на выхадзе выбіраецца на аснове тыпу трэка, а не пашырэння выхаднога файла. На дадзены момант падтрымлліваюцца наступныя тыпы трэкаў:

Option | Description
--- | ---
A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC | Усе файлы AAC будуць запісаныя ў файл AAC з загалоўкамі ADTS перад кожным пакетам. Загалоўкі ADTS не будуць змяшчаць састарэлае поле асаблівага назначэння.
A_AC3, A_EAC3 | Гэта будзе вынята ў неапрацаваныя файлы AC-3.
A_ALAC | Трэкі ALAC(tm) запісаныя ў файлы CAF(tm).
A_DTS | Гэта будзе вынята ў неапрацаваныя файлы DTS.
A_FLAC | Трэкі FLAC(tm) запісаныя ў файлы FLAC(tm).
A_MPEG/L2 | Патокі MPEG-1 Audio Layer II будуць вынятыя ў неапрацаваныя файлы MP2.
A_MPEG/L3 | Гэта будзе вынята ў неапрацаваныя файлы MP3.
A_OPUS | Трэкі Opus(tm) запісаныя ў файлы OggOpus(tm).
A_PCM/INT/LIT, A_PCM/INT/BIG | Неапрацаваныя даныя PCM будуць запісаныя ў файл WAV. Дадзеныя ў выглядзе цэлалікавых з вялікім канцом будуць сканвертаваныя ў даныя з малым канцом у працэсе.
A_REAL/* | Трэкі RealAudio(tm) запісаныя ў файлы RealMedia(tm).
A_TRUEHD, A_MLP | Гэта будзе вынята ў неапрацаваныя файлы TrueHD/MLP.
A_TTA1 | Трэкі TrueAudio(tm) запісваюцца ў файлы TTA. Майце на ўвазе, што праз абмежаваную дакладнасць метак часу Matroska(tm), вынятыя загалоўкі файлаў будуць рознымі, як зададзена ў дзух палях data_length (сумарная колькасць узораў у файле) і CRC.
A_VORBIS | Аўдыяфайлы Vorbis будуць запісаныя ў файл OggVorbis(tm).
A_WAVPACK4 | Трэкі WavPack(tm) запісаныя ў файлы WV(tm).
S_HDMV/PGS | Субцітры PGS будуць запісаныя ў файлы SUP.
S_HDMV/TEXTST | Субцітры TextST будуць запісаныя в виде файла, созданного специально для mkvmerge(1) и mkvextract(1).
S_KATE | Патокі Kate(tm) будуць запісаныя ў кантэйнер Ogg(tm).
S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS | Тэкставыя субцітры SSA і ASS будуць запісаныя ў выглядзе файлаў SSA/ASS адпаведна.
S_TEXT/UTF8, S_TEXT/ASCII | Простыя тэкставыя субцітры будуць запісаныя ў выглядзе файлаў SRT.
S_VOBSUB | Субцітры VobSub(tm) будуць запісаныя ў выглядзе файлаў SUB с соответствующими файлами индексов в виде IDX.
S_TEXT/USF | Тэкставыя субцітры USF будуць запісаныя ў выглядзе файлаў USF.
S_TEXT/WEBVTT | Тэкставыя субцітры WebVTT будуць запісаныя ў выглядзе файлаў WebVTT.
V_MPEG1, V_MPEG2 | Відэатрэкі MPEG-1 і MPEG-2 будуць запісаныя ў выглядзе элементарных патокаў MPEG.
V_MPEG4/ISO/AVC | Відэатрэкі H.264 / AVC будуць запісаныя ў выглядзе элементарных патокаў H.264, якія ў далейшым могуць быць апрацаваныя, напрыклад, праз MP4Box(tm) з пакета GPAC(tm).
V_MPEG4/ISO/HEVC | Відэатрэкі H.265 / EVC будуць запісаныя ў выглядзе элементарных патокаў H.265, якія ў далейшым могуць быць апрацаваныя, напрыклад, праз MP4Box(tm) з пакета GPAC(tm).
V_MS/VFW/FOURCC | Відэатрэкі з фіксаванай кадравай частатой і з дадзеным CodecID запісаныя ў выглядзе файлаў AVI.
V_REAL/* | Трэкі RealVideo(tm) запісаныя ў файлы RealMedia(tm).
V_THEORA | Патокі Theora(tm) будуць запісаныя ў кантэйнер Ogg(tm)
V_VP8, V_VP9 | Трэкі VP8 / VP9 запісаныя ў файлы IVF.
Тэгі | Тэгі канвертуюцца ў фармат XML. Гэты ж фармат mkvmerge(1) выкарыстоўвае для чытання тэгаў.
Далучэнні | Далучэнні запісваюцца ў выхадны файл як ёсць. Ніякай канвертацыі не выконваецца.
Раздзелы | Раздзелы канвертуюцца ў фармат XML. Гэты ж фармат mkvmerge(1) выкарыстоўваецца для чытання раздзелаў. Або можна выняць урэзаную версію ў спрошчаны стылевы фармат OGM.
Меткі часу | Меткі часу спачатку сартуюцца і затым выводзяцца ў фармаце метак часу v2, сумяшальным для выкарыстання ў mkvmerge(1). Выманне ў іншыя фарматы (v1, v3 і v4) не падтрымліваецца.

# 6. Коды завяршэння

mkvextract(1) завяршаецца з адным з трох кодаў:

- 0 -- Гэты код завяршэння азначае, што выманне скончылася паспяхова.

- 1 -- У гэтым выпадку mkvextract(1) выдаў хаця б адно папярэджанне, аднак выманне працягнулася. Папярэджанню папярэднічае тэкст 'Warning:'. У залежнасці ад узніклых памылак, выніковыя файлы могуць быць або цэлымі, або пашкоджанымі. Карыстальніку рэкамендуецца звярнуць увагу на само папярэджанне і праверыць выніковыя файлы.

- 2 -- Гэты код завяршэння выкарыстоўваецца ў выніку ўзнікнення памылкі. mkvextract(1) спыняе працу адразу пасля вываду паведамлення аб памылцы. Памылкі могуць узнікнуць праз памылковыя параметры каманднага радка, праз памылкі чытання/запісу або проста праз пашкоджаныя файлы.

# 7. Пераменныя асяроддзя

mkvextract(1) выкарыстоўвае стандартныя пераменныя, якія вызначаюць сістэмную мову (напрыклад: LANG і сямейства LC_*). Дадатковыя пераменныя:

Option | Description
--- | ---
MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG і яго кароткая форма MTX_DEBUG | Змесціва апрацоўваецца так, каб калі б яно было перададзенае праз параметр --debug.
MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE і яго кароткая форма MTX_ENGAGE | Змесціва апрацоўваецца так, каб калі б яно было перададзенае праз параметр --engage.

# 8. Глядзіце таксама

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

# 9. Хатняя старонка

Апошняя версія праграмы заўсёды даступная на хатняй старонцы MKVToolNix.