mkvmerge -- Інструмент зліцця мультымедыйных патокаў у файл Matroska(tm)

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

mkvmerge глабальныя параметры {-o выхад} параметры1 {файл1} параметры2 {файл2} @файл-параметраў.json

# 2. Апісанне

Гэтая праграма прымае ўваходныя даныя з некалькіх медыяфайлаў і злучае іх патокі (усе або толькі выбраныя) у файл Matroska(tm); глядзіце сайт Matroska.

Important:

Парадак параметраў у камандным радку вельмі важны. Прачытайце секцыю «Парадак параметраў», калі вы незнаёмыя з праграмай.

## 2.1. Глабальныя параметры

Option | Description
--- | ---
-v, --verbose | Павялічыць дэталізацыю.
-q, --quiet | Схаваць вывад стану.
-o, --output імя-файла | Запісаць у файл імя-файла. Калі выкарыстоўваецца разбіццё, то гэты параметр трактуецца трохі інакш. Глядзіце апісанне параметра --split для падрабязнасцяў.
-w, --webm | Стварыць файл, сумяшчальны з WebM. Гэта таксама ўключана, калі пашырэнне імя выхаднога файла — webm. У гэтым рэжыме ёсць некалькі абмежаванняў. Дазволеныя толькі кадзіроўшчыкі VP8, відэа VP9 і аўдыятрэкі Opus, Vorbis. Элемент загалоўка DocType зменены на webm.

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

--title загаловок | Задае асноўны загаловак для выхаднога файла, напрыклад, імя фільма.
--default-language код-мовы | Задае код мовы па змаўчанні, які будзе выкарыстоўвацца для трэкаў, у якіх не зададзеная мова з параметрам --language і ў якіх зыходны кантэйнер не дае мовы. Стандартны код для «нявызначанай» мовы — und.

## 2.2. Апрацоўка звестак аб сегментах (глабальныя параметры)

Option | Description
--- | ---
--segmentinfo імя-файла.xml | Прачытаць звесткі аб сегменце з файла XML. Гэты фалй можа змяшчаць UID сямейства сегментаў, UID сегмента, элементы UID папярэдняга і наступнага сегмента. Прыклад файла і DTD уключаныя ў дыстрыбутыў MKVToolNix. Глядзіце секцыю XML-файлы звестак аб сегментах ніжэй для падрабязнасцяў.
--segment-uid SID1,SID2,... | Задае UID скарыстаных сегментаў. Гэты падзяляльны коскамі спіс 128-бітных сегментных UID ў звычайнай форме запісу UID: шаснаццатковы лік з прэфіксам "0x" або без, з прабеламі або без, даўжынёй роўна ў 32 сімвалы. Калі SID пачынаецца з =, то астатняе будзе распазнана як імя файла Matroska, чый сегмент UID злічваецца і выкарыстоўваецца.

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

## 2.3. Праца з раздзеламі і тэгамі (глабальныя параметры)

Option | Description
--- | ---
--chapter-language код-мовы | Задае код мовы ў фармаце ISO 639-2, які запісваецца для кожнага запісу раздзела. Па змаўчанні выкарыстозваецца 'eng'. Падрабязнасці ніжэй ў секцыі раздзелы. Гэты параметр можа выкарыстоўвацца як для простых файлаў раздзелаў, так і для зыходных файлаў, якія ўтрымліваюць раздзелы без звестак аб іх мове, напр. файлы MP4 і OGM.

Мова, зададзеная ў гэтым параметры, таксама выкарыстоўваецца пры генерацыі раздзелаў празпараметра --generate-chapters.

--chapter-charset кадзіроўка | Задае набор сімвалаў, які выкарыстоўваецца для канвертацыі ў UTF-8 для простых файлаў раздзелаў. Глядзіце секцыю аб тэкставых файлах і наборах сімвалаў, каб даведацца, як mkvmerge(1) канвертуе наборы сімвалаў. Гэты пераключальнік таксама ўжываецца да раздзелаў, скапіяваных з пэўных тыпаў кантэйнераў, напрыклад, файлаў Ogg/OGM і MP4. Дадатковыя звесткі глядзіце ніжэй ў секцыі аб раздзелах.
--chapter-sync d[,o[/p]] | Адрэгуляваць меткі часу раздзелаў у наступным зыходным файле на d мс. У якасці альтэрнатывы вы можаце выкарыстаць параметр --sync са спецыяльным ідэнтыфікатарам трэка -2 (глядзіце секцыю «Спецыяльныя ідэнтыфікатары трэкаў»). o/p: папраўка метак часу праз o/p, каб выправіць лінейныя змяшчэнні. Па змаўчанні ў выпадку пропуску p роўна 1. І o і p могуць быць лікамі з плаваючай коскай.

Па змаўчанні: ручная карэкцыя сінхранізацыя адключаная (што раўнацэнна d = 0 і o/p = 1.0).

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

--generate-chapters рэжым | mkvmerge(1) можа аўтаматычна ствараць раздзелы. На дадзены момант падтрымліваюцца наступныя два рэжымы:

- 'when-appending' – Гэты рэжым стварае адзін раздзел, адпаведны пачатку кожнага дададзенага файла.

  Гэты рэжым таксама працуе з рэжымамі падзелу «частак:» і «частак-кадраў:». Для гэтых рэжымаў ствараецца адзін раздзел для кожнага дададзенага дыяпазону часавых метак (тых, чыі пачатковыя меткі часу маюць прэфікс «+»).

  Note:

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

- 'interval:time-spec' — гэты рэжым стварае адзін раздзел з фіксаванымі інтэрваламі па дадзеных з time-spec. Фармат у форме HH: MM: SS.nnnnnnnnn або лік, за кім ідзе адна з адзінак 's', 'ms' или 'us7'.

  Прыклад: --generate-chapters interval:45s

Імі новых раздзелаў кіруюцца параметрам --generate-chapters-name-template. Мова задаецца праз --chapter-language, якая павінна быць зададзеная перад --generate-chapters.

--generate-chapters-name-template шаблон | Задае шаблон імя для імяў загалоўкаў, якія ствараюцца параметрам --generate-chapters. Калі параметр не зададзены, то па змаўчанні выкарыстоўваецца "Chapter <NUM:2>". Існуе некалькі пераменных, якія можна выкарыстоўваць у шаблоне, і якія замяняюцца іх фактычнымі значэннямі падчас стварэння раздзела. Радок «<NUM>» будзе заменены нумарам раздзела. Радок «<START>» будзе заменены меткай часу пачатка раздзела.

Радкі «<FILE_NAME>» і «<FILE_NAME_WITH_EXT>» запаўняюцца толькі пры стварэнні раздзелаў для дадавальны файлаў. Яны будуць замененыя імем дадавальнага файла без задання адпаведнага ягонага пашырэння. Звярніце ўвагу, што ўстаўляюцца толькі базавае імя і пашырэнне файла, а не ягоны каталог ці кампаненты дыска.

Вы можаце задаць мінімальную колькасць месцаў для нумара раздзела праз «<NUM:places>'», напрыклад, «<NUM:3>». Атрыманая колькасць будзе дапоўненая вядучымі нулямі, калі колькасць месцаў менш за зададзеную.

Вы можаце кіраваць фарматам, які выкарыстоўваецца пачатковай меткай часу праз <START:format>. Калі фармат не зададзены, то па змаўчанні выкарыстоўваецца '%H:%M:%S'. Дапушчальнымі кодамі фармата з'яўляюцца:

- %h – гадзіны

- %H – гадзіны, дапоўненыя нулямі да дзвюх пазіцый

- %m – хвіліны

- %M – хвіліны, дапоўненыя нулямі да дзвюх пазіцый

- %s – секунды

- %S – секунды, дапоўненыя нулямі да дзвюх пазіцый

- %n – нанасекунды з дзевяццю пазіцыямі

- %<1-9>n – нанасекунды з указаннем да дзевяці пазіцый (напрыклад, з трыма пазіцыямі %3n)

--Сue-chapter-name-format фармат | mkvmerge(1) падтрымлівае чытанне спісаў CUE для аўдыяфайлаў у якасці ўваходных даных для раздзелаў. Спісы CUE звычайна ўтрымліваюць запісы PERFORMER і TITLE для кожнага запісу індэкса. mkvmerge(1) выкарыстоўвае гэтыя два радкі для стварэння імя раздзела. З дапамогай гэтага параметр можна задаць фармат, які выкарыстоўваецца для гэтага імя.

Калі гэты параметр не зададзены, то mkvmerge(1) па змаўчанні выкарысоўвае фармат "%p - %t" (выканаўца, за якім ідзе прабел, працяжнік, яшчэ адзін прабел і загаловак).

Калі фармат зададзены, то ўсё, выключаючы метасімвалы, капіюецца як ёсць, а самі метасімвалы падмяняюццца наступным чынам:

- %p падменены бягучым значэннем радка PERFORMER,

- %t падменены бягучым значэннем радка TITLE,

- %n падменены нумарам бягучага трэка і

- %N падменены нумарам бягучага трэка з даданнем пачатковага нуля, калі гэта < 10.

--chapters імя-файла | Счытвае звесткі аб раздзеле з файла імя-файла. Падрабязнасці глядзіце ў секцыі аб раздзелах ніжэй.
--global-tags імя-файла | Счытвае глабальныя тэгі з файла імя-файла. Падрабязнасці глядзіце ў секцыі аб тэгах ніжэй.

## 2.4. Асноўныя налады вываду (пашыраныя глабальныя параметры)

Option | Description
--- | ---
--track-order FID1:TID1,FID2:TID2,... | Гэты параметр мяняе парадак, у якім ствараюцца трэкі для ўваходнага файла. Аргументам з'яўляецца спіс пар ідэнтыфікатараў падзеленых коскамі. Кожная пара першапачаткова ўтрымлівае ідэнтыфікатар файла (FID1), які з'яўляецца проста нумарам файла ў камандным радку, пачынаючы з 0. Другім з'яўляецца ідэнтыфікатар трэка (TID1) з гэтага файла. Калі некатрыя ідэнтыфікатары трэкаў прапушчаныя, гэтыя трэкі ствараюцца пасля таго, як былі створаныя трэкі, зададзеныя гэтым параметрам.

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

--cluster-length уласцівасць | Абмяжоўвае лік блокаў даных або даўжыню даных у кожным кластары. Параметр spec можа быць лікам n без адзінак або лікам d з постфіксам «ms». Калі значэнне не зададзена, то mkvmerge(1) памесціць у кожны кластар не больш за n блокаў даных. Максімальная колькасць блокаў — 65535.

Калі лік d мае постфікс «ms», тады mkvmerge(1) размяшчае максімум d мілісекунд даных у кожны кластар. Дыяпазон для d — ад «100 мс» да «32000 мс».

Па змаўчанні mkvmerge(1) размяшчае не больш за 65535 блокаў і 5000 мс даных у кластар.

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

--clusters-in-meta-seek | Задае mkvmerge(1) стварыць метаэлемент пошуку ў канцы файла, які ўтрымлівае ўсе кластары. Глядзіце таксама секцыю аб кампаноўцы файла Matroska.
--timestamp-scale фактар | Прымусовае ўжыванне фактара да маштабаванне метак часу. Дапушчальныя значэнні ў інтэрвале 1000..10000000 або спецыяльнае значэнне -1. Звычайна mkvmerge(1) выкарыстоўвае значэнне 1000000, што азначае, што меткі часу і даўжыня маюць дакладнасць 1 мс. Для файлаў, якія не ўтрымліваюць у сабе відэатрэк, але маюць прынамсі адзін аўдыятрэк mkvmerge(1) аўтаматычна выбярэ каэфіцэнт маштабу меткі часу, каб усе меткі часу і даўжыні мелі дакладнасць да аднаго аўдыяўзору. Гэта цягне за сабой вялікія накладныя выдаткі, але забяспечвае дакладны пошук і выманне.

Калі выкарыстоўваецца спецыяльнае значэнне -1, то mkvmerge(1) будзе выкарыстоўваць дакладнасць да аднаго ўзору нават калі відэатрэк адсутнічае.

--enable-durations | Запісаць даўжыню ўсіх блокаў. Гэта павялічыць памер файла, і на дадзены момант не дае ніякіх дадатковых пераваг для прайгравальнікаў.
--no-Сues | Задае mkvmerge(1) не ствараць і запісваць даныя Сue, якія могуць быць супастаўленыя з індэксам у AVI. Файлы Matroska(tm) можна прайграваць без даных Сue, але пошук, імаверна, будзе недакладным і павольным. Выкарыстоўвайце гэта толькі калі вам сапраўды вельмі трэба месца або ў мэтах тэсціравання. Глядзіце таксама параметр --сues, які можна задаць для кожнага ўваходнага файла.
--no-date | Па змаўчанні mkvmerge(1) задае ў полі звестак аб сегменце «дата» час і дату пачатка зліцця. З гэтым праметрам гэтае поле наогул не запісваецца.
--disable-lacing | Адключае сшыванне на ўсіх трэках. Гэта павялічыць памер файла, асабліва калі ў ім шмат аўдыятрэкаў. Гэты параметр не для штодзённага выкарыстання.
--disable-track-statistics-tags | Звычайна mkvmerge(1) запісвае пэўныя тэгі са статыстыкай для кожнага трэка. Калі такія тэгі ўжо ёсць, яны будуць перазапісаныя. Тэгі: BPS, DURATION, NUMBER_OF_BYTES і NUMBER_OF_FRAMES. Уключэнне гэтага параметра забараняе mkvmerge(1) запісваць гэтыя тэгі і перазапісваць існуючыя тэгі з такімі ж імямі.
--disable-language-ietf | Звычайна mkvmerge(1) запісвае новыя моўныя элементы IETF BCP 47 у дадатак да састарэлых моўных элементаў у загалоўках, раздзелах і тэгах трэкаў. Калі выкарыстоўваецца гэты параметр, запісваюцца толькі састарэлыя элементы.
--normalize-language-ietf рэжым | Дазваляе нармалізаваць усе моўныя тэгі IETF BCP 47 да іхняй кананічнай формы з рэжымам canonical, да іхняй формы пашыраных моўных падтэгаў праз рэжым extlang або адключае яго ў рэжыме off. Па змаўчанні ўжываецца нармалізацыя да кананічнай формы.

У кананічнай форме ўсе падтэгі, для якіх існуюць пераважныя значэнні, замяняюцца гэтымі пераважнымі значэннямі. Гэта канвертуе, напрыклад, zh-yue-jyutping у yue-jyutping або fr-FX у fr-FR.

Для формы пашыраных моўных падтэгаў першапачаткова будуецца кананічная форма. Пасля гэтага ўсе асноўныя мовы, для якіх існуе пашыраны моўны падтэг, замяняюцца гэтым пашыраным моўным падтэгам і ягоным прэфіксам. Гэта канвертуе, напрыклад, yue-jyutping назад да zh-yue-jyutping, але не ўплывае на fr-FR, таму што fr не з'яўляецца пашыраным моўным падтэгам.

--stop-after-video-ends | Перапыняе апрацоўку па заканчэнні асноўнага відэатрэка, адкідаючы ўсе астатнія пакеты іншых трэкаў.

## 2.5. Разбіццё, звязванне, злучэнне і склейванне файлаў (іншыя глабальныя параметры)

Option | Description
--- | ---
--split спецыфікацыя | Разразае выхадны файл па дасягненні зададзенага памеру або зададзенага часу. Звярніце ўвагу, што трэкі могуць быць падзеленыя толькі непасрэдна перад ключавым кадрам. Таму пункт падзелу можа крыху не супадаць з тым, што задаў карыстальнік. На дадзены момант mkvmerge(1) падтрымлівае наступныя рэжымы:

1. Разбіццё па памеры.

   Сінтаксіс: --split [size:]d[k|m|g]

   Прыклады: --split size:700m або --split 150000000

   Параметр d можа заканчвацца на «k» «m» или «g», каб паказаць, што памер у КБ, МБ або ГБ адпаведна. У іншым выпадку дапускаецца памер у байтах. Пасля таго, як бягучы зыходны файл дасягне гэтага абмежаванне памера, будзе створаны новы.

   Прэфікс 'size:' можа быць апушчаны з меркаванняў сумяшчальнасці.

2. Разбіццё па прашэсці часу.

   Сінтаксіс: --split [duration:]HH:MM:SS.nnnnnnnnn|ds

   Прыклады: --split duration:00:60:00.000 або --split 3600s

   Параметр павінен мець форму HH:MM:SS.nnnnnnnnn для вызначэння даўжыні з дакладнасцю да нансекунды або быць лікам d, за якім ідзе літара «s» для даўжыні ў секундах. Параметр HH — гэта гадзіны, MM — хвіліны, SS — секунды, і nnnnnnnnn — нанасекунды. Як гадзіны, так і нанасекунды можна апусціць. Пасля коскі можа быць да дзевяці лічбаў. Пасля таго, як даўжыня змесціва бягучага вываду дасягне гэтай мяжы, будзе запушчаны новы зыходны файл.

   Прэфікс 'duration:' можа быць апушчаны з меркаванняў сумяшчальнасці.

3. Разбіццё пасля зададзенай меткі часу.

   Сінтаксіс: --split timestamps:A[,B[,C...]]

   Прыклад: --split timestamps:00:45:00.000,01:20:00.250,6300s

   Параметры A, B, C ды г. д. павінны мець той жа фармат, што і тыя, якія выкарыстоўваюцца для працягласці (гл. вышэй). Спіс метак часу падзяляецца коскамі. Пасля таго, як уваходны паток дасягнуў меткі часу бягучага пункту падзелу, ствараецца новы файл. Затым выкарыстоўваецца наступны пункт падзелу, зададзены ў гэтым спісе.

   Прэфікс 'timestamps:' не можа быць апушчаны.

4. Захоўвае асобныя часткі, зададзеныя ў дыяпазоне метак часу, і адкідае астатнія.

   Сінтаксіс: --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]

   Прыклады:

   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-

   Рэжым parts задае mkvmerge(1) захоўваць пэўныя дыяпазоны метак часу і адкідаць іншыя. Дыяпазоны, якія неабзодна захаваць, павінны быць пералічаныя пасля ключавога слова parts: і падзеленыя коскамі. Сам дыяпазон складаецца з меткі часу пачатка і канца ў фармаце аднолькавага выгляду, які прымаецца ў розных варыянтах --split (напрыклад, 00:01:20 і 80s спасылаюцца на тую ж метку часу).

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

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

   Звычайна кожны дыяпазон запісваецца ў новы файл. Гэта можна змяніць так, каб паслядоўныя дыяпазоны запісваліся ў адзін файл. Для гэтага карыстальнік павінен паставіць перад меткай часу пачатка сімвал +. Гэта задае mkvmerge(1) не ствараць новы файл, а замест гэтага дадаць дыяпазон у той жа файл, у які быў запісаны папярэдні дыяпазон. Меткі часу будуць наладжаныя такім чынам, каб ва ўваходным файле не было прабелаў, нават калі ва ўваходным файле быў прабел у двух дыяпазонах.

   У прыкладзе 1 mkvmerge(1) створыць два файлы. Першы будзе змяшчаць даныя з 00:01:20 па 00:02:45. Другі файл будзе змяшчаць даныя з 00:05:50 па 00:10:30.

   У прыкладзе mkvmerge(1) створыць адзіны файл. Ён будзе змяшчаць даныя як з 00:01:20 па 00:02:45, так і з 00:05:50 па 00:10:30.

   У прыкладзе mkvmerge(1) створыць два файлы. Першы будзе змяшчаць даныя ад пачатку зыходнага файла па 00:02:45. Другі файл будзе змяшчаць даныя з 00:05:50 і да канца зыходнага файла.

   Note:

   Звярніце ўвагу, што mkvmerge(1) выконвае падзел толькі па пазіцыях ключавых кадраў. Гэта датычна як да пачатка, так і да канца кожнага дыяпазону. Таму, нават калі метка часу канца знаходзіцца між двума ключавымі кадрамі, mkvmerge(1) працягне вывад кадраў да наступнага ключавога кадра, але не ўключаючы яго.

5. Захоўвае асобныя часткі, зададзеныя ў дыяпазоне нумароў кадраў/палёў, і адкідае астатнія.

   Сінтаксіс: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]

   Прыклады:

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

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

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

   Рэжым parts-frames задае mkvmerge(1) захаваць пэўныя дыяпазоны нумароў кадраў/палёў, адкідаючы іншыя. Дыяпазоны для захавання павінны быць пералічаныя пасля ключавога слова parts-frames: і падзеленыя коскамі. Сам дыяпазон складаецца з пачатковага і канечнага нумара кадра/поля. Нумарацыя пачынаецца з 1.

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

   Калі канечны лік не зададзены, то па змаўчанні ён задае на канец файа, так што mkvmerge(1) проста захавае астатнія (гл. прыклад 3).

   Звычайна кожны дыяпазон запісваецца ў новы файл. Гэта можна змяніць так, каб паслядоўныя дыяпазоны запісваліся ў адзін файл. Для гэтага карыстальнік павінен паставіць перад нумарам пачатка сімвал +. Гэта задае mkvmerge(1) не ствараць новы файл, а замест гэтага дадаць дыяпазон у той жа файл, у які быў запісаны папярэдні дыяпазон. Меткі часу будуць наладжаныя такім чынам, каб ва ўваходным файле не было прабелаў, нават калі ва ўваходным файле быў прабел у двух дыяпазонах.

   Note:

   Звярніце ўвагу, што mkvmerge(1) выконвае падзел толькі па пазіцыях ключавых кадраў. Гэта датычна як да пачатка, так і да канца кожнага дыяпазону. Таму, нават калі канечны кадр/нумар поля знаходзіцца між двума ключавымі кадрамі, mkvmerge(1) працягне вывад кадраў ажно да наступнага ключавога кадра, выключаючы яго.

   У прыкладзе 1 mkvmerge(1) створыць два файлы. Першы будзе ўключаць змесціва, пачынаючы з першага ключавога кадра 137, але выключаючы першы ключавы кадр з або пасля 258. Другі файл будзе ўключаць змесціва ад 548 да 1211.

   У прыкладзе 2 mkvmerge(1) створыць толькі адзін файл. Гэты файл будзе ўключаць змесціва, пачынаючы з 733 да 912, і змесціва, пачынаючы з 1592 да 2730.

   У прыкладзе 3 mkvmerge(1) створыць два файлы. Першы будзе змяшчаць даныя ад пачатку зыходнага файла па 430. Другі файл будзе змяшчаць даныя з 2512 і да канца зыходнага файла.

   Гэты рэжым бярэ для вываду толькі першы відэатрэк. Калі вывад не з'яўляецца відэатрэкам, разбіццё праведзена не будзе.

   Note:

   Нумары, зададзеныя з гэтым аргументам, інтэрпрэтуюцца на аснове ліку выводных блокаў Matroska(tm). Адзіны блок Matroska(tm) змяшчае або поўны кадр (для прагрэсіўнага змесціва) або адно поле (для змесціва з чаргаваннем). mkvmerge не адрознівае іх і проста падлічвае колькасць блокаў. Напрыклад: калі вы хочаце падзяліць пасля 25-га поўнага кадра з чаргавальным змесцівам, вам прыйдзецца ў якасці пункту падзелу задаць 50 (два палі на поўны кадр).

6. Разбіццё пасля зададзенага кадра/поля.

   Сінтаксіс: --split frames:A[,B[,C...]]

   Прыклад: --split frames:120,237,891

   Усе параметры A, B, C і далей павінны быць цэлымі дадатнымі лікамі. Нумарацыя пачынаецца з 1. Спіс нумароў кадраў/палёў падзяляецца коскамі. Пасля таго, як уваходны паток дасягнуў нумара кадра/поля бягучага пункту падзелу, ствараецца новы файл. Затым выкарыстоўваецца наступны пункт падзелу, зададзены ў гэтым спісе.

   Прэфікс 'frames:' не можа быць апушчаны.

   Гэты рэжым бярэ для вываду толькі першы відэатрэк. Калі вывад не з'яўляецца відэатрэкам, разбіццё праведзена не будзе.

   Note:

   Нумары, зададзеныя з гэтым аргументам, інтэрпрэтуюцца на аснове ліку выводных блокаў Matroska(tm). Адзіны блок Matroska(tm) змяшчае або поўны кадр (для прагрэсіўнага змесціва) або адно поле (для змесціва з чаргаваннем). mkvmerge не адрознівае іх і проста падлічвае колькасць блокаў. Напрыклад: калі вы хочаце падзяліць пасля 25-га поўнага кадра з чаргавальным змесцівам, вам прыйдзецца ў якасці пункту падзелу задаць 50 (два палі на поўны кадр).

7. Разбіццё перад зададзеным раздзелам.

   Сінтаксіс: --split chapters:all or --split chapters:A[,B[,C...]]

   Прыклад: --split chapters:5,8

   Усе параметры A, B, C ды г.д. павінны быць цэлымі дадатнымі лікамі. Нумарацыя пачынаецца з 1. Спіс нумароў раздзелаў падзяляецца коскамі. Падзел адбудзецца непасрэдна перад першым ключавым кадрам, метка часу якога роўная ябо большая за пачатковую метку часу для раздзелаў, нумары якіх зададзеныя. Раздзел, які пачынаецца з 0s, ніколі не разглядаецца для падзялення і адкідаецца без змен.

   Замест задання нумароў усіх раздзелаў, дастаткова выкарыстаць ключавое слова all.

   Прэфікс 'chapters:' не можа быць апушчаны.

   Note:

   Фармат файла Matroska(tm) падтрымлівае адвольныя глыбока ўкладзеныя структуры раздзелаў, якія называюцца «запісамі выдання» і «атамамі раздзелаў». Аднак гэты рэжым улічвае толькі самы высокі ўзровень раздзелаў ва ўсіх запісах выдання.

Для гэтага рэжыма падзелу імя зыходнага файла апрацоўваецца інакш, чым для звычайнай аперацыі. Ён можа змяшчаць printf, выразы накшталт «%d», уключаючы абавязковую шырыню поля, напр. «%02d». Калі гэта так, то нумар бягучага файла будзе адфармаціраваны адпаведынм чынам і ўстаўлены ў гэтае месца імя файла. Калі такога шаблона няма, то перад пашырэннем файла прадугледжваецца шаблон «-%03d»: «-o output.mkv» прывядзе да «output-001.mkv»' ды г. д. Калі пашырэння няма, да імя будзе дададзена «-%03d».

Іншым магчымым шаблонам з'яўляецца «%c», які будзе заменены назвай першага раздзела ў файле. Звярніцеў ўвагу, што калі прысутнічае «%c», шаблон «-%03d» не будзе дададзены аўтаматычна.

--link | Звязваць файлы адно з адным пры падзеле выхаднога файла. Падрабязнасці глядзіце ў секцыі аб звязванні файлаў ніжэй.
--link-to-previous segment-UID | Звязвае першы зыходны файл з сегментам з UID сегмента, зададзеным параметрам segment-UID. Падрабязнасці глядзіце ў секцыі аб звязванні файла ніжэй. Калі SID пачынаецца з =, то астатняе будзе распазнана як імя файла Matroska, чый сегмент UID злічваецца і выкарыстоўваецца.
--link-to-next segment-UID | Звязвае апошні зыходны файл з сегментам з UID сегмента, зададзеным параметрам segment-UID. Падрабязнасці глядзіце ў секцыі аб звязванні файла ніжэй. Калі SID пачынаецца з =, то астатняе будзе распазнана як імя файла Matroska, чый сегмент UID злічваецца і выкарыстоўваецца.
--append-mode рэжым | Вызначае спосаб вылічэння метак часу пры далучэнні файлаў. Параметр mode мае два значэнні: па змаўчанні "file" і "track". Калі mkvmerge дадае трэк (цяпер называецца 'track2_1') з другога файла (які называецца 'file2') да трэка (які называецца 'track1_1') з першага файла (які называецца 'file1'), то ён павінен зрушваць усе меткі для 'track2_1' на пэўную велічыню. Для рэжыма 'file' гэтая сума з'яўляецца самай высокай меткай часу, якая сустракаецца ў file1', нават калі гэтая метка часу была з трэка, адрозным ад 'track1_1'. У рэжыме трэка зрух — гэта самая высокая метка часу 'track1_1'.

На жаль, mkvmerge не можа вызначыць, які рэжым надзейны для выкарыстання. Таму па змаўчанні ён працуе ў рэжыме 'file'. Рэжым 'file' звычайна лепш працуе для файлаў, якія былі створаныя незалежна адзін ад аднаго; напрыклад, пры даданін файлаў AVI або MP4. Рэжым 'track' можа працаваць лепш для крыніц, якія па сутнасці з'яўляюцца проста часткамі аднаго вялікага файла, напрыклад, для файлаў VOB і EVO.

Трэкі субцітраў заўжды апрацоўваюцца так, як клаі б рэжым file быў актыўны, нават калі ўклюаны рэжым track.

--append-to SFID1:STID1:DFID1:DTID1[,...] | Гэты параметр вызначае, да якога трэка будзе дададзены іншы трэк. Кожная спецыфікацыя змяшчае чатыры ідэнтыфікатары: ідэнтыфікатар файла, ідэнтыфікатар трэка, ідэнтыфікатар другога файла, ідэнтыфікатар другога трэка. Першая пара, «ідэнтыфікатар зыходнага файла» і «ідэнтыфікатар зыходнага трэка», вызначае трэк, які павінен быць дададзены. Другая пара, «ідэнтыфікатар файла назначэння» і «ідэнтыфікатар трэка назначэння», вызначае трэк, да якога дадаецца першыя.

Калі гэты параметр быў прапушчаны, выкарыстоўваецца стандартнае супастазленне Гэтае стандартнае супастаўленне дадае кожны трэк з бягучага файла да трэка з папярэдняга файла з тым жа ідэнтыфікатарам трэка. Гэта дазваляе лёгка дадаваць, калі фільм быў падзелены на дзве часткі і абодва файлы маюць аднолькавую колькасць трэкаў і ідэнтыфікатараў трэкаў праз каманду mkvmerge -o output.mkv part1.mkv +part2.mkv.

+ | Адзіночны «+» выклікае далучэнне наступнага файла, а не яго даданне. «+» таксама можна паставіць перад імем наступнага файла. Таму наступныя дзве каманды эквівалентныя:
    $ mkvmerge -o поўны.mkv файл1.mkv + файл2.mkv
    $ mkvmerge -o поўны.mkv файл1.mkv +файл2.mkv
[ файл1 файл2 ] | Калі некалькі імяў файлаў змяшчаюцца ў пары квадратных дужак, то другі і ўсе наступныя файлы будуць дададзеныя да перашага файла, названага ў дужках. Гэта альтэрнатыўны сінтаксіс выкарыстання «+» між двума імямі файлаў. Таму наступныя дзве каманды эквівалентныя:
    $ mkvmerge -o поўны.mkv файл1.mkv + файл2.mkv
    $ mkvmerge -o поўны.mkv '[' файл1.mkv файл2.mkv ']'
= | Для пэўных тыпаў файлаў (праграмныя патокі MPEG, то-бок файлы VOB) mkvmerge(1) звычайна шукае файлы ў тым жа каталогу, што і ўваходны файл, якія маюць тое ж базавае імя і адрозніваюцца толькі сваім бягучым нумарам (напрыклад, «VTS_01_1.VOB», «VTS_01_2.VOB», «VTS_01_3.VOB» ды г. д.) і апрацоўвае ўсе гэтыя файлы, як калі б яны былі аб'яднаныя ў адзін вялікі файл. Гэты параметр, то-бок проста «=», вымусіць mkvmerge не шукаць гэтыя дадатковыя файлы.

Таксама можна паставіць «=» перад наступным імем файла. Таму наступныя дзве каманды эквівалентныя:

    $ mkvmerge -o поўны.mkv = файл1.vob
    $ mkvmerge -o поўны.mkv =файл1.vob

( файл1 файл2 ) | Калі некалькі імяў файлаў знаходзіцца ў пары дужак, гэтыя файлы будуьц разглядацца так, нібыта яны аб'яднаныя ў адзін вялікі файл, які складаецца са змесціва кожнага з файлаў адзін за адным. Гэта можна выкарыстоўваць, напрыклад, для файлаў VOB, якія паступаюць з транспартных патокаў DVD або MPEG. Яго нельга выкарыстоўваць, калі кожны файл змяшчае ўласны набор загалоўкаў, што звычайна бывае з асобнымі файламі, такімі як AVI або MP4.

Увод імя файла ў дужкі таксама перашкаджае пошуку mkvmerge(1) дадатковых файлаў з такім жа базавым значэннем, як апісана ў параметры =. Таму гэтыя два камандныя радкі эквівалентныя:

    $ mkvmerge -o выхад.mkv = файл.mkv
    $ mkvmerge -o выхад.mkv '(' файл.mkv ')'

Варта адзначыць некалькі момантаў:

1. Пасля адкрыўной і перад закрыўной дужкай павінны быць прабелы.

2. Кожны параметр між дужкамі інтэрпрэтуецца як імя файла. Таму ўсе параметры, якія ўжываюцца да гэтага лагічнага файла, павінны быць пералічаныя перад адкрыўной дужкай.

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

## 2.6. Падтрымка далучэнняў (іншыя глабальныя параметры)

Option | Description
--- | ---
--attachment-description апісанне | Звычайнае тэкставае апісанне наступнага далучэння. Ужываецца да наступнага параметра --attach-file або --attach-file-once.
--attachment-mime-type тып MIME | Тып MIME наступнага далучэння. Ужываецца да наступнага параметра --attach-file або --attach-file-once. Спіс афіцыйна распазнавальных тыпаў MIME можна знайсці, напрыклад, на хатняй старонцы IANA. Тып MIMEз'яўляецца абавязковым для далучэння. Калі для далучэння не зададзены тып MIME, то ягоны тып будзе вызначаны аўтаматычна.
--attachment-name імя | Задае імя, якое будзе захавана ў зыходным файле для гэтага далучэння. Калі гэты параметр не зададзены, імя будзе атрымана з імя файла далучанага файла, зададзенага праз параметры --attach-file або --attach-file-once.
--attach-file імя-файла, --attach-file-once імя-файла | Стварае далучэнне ўнутры файла Matroska(tm). Перад выкарыстаннем гэтага параметра неабходна задаць тып MIME. Розніца між гэтымі дзвюма формамі заключаецца ў тым, што пры падзеле файлы, далучаныя праз --attach-file, далучаюцца да ўсіх зыходных файлаў, а файлы, далучаныя праз --attach-file-once, далучаюцца толькі да першага створанага файла. Калі падзел не выкарыстоўваецца, то абодва робяць адно і тое ж.

mkvextract(1) можа выкарыстоўвацца для вымання далучэнняў з файла Matroska(tm).

--enable-legacy-font-mime-types | Дазваляе выкарыстоўваць састарэлыя тыпы MIME для пэўных тыпаў далучэнняў шрыфтоў. Напрыклад, «application/x-truetype-font» будзе выкарыстоўвацца для шрыфтоў TrueType замест «fonts/ttf». Гэта ўплывае як на новыя далучэнні, калі іх тып MIME выяўлены аўтаматычна, так і на існуючыя далучэнні, чые захаваныя тыпы MIME будуць замененыя састарэлымі.

Закранаюцца тыпы MIME: «font/sfnt», «font/ttf» і «font/collection»; яны супастаўляюцца з «application/x-truetype-fonts» і «font/otf», які супастаўляецца з «application/vnd .ms-opentype».

## 2.7. Параметры, якія могуць быць выкарыстаныя для кожнага ўваходнага файла

Option | Description
--- | ---
-a, --audio-tracks [!]n,m,... | Капіяваць аўдыятрэкі n, m ды г. д. Нумары — гэта ідэнтыфікатары трэкаў, якія можна пазнаць праз пераключальнік --identify. Гэта не проста нумары трэкаў (гл. секцыю аб ідэнтыфікатарах трэкаў). Па змаўчанні: капіяваць усе аўдыятрэкі. Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.

Па змаўчанні: капіяваць любыя падобныя трэкі.

Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.

-d, --video-tracks [!]n,m,... | Капіяваць відэатрэкі n, m ды г. д. Нумары — гэта ідэнтыфікатары трэкаў, якія можна пазнаць праз пераключальнік --identify. Гэта не проста нумары трэкаў (гл. секцыю аб ідэнтыфікатарах трэкаў). Па змаўчанні: капіяваць усе відэатрэкі. Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.

Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.

-s, --subtitle-tracks [!]n,m,... | Капіяваць трэкі субцітраў n, m ды г. д. Нумары — гэта ідэнтыфікатары трэкаў, якія можна пазнаць праз пераключальнік --identify. Гэта не проста нумары трэкаў (гл. секцыю аб ідэнтыфікатарах трэкаў). Па змаўчанні: капіяваць усе трэкі субцітраў. Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.

Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.

-b, --button-tracks [!]n,m,... | Капіяваць трэкі кнопак n, m ды г. д. Нумары — гэта ідэнтыфікатары трэкаў, якія можна пазнаць праз пераключальнік --identify. Гэта не проста нумары трэкаў (гл. секцыю аб ідэнтыфікатарах трэкаў). Па змаўчанні: капіяваць усе трэкі кнопак. Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.

Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.

--track-tags [!]n,m,... | Капіяваць трэкі тэгаў n, m ды г. д. Нумары — гэта ідэнтыфікатары трэкаў, якія можна пазнаць праз пераключальнік --identify. Гэта не проста нумары трэкаў (гл. секцыю аб ідэнтыфікатарах трэкаў). Па змаўчанні: капіяваць усе трэкі тэгаў. Калі ідэнтыфікатары маюць прэфікс !, то значэнне разварочваецца: капіяваць усё акрамя ідэнтыфікатараў, пералічаных пасля !.
-m, --attachments [!]n[:all|first],m[:all|first],... | Копирует далучэнні с идентификаторами n, m і т. д. ко всем або только к первому выхадному файлу. За каждым идентификатором может следовать ':all' (что по умолчанию, если ничего не указано) або ':first'. Если разделение активно, то те далучэнні, чьи идентификаторы указаны с помощью ':all', копируются во все исходные файлы, а другие копируются только в первый выхадной файл. Если разделение не активно, оба варианта имеют одинаковый эффект.

Па змаўчанні капіюе ўсе далучэнні ва ўсе выхадныя файлы.

Калі ідэнтыфікатары маюць прэфікс !, то значэнне разварочваецца: капіяваць усё акрамя ідэнтыфікатараў, пералічаных пасля !.

-A, --no-audio | Не капіяваць любыя аўдыятрэкі з гэтага файла.
-D, --no-video | Не капіяваць любыя відэатрэкі з гэтага файла.
-S, --no-subtitles | Не капіяваць любыя трэкі субцітраў з гэтага файла.
-B, --no-buttons | Не капіяваць любыя трэкі кнопак з гэтага файла.
-T, --no-track-tags | Не капіяваць любыя трэкі тэгаў з гэтага файла.
--no-chapters | Не капіяваць раздзелы з гэтага файла.
-M, --no-attachments | Не капіяваць далучэнні з гэтага файла.
--no-global-tags | Не капіяваць глабальныя тэгі з гэтага файла.
--regenerate-track-uids | Калі гэты параметр ужыты для зыходнага файла Matroska, mkvmerge(1) будзе ствараць новыя выпадковыя ўнікальныя ідэнтыфікатары трэкаў замест захавання існуючых у файле. Існуючыя UID трэкаў у раздзелах і трэках, счытаных з таго ж файла, будуць нанава счытныя для новых створаных значэнняў.

Гэтыя паводзіны аўтаматычна ўключаюцца для файлаў Matroska, створаных праграмай MakeMKV. Прычына ў тым, што MakeMKV выкарыстоўвае паслядоўныя лікі (1, 2, 3…) у якасці UID замест стварэння выпадковых.

-y, --sync TID:d[,o[/p]] | Прыстасоўвае меткі часу трэка з ідэнтфікатарам TID на dмс. Ідэнтфікатары трэкаў з'яўляюцца тымі ж, як і тыя, якія задаюцца з --identify (гл. секцыю аб ідэнтфікатарах трэкаў). o/p: папраўка метак часу праз o/p, каб выправіць лінейныя змяшчэнні. Па змаўчанні ў выпадку пропуску p роўна 1. І o і p могуць быць лікамі з плаваючай коскай.

Па змаўчанні: ручная карэкцыя сінхранізацыя адключаная (што раўнацэнна d = 0 і o/p = 1.0).

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

--Сues TID:none|iframes|all | Элементы кіравання, ддя якіх запісы спісу Сue (індэкса) трэка, ствараюцца для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў). 'none' прадухіляе стварэнне запісаў спісу Сue. Для 'iframes' толькі блокі без спасылак назад або наперад (= I-кадры ў відэатрэках) памяшчаюцца ў спіс Сue. 'all' прымушае mkvmerge(1) ствараць запісы Сue для ўсіх блокаў, што робіць файл вельмі вялікім.

Па змаўчанні — «iframes» для відэатрэкаў і трэкаў субцітраў і «none» для аўдыятрэкаў. Глядзіце таксама параметр --no-сues, які перашкаджае стварэнню запісаў Сue, незалежна ад скарыстаных параметраў --Сues.

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

--default-track-flag TID[:bool] | Задае пазнаку «трэк па змаўчанні» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Пазнака будзе зададзеная, калі зыходны кантэйнер не задаў гэтыя звесткі, і карыстальнік не задаў іх праз гэты параметр.

Калі карыстальнік яўна не выбірае трэк падчас прайгравання, прайгравальнік павінен выбраць адзін з трэказ, для якіх зададзеная пазнака «трэк па змаўанні», улічваючы, напрыклад, такія перавагі карыстальніка, як мова.

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

--track-enabled-flag TID[:bool] | Задае пазнаку «трэк уключаны» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў) у зададзенае значэнне bool (0 або 1, па змаўчанні роўна 1, калі не зададзена). Трэкі ўключаныя па змаўчанні, калі для іх не зададзены параметр, і зыходны кантэйнер таксама не задае гэтую інфармацыю.

Для прайгравання варта разглядаць толькі трэкі, для якіх зададзеная пазнака «трэк уключаны».

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

--forced-display-flag TID[:bool] | Задае пазнаку «прымусовы паказ» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Выкарыстоўвайце яе для трэкаў, якія змяшчаюць экранны тэкст або дыялог на замежнай мове. Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--hearing-impaired-flag TID[:bool] | Задае пазнаку «парушэнне слыху» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Гэтая пазнака можа быць зададзеная, калі трэк падыходзіць для карыстальнікаў з парушэннямі слыху. Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--visual-impaired-flag TID[:bool] | Задае пазнаку «парушэнне зроку» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Гэтая пазнака можа быць зададзеная, калі трэк падыходзіць для карыстальнікаў з парушэннямі зроку. Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--text-descriptions-flag TID[:bool] | Задае пазнаку «тэкставыя апісанні» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Гэтая пазнака можа быць зададзеная, калі трэк змяшчае тэкставыя апісанні відэаматэрыялу, прыдатнага для прайгравання праз сістэму канвертацыі тэкста ў маўленне для карыстальнікаў з парушэннямі зроку.

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

--original-flag TID[:bool] | Задае пазнаку «зыходная мова» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Гэтая пазнака можа быць зададзеная калі трэк на мове арыгіналу змесціва (не з'яўляецца перакладам). Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--commentary-flag TID[:bool] | Задае пазнаку «каментарыі» для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў), калі неабавязковы аргумент bool роўны 1 або адсутнічае. Гэтая пазнака можа быць зададзеная, калі трэк змяшчае каментарыі. Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--track-name TID:імя | Задае імя для выбранага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў) роўным name.
--language TID:язык | Задае мову для дадзенага трэка (гл. секцыю аб ідэнтыфікатарах трэкаў). Дазволеныя як кожы моў ISO 639-2, так і коды краін ISO 639-1. Коды краін будуць аўтаматычна канвертаваныя ў коды моў. Усе мовы, уключаючы іх коды ISO 639-2, можна задаць праз параметр --list-languages.

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

-t, --tags TID:імя-файла | Чытае тэгі для трэка з нумарам TID з файла імя-файла. Падрабязнасці глядзіце ў секцыі аб тэгах ніжэй.
--aac-is-sbr TID[:0|1] | Паведамляе mkvmerge(1), што трэк з ідэнтыфікатарам TID — SBR AAC (таксама вядомы як HE-AAC або AAC+). Гэтыя параметр неабходныя, калі а) зыходны файл з'яўляецца файлам ААС (не файл Matroska(tm)) і б) файл AAC змяшчае даныя SBR AAC. Прычына гэтага пераключальніка ў тым, што тэхнічна немагчыма аўтаматычна ідэнтыфікаваць нармальныя даныя AAC з даных SBR AAC без дэкадзіравання поўнага кадра AAC. Паколькі існуе некалькі патэнтных праблем з дэкадзіроўшчыкамі AAC mkvmerge(1) ніколі не будзе змяшчаць дэкадзіравання. Таму для файлаў SBR AAC гэты пераключальнік з'яўляецца абавязковым. Атрыманы файл можа не прайгравацца належным чына або нават не прайгравацца наогул, калі пераключальнік быў прапушчаны.

Калі зыходным файлам з'яўляецца файл Matroska(tm), то CodecID павінна быць дастаткова для выяўлення SBR AAC. Аднак, калі CodecID няправільны, то гэты пераключальнік можна скарыстаць, каб выправіць яго.

Калі mkvmerge няправільна вызначае файл AAC у выглядзе SBR, то вы можаце дадаць ':0' да ідэнтыфікатара трэка.

--audio-emphasis TID:n|symbolic-name | Задае акцэнт для аўдыятрэка праз ідэнтыфікатар трэка TID. Рэжым можа быць або лікам n (пэўныя значэнні ад 0 да 16) або сімвальным імем. Усе дапушчальныя нумары і сімвальныя імі могуць быць пералічаныя праз параметр --list-audio-accession.
--reduce-to-core TID | Некаторыя аўдыякадзіроўшчыкі маюць ядро са стратамі і дадатковыя пашырэнні, якія рэалізуюць дэкадзіраванне без страт. Гэты параметр паведамляе mkvmerge(1) капіяваць толькі ядро, але не пашырэнне. Па змаўчанні mkvmerge(1) капіюе як ядро, так і пашырэнне.

У дадзены час гэты параметр уплывае толькі на трэкі DTS. Трэкі TrueHD, якія змяшчаюць убудаванае ядро AC-3, замест гэтага прадстаўленыя як два асобныя трэкі, для якіх карыстальнік можа выбраць, які трэк капіяваць. Для DTS такая схема не будзе працаваць, бо пашырэнні HD не могуць быць дэкадзіраваныя самі па сабе — у адрозненне ад даных TrueHD.

--remove-dialog-normalization-gain TID | Некаторыя аўдыякадзіроўшчыкі змяшчаюць палі загалоўка, якія задаюць дэкадзіроўшчыку або прайгравальніку ўжыць узмацненне для нармалізацыі дыялогу (звычайна адмоўнае). Гэты параметр паведамляе mkvmerge(1) выдаліць або мінімізаваць гэтае ўзмацненне (gain), змяніўшы адпаведнае поле загалоўка.

На дадзены момант гэты параметр уплывае толькі на трэкі AC-3, DTS і TrueHD.

--timestamps TID:імя-файла | Чытае меткі часу, якія будуць выкарыстоўвацца для пэўнага ідэнтыфікатара трэка з file-name. Гэтыя меткі часу прымусова замяняюць меткі часу, якія mkvmerge(1) разлічвае звычайна. Прачытайце секцыю аб знешніх файлах метак часу.
--default-duration TID:x | Прымусова задае даўжыню зададзенага трэка па змаўчанні да зададзенага значэння. Таксама змяняе меткі часу трэка, каб адпавядаць даўжыні па змаўчанні. Аргумент x павінен мець адзін з постфіксаў 's', 'ms', 'us', 'ns', 'fps', 'p' або 'i', каб задаць даўжыню па змаўчанні ў секундах, мілісекундах, мікрасекундах, нанасекундах, «кадрах у секунду», «прагрэсіўных кадрах у секунду» або «празрадковых кадрах у секунду» адпаведна. Лік x можа быць лікам з плаваючай коскай або дробам.

Калі даўжыня па змаўчанні не з'яздяецца прымусовай, mkvmerge паспрабуе атрымаць даўжыню трэка па змаўчанні з кантэйнера і/або закадзіраванага бітавага патоку для пэўных тыпаў трэкаў, напрыклад AVC/H.264 або MPEG-2.

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

--fix-bitstream-timing-information TID[:0|1] | Звычайна mkvmerge(1) не змяняе звесткі аб часе (хуткасць кадраў/палёў), якая захоўваецца ў бітавым патоку відэа. Праз гэты параметр гэтыя звесткі карэктуюцца ў адпаведнасці са звесткамі аб часе з кантэйнера. Звесткі аб часе з кантэйнера могуць паступаць з розных крыніц: з каманднага радка (гл. параметр --default-duration), зыходнага кантэйнера або вытворнага ад бітавага патоку.

Note:

Гэта было рэалізавана толькі для відэатрэкаў AVC/H.264.

--compression TID:n | Выбірае метад сціскання, які будзе выкарыстаны для трэка. Звярніце ўвагу, што прайгравальнік таксама павінен падтрымліваць гэты метад. Дапушчальныя значэнні: «none», «zlib» і «mpeg4_p2»/«mpeg4p2». Метад сціскання «mpeg4_p2»/«mpeg4p2» з'яўляецца спецыяльным метадам сціскання, які называецца «выдаленне загалоўка» і даступны толькі для відэатрэкаў MPEG4 part 2.

Па змаўчанні для некаторых тыпаў субцітраў выкарыстоўваецца сцісканне «zlib». Гэты метад сціскання падтрымлівае большасць, калі не ўсе праграмы прайгравання. Падтрымка іншых метадаў сціскання, акрамя «none», не гарантуецца.

## 2.8. Параметры, якія ўжываюцца толькі для відэатрэкаў

Option | Description
--- | ---
-f, --fourcc TID:FourCC | Прымусова задае значэннне для FourCC. Працуе толькі для відэатрэкаў у рэжыме MS compatibility mode.
--display-dimensions TID:widthxheight | Файлы Matroska(tm) змяшчаюць два значэнні, якія задаюць уласцівасці паказу, да якіх прайгравальнік павінен маштабаваць выяву падчас прайгравання: шырыня і вышыня экрана. Гэтыя значэнні можна задаць праз гэты параметр, напр., «1:640x480». Іншым спосабам задання значэнняў з'яўляецца выкарыстанне параметра --aspect-ratio або --aspect-ratio-factor (гл. ніжэй). Гэтыя параметры з'яўляюцца ўзаемавыключальнымі.
--aspect-ratio TID:ratio|width/height | Файлы Matroska(tm) змяшчаюць два значэнні, якія задаюць уласцівасці паказу, да якіх прайгравальнік павінен маштабаваць выяву падчас прайгравання: шырыня і вышыня выявы. Праз гэты параметр mkvmerge(1) аўтаматычна вылічыць шырыню і вышыню выявы на аснове зыходнай шырыні і вышыні выявы і суадносіны бакоў, зададзеных праз гэты параметр. Каэфіцэнт можна задаць або ў выглядзе адносін лікаў з плаваючай коскай, або ў выглядзе дробу 'шырыня/вышыня', напрыклад '16/9'.

Іншым спосабам задаць значэнні з'яўляецца выкарыстанне параметраў --aspect-ratio-factor або --display-dimensions (гл. вышэй і ніжэй). Гэтыя параметры з'яўляюцца ўзаемавыключальнымі.

--aspect-ratio-factor TID:factor|n/d | Іншы спосаб задаць суадносіны бакоў — гэта задаць каэфіцэнт. Зыходныя суадносіны бакоў спачатку памнажаюцца на гэты каэфіцэнт, а затым выкарыстоўваюцца як суадносіны бакоў. Іншым спосабам задаць значэнні з'яўляецца выкарыстанне параметраў --aspect-ratio або --display-dimensions (гл. вышэй і ніжэй). Гэтыя параметры з'яўляюцца ўзаемавыключальнымі.
--cropping TID:злева,зверху,справа,знізу | Задае значэнні абрэзкі пікселяў для відэатрэка.
--color-matrix-coefficients TID:n | Задае матрычныя каэфіцэнты відэа, якія выкарыстоўваюцца для атрымання значэнняў яркасці і колернасці на аснове асноўных колераў чырвонага, зялёнага і сіняга. Параметр n з'яўляецца цэлым лікам ад 0 да 10. Дапушчальныя значэнні і іхняя расшыфроўка: 0: GBR, 1: BT709, 2: unspecified, 3: reserved, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 non-constant luminance, 10: BT2020 constant luminance
--color-bits-per-channel TID:n | Задае лік кадзіраваных бітоў для канала колеру. Значэнне 0 паказвае, што лік бітаў не зададзены.
--chroma-subsample TID:hori,vert | Колькасць пікселяў, прызначаных для выдалення ў каналах Cr і Cb для кожнага невыдаленага пікселя па гарызанталі/вертыкалі. Прыклад: Для відэа з колеравай субдыскрэтызацыяй 4:2:0 варта задаць параметр TID:1,1.
--cb-subsample TID:hori,vert | Колькасць пікселяў, прызначаных для выдалення ў канале Cb для кожнага невыдаленага пікселя па гарызанталі. Гэта дабаўка да --chroma-subsample. Прыклад: Для відэа з колеравай субдыскрэтызацыяй 4:2:1, параметр --chroma-subsample павінен быць зададзены да TID:1,0 і падвыбарка Cb павінна быць зададзеная да TID:1,0.
--chroma-siting TID:hori,vert | Задае тое, як колернасць размяшчаецца па гарызанталі/вертыкалі (0: не зададзена, 1: зверху сумешчана, 2: напалову).
--color-range TID:n | Задае адсячэнне дыяпазонаў колеру (0: нявызначана, 1: дыяпазон трансляцыі, 2: поўны дыяпазон (без адсячэння), 3: зададзены праз MatrixCoefficients/TransferCharacteristics).
--color-transfer-characteristics TID:n | Характарыстыкі перадачы відэа. Дапушчальныя значэнні і іхняя расшыфроўка: 0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: gamma 2.2 curve, 5: gamma 2.8 curve, 6: SMPTE 170M, 7: SMPTE 240M, 8: linear, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361 extended color gamut, 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 | Задае базавыя колеры відэа. Дапушчальныя значэнні і іхняя расшыфроўка: 0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 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: JEDEC P22 phosphors
--max-content-light TID:n | Задае максімальную яркасць аднаго пікселя (Maximum Content Light Level) у кандэлах на квадратны метр (кд/м²). Значэнне n павінна быць цэлым неадмоўным лікам.
--max-frame-light TID:n | Задае максімальную яркасць аднаго поўнага кадра (Maximum Frame-Average Light Level) у кандэлах на квадратны метр (кд/м²). Значэнне n павінна быць цэлым неадмоўным лікам.
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y | Задае каардынату колернасці чырвонага/зялёнага/сіняга колеру, як вызначана ў CIE 1931.
--white-color-coordinates TID:x,y | Задае каардынату колернасці белага колеру, як вызначана ў CIE 1931.
--max-luminance TID:float | Задае максімальную яркасць у кандэлах на квадратны метр (кд/м²). Значэнне павінна быць менш за 9999,99.
--min-luminance TID:float | Задае мінімальную яркасць у кандэлах на квадратны метр (кд/м²). Значэнне павінна быць менш за 999,9999.
--projection-type TID:method | Задае скарыстаны метард праекцыі відэа. Дапушчальныя значэнні: 0 (прамавугольная праекцыя), 1 (роўнавугольная праекцыя), 2 (праекцыя кубічнай карты) і 3 (праекцыя сеткі).
--projection-private TID:данные | Задае прыватныя дадзеныя, якія ўжываюцца толькі да пэўнай праекцыі. Дадзеныя павінны быць прадстаўленыя ў выглядзе шаснаццатковых лікаў з прэфіксам «0x» або без яго, з прабеламі або без іх.
--projection-pose-yaw TID:float | Вызначае параметры павароту праекцыі вакол перпендыкулярнай восі.
--projection-pose-pitch TID:float | Вызначае параметры павароту праекцыі вакол папярочнай восі.
--projection-pose-roll TID:float | Вызначае параметры павароту праекцыі вакол падоўжнай восі.
--field-order TID:n | Задае парадак палёў у трэку відэа з ідэнтыфікатарам TID. Парадак павінен быць зададзены адным з наступных нумароў: 0: прагрэсіўны; 1: празрадковы з паказам верхняга поля першым, першым захоўваецца верхняе поле; 2: нявызначаны парадак палёў; 6: празрадковы з паказам ніжняга поля першым, першым захоўваецца ніжняе поле; 9: празрадковы з паказам ніжняга поля першым, першым захоўваецца верхняе поле; 14: празрадковы з паказам верхняга поля першым, першым захоўваецца ніжняе поле
--stereo-mode TID:n|symbolic-name | Задае стэрэарэжым для відэатрэка з дапамогай ідэнтыфікатара трэка TID. Рэжым можа быць лікам n ад 0 да 14 або сімвальным імем. Усе дапушчальныя нумары і імі могуць быць пералічаныя праз параметр --list-stereo-modes.

## 2.9. Параметры, якія ўжываюцца толькі да тэкставых субцітраў

Option | Description
--- | ---
--sub-charset TID:кадзіроўка | Задае набор сімвалаў для канвертавання ў UTF-8 для субцітраў UTF-8 для зададзенага ідэнтыфікатара трэка. Калі не зададзена іншае, набор сімвалаў будзе атрыманы з бягучых налад мовы. Звярніце ўвагу, што набор сімвалаў не патрабуецца для чытання субцітраў з файлаў Matroska(tm) або з патокаў Kate, паколькі яны заўжды захоўваюцца ў UTF-8. Глядзіце секцыю аб тэкставых файлах і наборах сімвалаў, каб даведацца, як mkvmerge(1) канвертуе між наборамі сімвалаў.

Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.

## 2.10. Іншыя параметры

Option | Description
--- | ---
-i, --identify імя-файла | Дазволіць mkvmerge(1) праверыць адзін файл і паведаміць ягоны тып, трэкі, якія змяшчаюцца ў файле, і іхнія ідэнтыфікатары. Калі выкарыстоўваецца гэты параметр, то іншым адзіным дазволеным параметрам з'яўляецца імя файла. Фармат вываду выніка можа быць зменены параметрам --identification-format.
-J імя-файла | Гэта зручны псеўданім для «--identification-format json --identify імя-файла».
-F, --identification-format формат | Вызначае зыходны фармат, які выкарыстоўваецца параметрам --identify. Падтрымліваюцца наступныя фарматы: text (па змаўчанні, калі гэты параметр не выкарыстоўваецца) і json.

1. Тэкставы фармат выглядае кароткім і лёгкачытэльным для чалавека. Ён складаецца з аднаго радка для кожнага знойдзенага аб'екта (кантэйнера, трэка, далучэння ды г.д.).

   Гэты фармат не для аналізу. Выхадныя дадзеныя будуць перакладзеныя на мову, якая выкарыстоўваецца ў mkvmerge(1) (гл. таксама --ui-language).

2. Фармат вываду json з'яўляецца машыначытэльным прадстаўленнем JSON. Гэты фармат адпавядае схеме JSON, апісанай у наступным файле:

   mkvmerge-identification-output-schema-v18.json

   Усе версіі схемы JSON даступныя як анлайн, так і ў выпушчаных архівах зыходнага коду.

--probe-range-percentage адсотак | Тыпы файлаў, такія як праграмы і транспартныя патокі MPEG (.vob, .m2ts), патрабуюць разбору пэўнай колькасці дадзеных, каб выявіць усе трэкі, якія змяшчаюцца ў файле. Гэтая колькасць складае 0,3% ад памеру зыходнага файла або 10 МБ, у залежнасці ад таго, што больш.

Калі вядома, што трэкі прысутнічаюць, але не знойдзеныя, то адсотак для праверкі можна змяніць праз гэты параметр. Мінімальны памер 10 МБ з'яўляецца другасным і не можа быць зменены.

--list-audio-emphasis | Выводзіць спіс дапушчальных лікаў і іхніх адпавядальных сімвалічных імяў для параметра --audio-emphasis.
--list-languages | Пералічае ўсе мовы і іх коды ISO 639-2, якія можна выкарыстаць з параметрам --language.
--list-stereo-modes | Выводзіць спіс дапушчальных лікаў і іхніх адпавядальных сівалічных імяў для параметра --stereo-mode.
-l, --list-types | Спіс падтрымліваных тыпаў уваходных файлаў.
--priority прыярытэт | Задае прыярытэт, з якім выконваецца працэс mkvmerge(1). Дапушчальныя значэнні — 'lowest', 'lower', 'normal', 'higher' і 'highest'. Калі нічога не зададзена, выкарыстоўваецца 'normal'. У Unix-сістэмах mkvmerge(1) выкарыстоўвае функцыю nice(2). Таму толькі звышкарыстальнік можа выкарыстоўваць 'higher' і 'highest'. У Windows усе значээнні даступныя для выкарыстання любому карыстальніку.

Выбар найніжэйшага таксама прыводзіць да таго, што mkvmerge(1) выбірае прыярытэт халастога ўводу-вываду ў дапаўненне да найніжэйшага магчымага прыярытэту працэсу.

--command-line-charset кадзіроўка | Задае набор сімвалаў для канвертавання радкоў, зададзеных праз камандны радок. Па змаўчанні выкарыстоўваецца набор сімвалаў для сістэмнай лакальныя. Гэтыя параметры ўжываюцца да аргументаў наступных параметраў: --title, --track-name і --attachment-description.
--output-charset кадзіроўка | Задае кадзіроўку, у якой канвертуюцца выхадныя радкі. Па змаўчанні выкарыстоўваецца бягучая кадзіроўка сістэмнай мовы.
-r, --redirect-output імя-файла | Запісвае ўсе паведамленні ў файл file-name замест кансолі. Хаця гэта можна лёгка зрабіць праз перанакіраванне вываду, ёсць выпадкі, калі гэты параметр патрэбны: калі тэрмінал паўторна інтэрпрэтуе выхад перад запісам яго ў файл. Набор сімвалаў, зададзены з --output-charset, улічваецца.
--flush-on-close | Задае праграме скінуць усе даныя, закэшаваныя ў памяці, у сховішчы пры закрыцці файлаў, адкрытых для запісу. Гэта можа быць выкарыстана для прадухілення страты даных пры адключэнні сілкавання або для абыходу пэўных праблем у аперацыйнай сістэме або драйверах. Недахопам з'яўляецца тое, што зліццё зойме больш часу, бо mkvmerge прыйдзецца чакаць, пакуль усе даныя не будуць запісаныя ў сховішча перад выхадам. Гдядзіце праблемы #2469 і #2480 ў трэкеры памылак MKVToolNix, дзе падрабязна пракаментаваныя плючы і мінусы.
--ui-language код | Прымусова выкарыстоўваць пераклад на код мовы (напр., «de_DE» для нямецкай). Калі задаць «list» замест кода, то будзе выведзены спіс даступных перакладаў.
--abort-on-warnings | Задае mkvmerge перапыненне пасля з'яўлення першага папярэджання. Код завяршэння праграмы будзе 1.
--deterministic seed | Дазваляе ствараць файлы, ідэнтычныя да байта, калі тая ж версія mkvmerge(1) скарыстаная з тымі ж зыходнымі файламі, тым жа наборам параметраў і тым жа пачатковым элементам. Звярніце ўвагу, што інфармацыйнае поле сегмента «дата» не запісваецца ў гэтым рэжыме.

Зерне можа быць адвольным радком і не абавязкова павінна быць лікам.

Вынікам працы байт-ідэнтычных файлаў гарантуецца толькі пры наступных умовах:

1. Выкарыстоўваецца тая ж версія mkvmerge(1), сабраная з тымі ж версіямі libEBML і libMatroska.

2. Скарыстаныя зыходныя файлы байт-ідэнтычныя.

3. Тыя ж параметры каманднага радка выкарыстоўваюцца ў тым жа парадку (за выклчючэннем --output ...).

Выкарыстанне іншых версій mkvmerge(1) або іншых параметраў каманднага радка можа выдаць той жа файл, ідэнтычны да байта, але гэта не гарантуецца.

--debug тэматыка | Уключыць рэжым адладкі для зададзенай функцыі. Гэты параметр карысны толькі для распрацоўшчыкаў.
--engage функцыя | Уключае эксперыментальныя функцыі. Спіс даступных функцый можна запытаць з дапамогай mkvinfo --engage list. Гэтыя функцыі не прызначаныя для выкарыстання ў звычайных сітуацыях.
--gui-mode | Уключае рэжым графічнага інтэрфейса. У гэтым рэжыме могуць выводзіцца спецыяльна адфармаціраваныя радкі для адпраўкі кантрольных паведамленняў інтэрфейсу. Фармат паведмленняў — '#GUI#message'. За паведамленнем могуць быць зададзеныя пары ключа і значэння, напрыклад '#GUI#message#key1=value1#key2=value2…'. Паведамленні і ключы не перакладаюцца і заўжды выводзяцца на англійскай.
@файл-параметраў.json | Чытае дадатковыя аргументы каманднага радка з файла options-file. Падрабязнасці глядзіце ў секцыі файлаў параметраў.
--capabilities | Выводзіць звесткі аб дадатковых функцыях, якія былі скампіляваныя і выйшлі. У першым радку вываду будуць звесткі аб версіі. Усе наступны радкі змяшчаюць роўна адно слова, наяўнасць якога паказвае на тое, што функцыя скампіляваная. Гэтыя функцыі наступныя:

- FLAC» -- чытае неапрацаваныя файлы FLAC і працуе з трэкамі FLAC у іншых кантэйнерах, напрыклад Ogg(tm) або Matroska(tm).

-h, --help | Паказаць звесткі аб выкарыстанні і выйсці.
-V, --version | Паказаць звесткі аб версіі і выйсці.

# 3. Выкарыстанне

Для каждого файла пользователь может выбрать, какие дорожки mkvmerge(1) должен взять. Все они помещаются в файл, указанный с параметром -o. Список известных (и поддерживаемых) входных форматов можно получить с помощью параметра -l.

Important:

Парадак параметраў у камандным радку вельмі важны. Прачытайце секцыю «Парадак параметраў», калі вы незнаёмыя з праграмай.

# 4. Парадак параметраў

Парадак ўводу параметраў мае значэнне для некаторых параметраў. Варыянты дзеляцца на дзве катэгорыі:

1. Параметры, якія ўплываюць на ўсю праграму і не прывязаныя ні да аднаго ўваходнага файла. Яны ўключаюць, але не абмяжоўваюцца --command-line-charset, --output або --title. Яны могуць быць у любым месцы каманднага радка.

2. Параметры, якія ўплываюць на адзіночны ўваходны файл або на адзіночны трэк ва ўваходным файле. Усе гэтыя параметры ўжываюцца да наступнага ўваходнага файла ў камандным радку. Усе параметры, якія ўжываюцца да аднаго і таго ж уваходнага файла (або да трэкаў з аднаго і таго ж уваходнага файла), могуць быць запісаныя ў любым парадку, калі ўсе яны з'яўляюцца перад імем гэага ўваходнага файла. Прылкады ўжывання параметраў да ўваходнага файла: --no-chapters або --chapter-charset. Прыклады ўжываня параметраў да адзіночнага трэка: --default-duration або --language.

Параметры апрацоўваюцца злева направа. Калі параметр з'яўляецца некалькі разоў у межах адной вобласці, будзе скарыстана апошняе далучэнне. Таму загаловак будзе зададзены на «нешта іншае» ў наступным прыкладзе:

    $ mkvmerge -o выхад.mkv --title 'Такі' ўваход.avi --title 'Іншы'

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

    $ mkvmerge -o выхад.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg

# 5. Прыклады

Дапусцім, у васё сць файл MyMovie.avi і аўдыятрэк у асобным файле, напрыклад «MyMovie.wav». Спачатку вы хочаце закадзіраваць аўдыя ў OggVorbis(tm):

    $ oggenc -q4 -oМаё-відэа.ogg Маё-відэа.wav

Праз некалькі хвілін вы можаце аб'яднаць відэа і аўдыя:

    $ mkvmerge -o Маё-відэа-з-гукам.mkv Маё-відэа.avi Маё-відэа.ogg

Калі ваш AVI ўжо змяшчае аўдыятрэк, то ён таксама будзе скапіяваны (калі mkvmerge(1) падтрымлівае яе аўдыяфармат). Каб пазбегнуць гэтага, проста зрабіце наступнае

    $ mkvmerge -o Маё-відэа-з-гукам.mkv -A Маё-відэа.avi Маё-відэа.ogg

Пасля некалькіх хвілін роздумаў вы выбіраеце іншы аўдыятрэк, напрыклад, каментарыі або іншамоўны трэк да «MyMovie-add-audio.wav». Кадзіруеце яго яшчэ раз і аб'ядноўваеце з іншым файлам:

    $ oggenc -q4 -oМаё-відэа-з-даданнем-аўдыя.ogg Маё-відэа-з-даданнем-аўдыя.wav
    $ mkvmerge -o МВ-поўнае.mkv Маё-відэа-з-аўдыя.mkv Маё-відэа-з-даданнем-аўдыя.ogg

Такога ж выніку можна дабіцца праз

    $ mkvmerge -o МВ-поўнае.mkv -A Маё-відэа.avi Маё-відэа.ogg Маё-відэа-з-даданнем-аўдыя.ogg

Цяпер скарыстайце mplayer(tm) і атрымлівайце асалоду. Калі ў вас ёсць некалькі аўдыятрэкаў (або нават відэатрэкаў), вы можаце задаць mplayer(tm)'у які трэк прайграваць, выкарыстоўваючы параметры '-vid' і '-aid'. Яны заснаваныя на 0 і не адрозніваюць відэа і аўдыя.

Калі вам патрэбеая сінхранізацыя аўдыятрэка, вы можаце лёгка гэта зрабіць. Спачатку даведайцеся ідэнтыфікатар трэка Vorbis праз

    $ mkvmerge --identify рассінхрон.ogg

Цяпер вы можаце выкарыстоўваць гэты ідэнтыфікатар у наступным камандным радку:

    $ mkvmerge -o сінхронны.mkv -A крыніца.avi -y 12345:200 рассінхрон.ogg

Гэта дадасць 200 мс цішыні ў пачатку аўдыятрэка з ідэнтыфікатарам 12345, узятым з 'out of sync.ogg'.

Некаторыя фільмы пачынаюць сінхранізавацца правільна, але паступова губляюць сінхранізацыю. Для такіх фільмаў вы можаце задаць каэфіцэнт затрымкі, які будзе ўжывацца да ўсіх метак часу – дадзеныя не дадаюцца і не выдаляюцца. Таму, калі вы зробіце гэтыя суадносіны завялікімі або замаленькімі, вы атрымаеце дрэнныя вынікі. Напрыклад, эпізод мае рассінхранізацыю 0,2 секунды ў канцы фільма даўжынёй 77340 кадраў. Пры частаце кадраў 29,97 к/c 0,2 секунды складаюць прыкладна 6 кадраў. Таму я зрабіў

    $ mkvmerge -o сінхронны.mkv -y 23456:0,77346/77340 рассінхрон.mkv

Вынік быў файным.

Параметры сінхранізацыі могуць выкарыстоўвацца для субцітраў такім жа чынам.

Для тэкставых субцітраў можна выкарыстаць праграмнае забеспячэнне Windows (накшталт SubRipper(tm)) або пакет subrip(tm), які можна знайсці ў зыходных файлах transcode(1) у каталогу «contrib/subrip». Агульны працэс наступны:

1. выняць неапрацаваны паток субцітраў з зыходніка:

       $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o мойфільм

2. канвертаваць вынікоўныя выявы PGM ў тэкст праз gocr:

       $ pgm2txt маёвідэа

3. праверыць правапіс вынікоўных тэкставых файлаў:

       $ ispell -d american *txt

4. канвертаваць тэкставыя файлы ў файл SRT:

       $ srttool -s -w -i мойфільм.srtx -o мойфільм.srt

Выхадны файл можа быць выкарыстаны як уваходны для mkvmerge(1):

    $ mkvmerge -o мойфільм.mkv мойфільм.avi мойфільм.srt

Калі вы хочаце задаць мову для пэўнага трэка, гэта лёгка зрабіць. Спачатку даведайцеся код ISO 639-2 для вашай мовы. mkvmerge(1) можа пералічыць усе гэтыя коды для вас:

    $ mkvmerge --list-languages

Знайдзіце спіс патрэбных вам моў. Дапусцім, вы памясцілі два аўдыятрэкі ў файл Matroska(tm) і хочаце задаць коды сваіх моў, а таксама ідэнтыфікатары трэкаў 2 і 3. Гэта можна зрабіць праз

    $ mkvmerge -o з-кодамі-моў.mkv --language 2:ger --language 3:dut без-кодаў-моў.mkv

Як вы бачаце, пераключальнік --language можа быць выкарыстаны некалькі разоў.

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

    $ 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

Калі вы не бачаце мову або пазнаку трэка па змаўчанні, якія вы задалі ў вывадзе mkvinfo(1), прачытайце секцыю аб стандартных значэннях.

Выключыць сцісканне для зыходнага файла.

    $ mkvmerge -o без-сжатия.mkv --compression -1:none Мой-фільм.avi --compression -1:none мойфільм.srt

# 6. Ідэнтыфікатары трэкаў

## 6.1. Звычайныя ідэнтыфікатары трэкаў

Некаторыя параметры ў mkvmerge(1) патрабуюць ідэнтыфікатар трэка, каб вызначыць да якога трэка яны павінны быць ужыты. Гэтыя ідэнтыфікатары трэкаў друкуюцца счытвальнікамі пры разбіцці бягучага ўваходнага файла, або калі mkvmerge(1) выконваецца з параметрам --identify. Прыклад такога вываду:

    $ mkvmerge -i v.mkv
    Файл 'v.mkv': кантэйнер Matroska
    Ідэнтыфікатар трэка 0: video (V_MS/VFW/FOURCC, DIV3)
    Ідэнтыфікатар трэка 1: audio (A_MPEG/L3)

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

Таксама звярніце ўвагу, што кожны ўваходны файл мае свой уласны набор ідэнтыфікатараў трэкаў. Таму ідэнтыфікатараў трэкаў для файла 'file1.ext' як паведамляе 'mkvmerge --identify' не змяняюцца незалежна ад таго, колькі там іншых уваходных файлаў і ў якой пазіцыі 'file1.ext' выкарыстоўваюцца.

Ідэнтыфікатараў трэкаў назначаюцца наступным чынам:

- Файлы AVI: відэатрэк мае ідэнтыфікатар 0. Аўдыятрэкі атрымліваюць ідэнтыфікатары ў парадку ўзрастання, пачынаючы з 1.

- Файлы AAC, AC-3, MP3, SRT і WAV: адзін «трэк» у гэтым файле атрымлівае ідэнтыфікатар 0.

- Большасць іншых файлаў: ідэнтыфікатары трэкаў назначаюцца ў парадку, у якім трэкі знаходзяцца ў файле, пачынаючы з 0.

Параметры, якія выкарыстоўваюць ідэнтыфікатары трэкаў гэта тыя, апісанне якіх змяшчае 'TID'. Наступныя параметры таксама выкарыстоўваюць ідэнтыфікатары трэкаў: -- audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks і --track-tags.

## 6.2. Спецыяльныя ідэнтыфікатары трэка

Ёсць некалькі ідэнтыфікатараў, якія маюць асаблівае значэнне і не сустракаюцца ў выхадных дадзеных ідэнтыфікацыі.

Спецыяльны ідэнтыфікатар трэка «-1» з'яўляецца сімвалам падстаноўкі і ўжывае дадзены пераключальнік да ўсіх трэкаў, якія счытваюцца з уваходнага файла.

Спецыяльны ідэнтыфікатар трэка '-2' спасылаецца на раздзелы ў зыходным файле. На дадзены момант толькі параметр --sync выкарыстоўвае гэты спецыяльны ідэнтыфікатар. У якасці альтэрнатывы --sync -2:... можна выкарыстаць параметр --chapter-sync ....

# 7. Праца з мовамі

Matroska(tm) падтрымлівае два розныя тыпы моўных элементаў: стары, састарэлы элемент «Language», які змяшчае коды ISO 639-2 alpha 3, і новыя тэгі «LanguageIETF», якія змяшчаюць моўныя тэгі IETF BCP 47. Усе параметры mkvmerge(1), якія прымаюць мову, прымаюць моўны тэг BCP 47. mkvmerge(1) будзе выводзіць значэнне для састарэлага элемента «Language» з моўных тэгаў BCP 47, дзе гэта магчыма.

Пры ідэнтыфікацыі файла ў рэжыме JSON існуючыя элементы загалоўка трэка «LanguageIETF» будуць выведзеныя ў якасці ўласцівасці трэка language_ietf.

Пры запісе файла mkvmerge(1) заўжды будзе запісваць элементы «LanguageIETF», «ChapLanguageIETF» і «TagLanguageIETF» (апошнія два толькі ў выпадку запісу раздзелаў або тэгаў адпаведна). У дапаўненне да гэтых элементаў будуць запісаныя адпаведныя старыя элементы; яны будуць зададзеныя на частку кода ISO 639-2 моўнага тэга BCP 47. Напрыклад, калі мова трэка зададзеная на sr-Cyrl-RS, «LanguageIETF» будзе зададзеная на sr-Cyrl-RS, а стары элемент «Language» будзе зададзены на srp.

Пры чытанні існуючых файлаў (файлы Matroska, файлы раздзелаў або тэгаў XML ды г. д.), якія ўжо змяшчаюць элементы «...LanguageIETF"» існуючыя элементы будуць захаваныя. У адваротным выпадку элементы "«..LanguageIETF» будуць дададзеныя на аснове параметраў каманднага радка і іншых існуючых састарэлых элементаў «...Language».

Стварэнне новых элементаў можна цалкам адключыць з дапамогай параметра каманднага радка --disable-language-ietf, які дзейнічае на ўсе тры новыя элементы.

Праз параметр --normalize-language-ietf можна выбраць метад нармалізацыі, які ўжываецца да пашыраных моўных падтэгаў.

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

Note:

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

## 8.1. Уводзіны

Увесь тэкст у файле Matroska(tm) закадзіраваны ў UTF-8. Гэта азначае, што mkvmerge(1) павінен канвертаваць кожны тэкставы файл, які ён чытае, а таксама кожны тэкст, прастаўдены ў камандным радку, з любога набору сімвалаў у UTF-8. У сваю чаргу гэта таксама азначае, што вывад mkvmerge(1) неабходна канвертаваць назад у гэты набор сімвалаў з UTF-8, напрыклад калі неанглійскі пераклад выкарыстоўваецца з --ui-language або для тэкста, які паходзіць з файла Matroska(tm).

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

## 8.2. Маркеры паслядоўнасці байтаў (BOM)

Тэкставыя файлы, якія пачынаюцца з BOM, ужо закадзіраваныя ў адным прадстаўленні UTF. mkvmerge(1) падтрымлівае наступныя пяць рэжымаў: UTF-8, UTF-16 Little і Big Endian, UTF-32 Little і Big Endian. Тэкставыя файлы з BOM аўтаматычна канвертуюцца ў UTF-8. Любыя параметры, якія інакш зададуць набор сімвалаў для такога файла (напрыклад, --sub-charset), моўчкі ігнаруецца.

## 8.3. Linux і Unix-падобныя сістэмы, уключаючы macOS

У Unix-сістэмах mkvmerge(1) выкарыстоўвае сістэмны выклік setlocale()3, які, у сваю чаргу, выкарыстоўвае пераменныя асяроддзя LANG, LC_ALL і LC_CYPE. Атрыманы набор сімвалаў часта з'яўляецца адным з сямейства UTF-8 або ISO-8859-* і выкарыстоўваецца для ўсіх аперацый з тэкставымі файламі для кадзіравання радкоў у камандным радку і для вываду ў кансоль.

## 8.4. Windows

У Windows набор сімвалаў па змаўчанні, які выкарыстоўваецца для канвертавання тэкставых файлаў, вызначаецца выклікам сістэмнага выкліка GetACP().

Чытанне каманднага радка завяршаецца функцыяй GetCommandLineW(), якая вяртае радок Unicode. Таму параметр --command-line-charset ігнаруецца ў Windows.

Вывад кансолі складаецца з трох сцэнарыяў:

1. Калі вывад перанакіраваны параметрам --redirect-output, то па змаўчанні задаецца набор сімвалаў UTF-8. Гэта можна змяніць праз --output-charset.

2. Калі вывад перанакіраваны з cmd.exe самастойна, напрыклад з mkvinfo file.mkv > info.txt, тады набор сімвалаў заўжды будзе зададзены ў UTF-8 і не можа быць зменены.

3. У адваротным выпадку (пры запісе непасрэдна ў кансоль) выкарыстоўваецца функцыя Windows WriteConsoleW() і параметр --output-charset ігнаруецца. Кансоль павінна мець магчымасць выводзіць усе сімвалы Unicode, для якіх зададзеная адпаведная падтрымка моў (напрыклад, кітайскія сімвалы могуць не паказвацца ў англійскіх версіях Windows).

## 8.5. Параметры каманднага радка

Існуюць наступныя параметры для задання спецыфічных кадзіровак:

- --sub-charset для файлаў субцітраў і для субцітраў, якія знаходзяцца ў кантэйнеры фармату, для якіх кадзіроўка не можа быць вызначана адназначна (напр. файлы Ogg),

- --chapter-charset для тэкставых файлаў раздзелаў і для раздзелаў і загалаўкаў файлаў, якія захоўваюцца ў кантэйнерных фарматах, для якіх набор сімвалаў не можа быць вызначаны адназначна (напрыклад, файлы Ogg для звестак раздзелаў, трэкаў і загалаўкаў файлаў ды г. д.; файлы MP4 для звестак раздзелаў),

- --command-line-charset для ўсіх радкоў у камандным радку,

- --output-charset для ўсіх радкоў, запісаных у кансоль або файл, калі вывад быў перанакіраваны з параметрам --redirect-output. Па-за Windows-сістэмамі па змаўчанні для зыходнага набору сімвалаў выкарыстоўваецца бягучы набор сімвалаў сістэмы. У Wndows перанакіраванне па змаўчанні зададзенае ў UTF-8 з выкарыстаннем --redirect-output і з самім cmd.exe, напрыклад, mkvinfo file.mkv > info.txt.

# 9. Файлы параметраў

Файлам параметраў з'яўляецца файл, з якога mkvmerge(1) можа счытаць дадатковыя аргументы каманднага радка. Гэта можна выкарыстаць для таго, каб абысці пэўныя абмежаванні абалонкі або аперацыйнай сістэмы падчас выканання знешніх праграм, напрыклад, пры абмежаванай даўжыні каманднага радка.

Файл параметраў змяшчае дадзеныя ў фармаце JSON. Яго змесціва павінна быць дапушчальным масівам JSON, які складаецца выключна з радкоў JSON. Кадзіроўка файла павінная быць UTF-8. Файл не павінен пачынацца з маркера парадка байтаў (BOM), але калі ён існуе, ён будзе прапушчаны.

Правілы для экранавання спецыяльных сімвалаў унутры JSON прыведзеныя ў афіцыйнай спецыфікацыі JSON, RFC 7159.

Само імя файла параметраў павінна быць зададзенае ў выглядзе аргумента каманднага радка з прэфіксам «@».

Камандны радок «mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg» можа быць канвертаваны ў наступны файл параметраў JSON пад назвай, напрыклад, «options.json»:

    [
      "-o",
      "c:\\Matroska\\мой файл.mkv",
      "--title",
      "#65",
      "-A",
      "фільм.avi",
      "гук.ogg"
    ]

Тады адпаведная каманда будзе «mkvmerge @options.json».

# 10. Звязванне файла

Matroska(tm) падтрымлівае звязванне файлаў, якое проста кажа, што канкрэтны файл з'яўляецца папярэднікам або пераемнікам бягучага файла. Калі быць дакладным, то на самай справе звязаныя не файлы, а сегменты Matroska(tm). Паколькі большасць файлаў, імаверна, будуць змяшчаць толькі адзін сегмент Matroska(tm), у прыведзеных ніжэй тлумачэннях выкарыстоўваецца тэрмін «звязванне файлаў», хаця «звязванне сегментаў» было б больш падыходным.

Кожны сегмент ідэнтыфікуецца ўнікальным 128-бітным UID сегмента. Гэты UID аўтаматычна генеруе mkvmerge(1). Звязванне здзяйсняецца галоўным чынам праз размяшчэнне UID сегментаў (коратка: SID) папярэдняга/наступнага файла ў звесткі загалоўка сегмента. mkvinfo(1) друкуе гэтыя ідэнтыфікатары SID, калі знойдзе іх.

Калі файл разбіты на некалькі меншых і выкарыстоўваецца звязванне, то меткі часу не будуць пачынацца зноў з 0, а будуць працягвацца там, дзе спыніўся апошні файл. Такім чынам захоўваецца абсалютны час, нават калі папярэднія файлы недаступныя (напрыклад, падчас патокавай перадачы). Калі звязванне не выкарыстоўваецца, меткі часу павінны пачынацца з 0 для кожнага файла. Па змаўчанні mkvmerge(1) не выкарыстоўвае звязванне файлаў. Калі вы хочаце, вы можаце ўключыць яго праз параметр --link. Гэты параметр карысны толькі ў тым выпадку, калі таксама актываваны падзел.

Незалежна ад таго, ці актывіваваны падзел або не, карыстальнік можа задаць mkvmerge(1) каб звязваць створаныя файлы з канкрэтнымі SID. Гэта дасягаецца праз параметры --link-to-previous і --link-to-next. Гэтыя параметры прымаюць сегмент SID у фармаце, які выводзіць mkvinfo(1): 16 шаснаццатковых лікаў між 0x00 і 0xff, дзе кожны мае прэфікс '0x', напрыклад, '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. У якасці альтэрнатывы можна выкарыстоўваць больш кароткую форму: 16 шаснаццатковых лікаў між 0x00 і 0xff без прэфіксаў '0x' і без прабелаў, напрыклад '41da7366d9cfb21eae78ebb45ecab393'.

Калі падзел выкарыстоўваецца, то першы файл звязваецца з SID, які перадаецца з --link-to-previous, і апошні файл звязваецца з SID, які перадаецца з --link-to-next. Калі падзел не выкарыстоўваецца, то адзін выхадны файл будзе звязаны з абодвума SID.

# 11. Стандартныя значэнні

Спецыфікацыя Matroska(tm) сцвярджае, што некаторыя элементы маюць значэнне па змаўчанні. Звычайна элемент не запісваецца ў файл, калі яго значэнне роўна значэнню па змаўчанні, каб сэканоміць месца. Элементы, якія карыстальнік можа прапусціць у вывадзе mkvinfo(1), — гэта элементы мова і пазнака трэка па змаўчанні. Значэннем па змаўчанні для элемента мова з'яўляецца англійская ('eng'), а значэннем па змаўчанні для элемента пазнака трэка па змаўчанні з'яўляецца так. Таму, калі вы выкарысталі --language 0:eng для трэка, яно не будзе паказвацца ў вывадзе mkvinfo(1).

# 12. Далучэнні

Магчыма, вы таксама хочаце захаваць некаторыя фатаграфіі разам са сваім файлам Matroska(tm), або вы выкарыстоўваеце субцітры SSA і маеце патрэбу ў спецыяльным шрыфце TrueType(tm), які вельмі рэдка сустракаецца У гэтых выпадках вы можаце прымацаваць гэтыя файлы да файла Matroska(tm). Яны будуць не проста дадазеныя ў файл, а ўбудаваныя ў яго. Затым прайгравальнік зможа паказаць гэтыя файлы (выпадак «фатаграфій») або выкарыстоўваць іх для прайгравання субцітраў (выпадак «шрыфты TrueType(tm)»).

Вось прыклад далучэння фатаграфіі і шрыфта 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

Калі ў якасці ўваходнага файла выкарыстоўваецца файл Matroska(tm) з далучэннем, то mkvmerge(1) скапіюе далучэнні ў новы файл. Выбар таго, якія далучэнні капіююцца, а якія не, можна змяніць праз параметры --attachments і --no-attachments.

# 13. Раздзелы

Сістэма раздзелаў Matroska(tm) больш шырокая, чым старая вядомая сістэма, якая выкарыстоўваецца ў файлах OGM. Поўная дакументацыя размешчаная на сайце Matroska.

mkvmerge(1) падтырмлівае два тыпы файлаў раздзелаў у якасці ўваходных дадзеных. Першы фармат пад назвай «просты фармат раздзела» з'яўляецца тым жа фарматам, які чакаюць інструменты OGM. Другі фармат — гэта фармат раздзелаў на аснове XML, які падтрымлівае ўсе функцыі раздзелаў Matroska(tm).

Акрамя спецыяльных файлаў раздзелаў mkvmerge(1) можа таксама чытаць раздзелы з іншых фарматаў (напрыклад, MP4, Ogg, Blu-rays або DVD).

## 13.1. Просты фармат раздзелаў

Гэты фармат складаецца з пар радкоў, якія пачынаюцца з «CHAPTERxx=» і «CHAPTERxxNAME=» адпаведна. Першы змяшчае метку часу пачатка, а другі змяшчае назву. Напрыклад:

    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) канвертуе кожную пару або радкі ў адзін ChapterAtom Matroska(tm). Ён не задае ніякі ChapterTrackNumbe, што азначае, што ўсе раздзелы ўжываюцца да ўсіх трэкаў у файле.

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

## 13.2. Фармат раздзелаў на аснове XML

Фармат раздзелаў на аснове XML, выглядае прыкладна так:

    <?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>

У гэтага фармата ёсць тры магчымасці, якія адсутнічаюць у простым фармаце раздзелаў:

1. Метка часу канца раздзела можа быць зададзеная,

2. раздзелы могуць быць укладзеныя,

3. мова і краіна могуць быць зададзеныя.

Дыстрыбутыў mkvtoolnix змяшчае некалькі файлаў для прыкладу, яны размешчаныя ў падпапцы doc і могуць быць выкарыстаныя ў якасці ўзору.

Далей паказаны спіс падтрымліваных тэгаў XML, іхнія тыпы дадзеных і інтэрвал дапушчальных значэнняў:

    Chapters (master)
      EditionEntry (master)
        EditionUID (unsigned integer, valid range: 1 <= value)
        EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1)
        ChapterAtom (master)
          ChapterAtom (master)
          ChapterUID (unsigned integer, valid range: 1 <= value)
          ChapterTimeStart (unsigned integer)
          ChapterTimeEnd (unsigned integer)
          ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
          ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1)
          ChapterSegmentUID (binary, valid range: 1 <= length in bytes)
          ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value)
          ChapterPhysicalEquiv (unsigned integer)
          ChapterTrack (master)
            ChapterTrackNumber (unsigned integer, valid range: 1 <= value)
          ChapterDisplay (master)
            ChapterString (UTF-8 string)
            ChapterLanguage (UTF-8 string)
            ChapterCountry (UTF-8 string)
          ChapterProcess (master)
            ChapterProcessCodecID (unsigned integer)
            ChapterProcessPrivate (binary)
            ChapterProcessCommand (master)
              ChapterProcessTime (unsigned integer)
              ChapterProcessData (binary)

## 13.3. Чытанне раздзелаў з Blu-ray

mkvmerge(1) можа чыатаць раздзелы з нешзашыфраваных дыскаў Blu-ray. Для гэтага вы можаце выкарыстоўваць шлях да аднаго са спісаў прайгравання MPLS з параметрам --chapters.

Прыклад: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls

## 13.4. Чытанне раздзелаў з DVD

Калі MKVToolNix сабраны з бібліятэкай libdvdread(tm), mkvmerge(1) можа чытаць раздзелы з DVD. Для гэтага вы можаце выкарыстаць шлях да адной з папак або файлаў на DVD з параметрам --chapters. Паколькі DVD-дыскі могуць змяшчаць больш за адзін загаловак, а кожны загаловак мае свой уласны набор раздзелаў, вы можаце дадаць двухкроп'е і жаданы нумар імя ў канец аргумента імя файла. Нумар імя па змаўчанні роўны 1.

Прыклад: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2

## 13.5. Агульныя заўвагі

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

mkvmerge(1) можа капіяваць раздзелы з уваходных файлаў Matroska(tm), калі яны яўна не адключаныя праз параметр --no-chapters. Раздзелы з усіх крыніц (файлы Matroska(tm), файлы Ogg, файлы MP4, тэкставыя файлы раздзелаў) звычайна не аб'ядноўваюцца, а выходзяць у асобныя ChapterEdition. Толькі калі раздзелы чытаюцца з некалькіх файлаў Matroska(tm) або XML, якія маюць аднолькавыя ідэнтыфікатары UID выдання, будуць аб'яднаныя ў адзіны ChapterEdition. Калі такое аб'яднанне пажадана і ў іншых сітуацыях, карыстальнік павінен спачатку выняць раздзелы з усіх крыніц праз mkvextract; затым уручную аб'яднаць файлы XML, а затым зліць іх.

# 14. Тэгі

## 14.1. Уводзіны

Сістэма тэгаў Matroska(tm) аналагічная сістэме іншых кантэйнераў: набор пар KEY=VALUE. Аднак у Matroska(tm) гэтыя тэгі таксама могуць быць укладзенымі, як KEY, так і VALUE з'яўляюцца ўласнымі элементамі. Прыклад файла example-tags-2.xml паказвае, як выкарыстоўваць гэтую сістэму.

## 14.2. Вобласць ужывання тэгаў

Тэгі Matroska(tm) не ўжываюцца аўтаматычна да ўсяго файла. Яны могуць ужывацца да розных частак файла: да аданго або некалькіх трэкаў, да аднаго або некалькіх раздзелаў або нават да камбінацыі абодвух. Спецыфікацыя Matroska змяшчае больш падрабязныя звесткі аб гэтым факце.

Адным з важных фактаў з'яўляецца тое, што тэгі звязваюцца з трэкамі або раздзеламі праз элемент тэга Targets Matroska(tm) і што, UID, якія выкарыстоўваюцца для гэтага звзвання, не з'яўляюцца ідэнтыфікатарамі трэкаў, якія mkvmerge(1) выкарыстоўвае ўсюды. Замест нумароў выкарыстоўваюцца UID, якія mkvmerge(1) вылічвае аўтаматычна (калі трэк узяты з фармата файла, адрознага Matroska(tm)) або якія капіююцца з уваходнага файла, калі ўваходны файл трэка з'яўляецца файлам Matroska(tm). Таму цяжка даведацца, якія UID выкарыстоўваць у файле тэгаў, перш чым файл будзе перададзены ў mkvmerge(1).

mkvmerge(1) ведае два варыянты, з дапамогай якіх вы можаце дадаць тэгі да файлаў Matroska(tm): параметры --global-tags і --tags. Розніца ў тым, што першы параметр, --global-tags, прымусіць тэг ўжывацца да ўсяго файла, выдаліўшы любы са згаданых вышэй элементаў Targets. Другі параметр, --tags, аўтаматычна ўстаўляе UID, які mkvmerge(1) стварае для тэга, зададзенага прах частку TID параметра --tags.

## 14.3. Прыклад

Дапусцім, вы хочаце дадаць тэгі да відэатрэка, прачытанага з файла AVI. mkvmerge --identify file.avi паведамляе вам, што ідэнтыфікатары відэатрэка (не блытайце гэты ідэнтыфікатар з UID!) роўны 0. Тады вы ствараеце файл тэгаў, пакінуўшы ўсе элементы Targets і выканаўшы mkvmerge(1):

    $ mkvmerge -o файл.mkv --tags 0:тэгі.xml файл.avi

## 14.4. Фармат файла тэгаў

mkvmerge(1) падтрымлівае фармат файла тэга на аснове XML. Фармат вельмі дакладна змадэляваны па спецыфікацыі Matroska. Як двайковы, так і дыстрыбутыў зыходнікаў у MKVToolNix пастаўляюцца з узорам файла з імем example-tags-2.xml, які проста пералічае ўсе вядомыя тэгі і можа выкарыстоўвацца ў якасці асновы для рэальных файлаў тэгаў.

Асновы:

- Крайні элемент павінен быць <Tags>.

- Адзін булевы тэг змяшчаецца ў пары тэгаў <Tag> XML.

- Прабелы перад і пасля метак ігнаруюцца.

## 14.5. Тыпы дадзеных

Новая сістэма тэгаў Matroska(tm) ведае толькі два тыпы дадзеных: радок UTF-8 і двайковы тып. Першы выкарыстоўваецца для імя тэга і элемента <String>, а двайковы тып выкарыстоўваецца для элемента <Binary>.

Паколькі двайковыя дадзеныя самі па сабе не памяшчаюцца ў файл XML mkvmerge(1) падтрымлівае два іншыя метады захоўвання двайковых дадзеных. Калі змесціва тэга XML пачынаецца з '@', то апошні тэкст разглядаецца як імя файла. Змесціва адпаведнага файла капіюецца ў элемент Matroska(tm).

У адваротным выпадку чакаецца, што дадзеныя будуць закадзіраваныя ў Base64. Гэта кадзіроўка, якая канвертуе двайковыя дадзеныя ў арганічны набор сімвалаў ASCII і выкарыстоўваецца, напрыклад, у праграмах электроннай пошты. mkvextract(1) выведзе дадзеныя, закадзіраваныя ў Base64 для двайковых элементаў.

Састарэлай сістэме тэгаў вядомыя яшчэ некаторыя тыпы дадзеных, якія можна знайсці ў афіцыйнай спецыфікацыі тэгаў Matroska(tm). Паколькі mkvmerge(1) больш не падтрымлівае гэтую сістэму, гэтыя тыпы тут не апісаныя.

## 14.6. Вядомыя тэгі файла фармата XML

Далей паказаны спіс падтрымліваных тэгаў XML, іхнія тыпы дадзеных і інтэрвал дапушчальных значэнняў:

    Tags (master)
      Tag (master)
        Targets (master)
          TargetTypeValue (unsigned integer)
          TargetType (UTF-8 string)
          TrackUID (unsigned integer)
          EditionUID (unsigned integer)
          ChapterUID (unsigned integer)
          AttachmentUID (unsigned integer)
        Simple (master)
          Simple (master)
          Name (UTF-8 string)
          TagLanguage (UTF-8 string)
          DefaultLanguage (unsigned integer)
          String (UTF-8 string)
          Binary (binary)

# 15. Звесткі аб сегментах

Праз XML-файл сегментных звестак можна задаць пэўныя значэнні ў полі загалоўка «звесткі аб сегменце» файла Matroska(tm). Усе гэтыя значэнні не могуць быць зададзеныя праз іншыя параметры каманднага радка.

Іншыя палі загалоўка «звестак аб сегменце» можна задаць праз параметры каманднага радка, але не праз XML-файл. Гэта ўключае, напрыклад, параметры --title і --timestamp-scale.

Існуюць і іншыя элементы, якія нельга задаць ні праз параметры каманднага радка, ні праз XML-вайлы. Да іх адносяцца наступныя элементы: DateUTC (таксама вядомы як «дата зліцця»), MuxingApp, WritingApp і Duration. Яны заўжды задаюцца mkvmerge(1) самастойна.

Далей паказаны спіс падтрымліваных тэгаў XML, іхнія тыпы дадзеных і інтэрвал дапушчальных значэнняў:

    Info (master)
      SegmentUID (binary, valid range: length in bytes == 16)
      SegmentFilename (UTF-8 string)
      PreviousSegmentUID (binary, valid range: length in bytes == 16)
      PreviousSegmentFilename (UTF-8 string)
      NextSegmentUID (binary, valid range: length in bytes == 16)
      NextSegmentFilename (UTF-8 string)
      SegmentFamily (binary, valid range: length in bytes == 16)
      ChapterTranslate (master)
        ChapterTranslateEditionUID (unsigned integer)
        ChapterTranslateCodec (unsigned integer)
        ChapterTranslateID (binary)

# 16. Кампаноўка файла Matroska

Кампаноўка файла Matroska(tm) дастаткова гібкая. mkvmerge(1) будзе паказваць файл загадзя перадвызначаным чынам. Вынікоўны файл выглядае так:

[Загаловак EBML] [сегмент {метапошук #1} [звесткі аб сегменце] [звесткі аб трэку] {далучэнні} {раздзелы} [кластар 1] {кластар 2} ... {кластар n} {Сue} {метапошук #2} {меткі}]

Элементы ў фігурных дужках неабавязковыя і залежаць ад выкарыстанага змесціва і параметраў. Пара заўваг:

- метапошук №1 уключае толькі неабходную колькасць элементаў узроўня 1, і толькі калі яны сапраўды існуюць: далучэнні, раздзелы, спісы Сue, тэгі, метапошук №2. Старыя версіі mkvmerge(1) таксама выкарыстоўваюцца для размяшчэння кластараў у гэтым метаэлеменце пошуку. Таму спатрабавалася некаторае недакладнае адгадванне, каб зарэзерваваць дастаткова месца. Гэта часта цярпела няўдачу. Цяпер толькі кластары захоўваюцца ў метапошуку №2, а метапошук №1 адносіцца да метапошуку №2.

- Элементы далучэння, раздзела і тэга прысутнічаюць толькі ў тым выпадку, калі яны былі дададзеныя.

Найкарацейшы файл Matroska(tm) выглядае так:

[Загаловак EBML] [сегмент [звесткі аб сегменце] [звесткі аб трэку] [кластар 1]]

Гэта прыклад файла, які змяшчае толькі аўдыя.

# 17. Знешнія файлы метак часу

mkvmerge(1) дазваляе карыстальніку самастойна выбіраць меткі часу для пэўнага трэка. Гэта можна выкарыстоўваць для стварэння файлаў з пераменнай частатой кадраў або для ўключэння цішыні ў аўдыя. У гэтым выпадку кадр з'яўляецца элементам, які стварае асобна для блока Matroska(tm). Для відэа гэта роўна адзін кадр, для аўдыя гэта адзін пакет пэўнага тыпу аўдыя. Напрыклад, для AC-3 гэта будзе пакет, які змяшчае 1536 ўзораў.

Файлы метак часу, якія выкарыстоўваюцца пры даданні трэкаў адзін да аднаго, павінны задавацца толькі для першай часткі ланцуга трээкаў. Напрыклад, калі вы дадаяце два файлы, v1.avi і v2.avi, і хочаце выкарыстаць меткі часу, ваш камандны радок павінен выглядаць прыкладна так:

    $ mkvmerge ... --timestamps 0:мае_меткі_часу.txt v1.avi +v2.avi

Існуюць чатыры фарматы, якія распазнае mkvmerge(1). Першы радок заўжды змяшчае нумар версіі. Пустыя радкі, радкі, якія змяшчаюць толькі прабелы і радкі, якія пачынаюцца з «#», ігнаруюцца.

## 17.1. Фармат файла метак часу v1

Гэты фармат пачынаецца з радка версіі. Другі радок аб'яўляе колькасць кадраў у секунду па змаўчанні. Усе наступныя радкі змяшчаюць тры лікі, падзеленыя коскамі: пачатковы кадр (0 — першы кадр), канечны кадр і колькасць кадраў у гэтым дыяпазоне. FPS — гэта лік з плаваючай коскай і з кропкай '.' у якасці дзесятковай коскі. Дыяпазоны могуць змяшчаць разрывы, для якіх выкарыстоўваецца стандартнае значэнне FPS. Напрыклад:

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

## 17.2. Фармат файла метак часу v2

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

    # timestamp format v2
    0
    40
    80

## 17.3. Фармат файла метак часу v3

У гэтым фармаце кожны радок змяшчае даўжыню ў секундах, за якой ідзе дадатковая колькасць кадраў у секунду. Абодва могуць быць лікамі з плаваючай коскай. Калі колькасць кадраў у секунду адсутнічае, выкарыстоўваецца значэнне па змаўчанні. Для аўдыя вы павінны дазволіць кадзіроўшчыку самастойна вылічыць меткі часу кадра. Для гэтага вы павінны выкарыстаць 0,0 у якасці колькасці кадраў у секунду. Вы таксама можаце стварыць разрывы ў патоку, выкарыстоўваючы ключавое слова 'gap', за якім ідзе даўжыня разрыву. Прыклад аўдыяфайла:

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

## 17.4. Фармат файла метак часу v4

Фармат ідэнтычны фармату v2. Адзінае адрозненне ў тым, што меткі часу не павінны быць адсартаваныя. Гэты фармат не варта калі-небудзь выкарыстоўваць.

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

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

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

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

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

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

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

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

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

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

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

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