mkvmerge -- Об’єднує мультимедійні потоки в файли Matroska(tm)

# 1. Короткий опис

mkvmerge global options {-o out} options1 {file1} options2 {file2} @options-file.json

# 2. Опис

Ця програма бере вхідні дані з кількох медіа-файлів і об’єднує їхні потоки (усі або лише виділені) в файл Matroska(tm); див. веб-сайт Matroska.

Important:

Важливим є порядок параметрів командного рядка. Будь ласка, прочитайте розділ "Порядок параметрів", якщо ви новачок у програмі.

## 2.1. Глобальні параметри

Option | Description
--- | ---
-v, --verbose | Збільшіть докладність виводу.
-q, --quiet | Приховати статусну вихідну інформацію.
-o, --output file-name | Записує у файл file-name. Якщо використовується розщеплення, цей параметр розглядається дещо інакше. Додаткову інформацію див. у поясненнях про параметр --split.
-w, --webm | Створює файл, сумісний із WebM. Це також увімкнено, якщо вихідний файл має розширення "webm". Цей режим передбачає кілька обмежень. Єдиними дозволеними кодеками є відео VP8, VP9 та аудіо Opus, Vorbis. Елемент заголовка DocType змінюється на "webm".

Для розділів і теґів дозволяється лише підмножина елементів. mkvmerge(1) автоматично видалить усі елементи, не дозволені специфікацією.

--title title | Встановлює загальну назву вихідного файлу, напр. назва фільму.
--default-language language-code | Встановлює код мови за замовчуванням, який використовуватиметься для доріжок, для яких не встановлено мову за допомогою параметра --language, а також для якого вихідний контейнер не надає мову. Кодом мови за замовчуванням є 'und' для 'не визначено'.

## 2.2. Обробка інформації про сегменти (загальні параметри)

Option | Description
--- | ---
--segmentinfo filename.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 language-code | Встановлює код мови ISO 639-2, який записується для кожного запису розділу. За замовчуванням 'eng'. Перегляньте розділ про "розділи" нижче, щоб дізнатися більше. Цей параметр можна використовувати як для простих файлів розділів, так і для вихідних файлів, які містять розділи, але не містять інформації про мову розділів, наприклад файли MP4 і OGM.

Мова, встановлена цим параметром, також використовується, коли розділи створюються за допомогою параметра --generate-chapters.

--chapter-charset character-set | Встановлює набір символів, який використовується для перетворення в UTF-8 для простих файлів розділів. Перегляньте розділ про текстові файли та набори символів, щоб дізнатися, як mkvmerge(1) перетворює між наборами символів. Цей перемикач також застосовується до розділів, які скопійовані з певних типів контейнерів, наприклад файли Ogg/OGM і MP4. Додаткову інформацію див. у розділі про розділи нижче.
--chapter-sync d[,o[/p]] | Налаштуйте мітки часу розділів у наступному вихідному файлі на d мс. Крім того, ви можете використовувати параметр --sync зі спеціальним ідентифікатором доріжки -2 (див. розділ спеціальні ID доріжок). o/p: налаштуйте мітки часу на o/p, щоб виправити лінійні зсуви. Параметр p за замовчуванням має значення 1, якщо його опустити. І o, і p можуть бути числами з плаваючою комою.

Значення за замовчуванням: немає ручної корекції синхронізації (це те саме, що d = 0 і o/p = 1.0).

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

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

- 'when-appending' – цей режим створює один розділ на початку і один розділ щоразу, коли додається файл.

  Цей режим також працює з режимами розділення 'parts:' і 'parts-frames:'. Для цих режимів буде створено один розділ для кожного доданого діапазону міток часу (тих, чиї початкові мітки часу мають префікс '+').

  Note:

  mkvmerge(1) вимагає наявності відео або аудіо доріжки, щоб можна було визначити, коли буде додано новий файл. Якщо одна або кілька відео доріжок мультиплексовані, використовується перша з них. В іншому випадку використовується перша звукова доріжка.

- 'interval:time-spec' – цей режим створює один розділ з фіксованими інтервалами, заданими time-spec. Формат у формі HH:MM:SS.nnnnnnnnn або число, за яким слідує одна з одиниць 's', 'ms' або 'us'.

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

Назви нових розділів керуються параметром --generate-chapters-name-template. Мова встановлюється за допомогою --chapter-language, яка має бути наведена перед --generate-chapters.

--generate-chapters-name-template template | Це встановлює шаблон назви для імен розділів, створених за допомогою параметра --generate-chapters. Якщо цей параметр не використовується, буде використано стандартне значення «Розділ <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)

The string '<TITLE>' is only filled when generating chapters for appended files. It'll be replaced by the appended file's title if one is present.

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

Якщо цей параметр не вказано, mkvmerge(1) за замовчуванням має формат '%p - %t' (виконавець, за яким слідує пробіл, тире, інший пробіл і заголовок).

Якщо вказано формат, то все, крім наступних метасимволів, копіюється як є, а метасимволи замінюються таким чином:

- %p замінюється на рядок PERFORMER поточного запису,

- %t замінюється на рядок TITLE поточного запису,

- %n замінюється на номер поточної доріжки та

- %N замінюється номером поточної доріжки, доповненою початковим нулем, якщо це < 10.

--chapters file-name | Прочитайте інформацію про розділ із файлу file-name. Перегляньте розділ про розділи нижче, щоб дізнатися більше.
--global-tags file-name | Читає глобальні теги з файлу file-name. Додаткову інформацію див. у розділі про теги нижче.

## 2.4. Загальне керування виводом (розширені глобальні параметри)

Option | Description
--- | ---
--track-order FID1:TID1,FID2:TID2,... | Цей параметр змінює порядок, у якому створюються доріжки для вхідного файлу. Аргументом є список ID пар, розділених комами. Кожна пара містить спочатку ID файлу (FID1), який є просто номером файлу в командному рядку, починаючи з 0 і потім ID доріжки (TID1) із цього файла. Якщо деякі ID доріжок пропущені, ці доріжки створюються після того, як були створені доріжки, задані цим параметром.

Якщо цей параметр не вказано, доріжки будуть відсортовані за їх типом в першу чергу та по порядку вихідного файлу в другу чергу. Першими йдуть відеодоріжки, потім аудіодоріжки та доріжки субтитрів. Інші типи доріжок, що рідко використовуються, йдуть останніми.

--cluster-length spec | Обмежте кількість блоків даних або тривалість даних у кожному кластері. Параметр 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 factor | Примусово встановлює коефіцієнт масштабу мітки часу в factor. Припустимі значення знаходяться в діапазоні 1000..10000000 або спеціальному значенні -1. Зазвичай mkvmerge(1) використовує значення 1000000, що означає, що мітки часу та тривалість мають точність 1 мс. Для файлів, які не містять відео доріжку, але мають принаймні одну звукову mkvmerge(1) автоматично вибере коефіцієнт масштабу мітки часу, щоб усі мітки часу та тривалість мали точність до одного звукового зразка. Це спричиняє більші накладні витрати, але забезпечує точний пошук і витягування.

Якщо використовується спеціальне значення -1, то mkvmerge(1) використовує точність зразка, навіть якщо є відеодоріжка.

--enable-durations | Записує тривалість для всіх блоків. Це збільшить розмір файлу і на даний момент не пропонує жодної додаткової цінності для програвачів.
--no-cues | Повідомляє mkvmerge(1) не створювати та записувати дані cue, які можна порівняти з індексом у AVI. Файли Matroska(tm) можна відтворювати без даних cue, але пошук, ймовірно, буде неточним і повільнішим. Використовуйте це, лише якщо ви справді відчайдушно потребуєте місця або для тестування. Дивіться також параметр --cues, який можна вказати для кожного вхідного файлу.
--no-date | За замовчуванням mkvmerge(1) встановлює в інформаційному полі сегмента "дата" час і дату початку мультиплексування. За допомогою цього параметра це поле взагалі не записується.
--date timestamp | Sets the DateUTC field written to the segment information. The timestamp must be ISO 8601-like: YYYY-mm-ddTHH:MM:SSZ for UTC or with an offset ±HH:MM (a space instead of T is also accepted), e.g. 2017-03-28T17:28:00Z or 2017-03-28 17:28:00+02:00. If used together with --no-date, --no-date takes precedence and no date will be written.
--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 mode | Дозволяє нормалізувати всі мовні теги 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 specification | Розділяє вихідний файл після заданого розміру або часу. Зверніть увагу, що доріжки можна розділити лише перед ключовим кадром. Тому точка розділення може трохи відрізнятися від того, що вказав користувач. На даний момент mkvmerge(1) підтримує такі режими:

1. Розділення за розміром.

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

   Приклад: --split size:700m or --split 150000000

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

   Префікс 'size:' може бути опущений з міркувань сумісності.

2. Розділення за тривалістю.

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

   Приклад: --split duration:00:60:00.000 or --split 3600s

   Параметр повинен мати форму HH:MM:SS.nnnnnnnn для визначення тривалості з точністю до наносекунди або бути числом d, за яким слідує літера 's' для тривалості в секундах. Параметр HH – це кількість годин, MM - хвилин, SS - секунд і nnnnnnnn - наносекунд. Як кількість годин, так і кількість наносекунд можна опустити. Після коми може бути до дев’яти цифр. Після того, як тривалість вмісту поточного виводу досягне цієї межі, буде запущено новий вихідний файл.

   Префікс '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.

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

   У прикладі 3 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 | Визначає, як обчислюються мітки часу під час додавання файлів. Параметр 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[,...] | Цей параметр визначає, до якої доріжки буде додано іншу доріжку. Кожна специфікація містить чотири ID: ID файлу, ID доріжки, ID другого файлу та ID другої доріжки. Перша пара, "ID вихідного файлу" та "ID вихідної доріжки", визначає доріжку, яка має бути додана. Друга пара, "ID файлу призначення" та "ID доріжки призначення", визначає доріжку, до якої додається перша.

Якщо цей параметр був пропущений, використовується стандартне зіставлення. Це стандартне зіставлення додає кожну доріжку з поточного файлу до доріжки з попереднього файлу з тим самим ID доріжки. Це дозволяє легко додавати, якщо фільм було розділено на дві частини і обидва файли мають однакову кількість доріжок та ID доріжок за допомогою команди mkvmerge -o output.mkv part1.mkv +part2.mkv.

+ | Одиночний '+' викликає приєднання наступного файлу, а не його додавання. '+' також можна поставити перед наступним ім’ям файлу. Тому наступні дві команди є еквівалентними:
    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv file1.mkv +file2.mkv
[ file1 file2 ] | Якщо кілька імен файлів містяться в парі квадратних дужок, то другий і всі наступні файли будуть додані до першого файлу, названого в дужках. Це альтернативний синтаксис використання '+' між іменами файлів. Тому наступні дві команди є еквівалентними:
    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv '[' file1.mkv file2.mkv ']'
= | Для певних типів файлів (програмні потоки MPEG, тобто VOB-и) mkvmerge(1) зазвичай шукає файли в тому самому каталозі, що і вхідний файл, які мають однакове базове ім’я і відрізняються лише за своїм поточним номером (наприклад, 'VTS_01_1.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB' тощо) і обробляє всі ці файли, як ніби вони були об’єднані в один великий файл. Цей параметр, єдиний '=', змушує mkvmerge не шукати ці додаткові файли.

Знак '=' можна також поставити перед наступним ім'ям файлу. Тому наступні дві команди є еквівалентними:

    $ mkvmerge -o full.mkv = file1.mkv
    $ mkvmerge -o full.mkv =file1.mkv

( file1 file2 ) | Якщо кілька імен файлів містяться в парі дужок, ці файли розглядатимуться так, як ніби вони були об’єднані в один великий файл, що складається з вмісту кожного з файлів один за одним. Це можна використовувати, наприклад, для файлів VOB, що надходять із транспортних потоків DVD або MPEG. Його не можна використовувати, якщо кожен файл містить власний набір заголовків, що зазвичай буває з окремими файлами, такими як AVI або MP4.

Введення імені файлу в дужки також запобігає mkvmerge; від пошуку додаткових файлів з такою ж базовою назвою, як описано в налаштуванні =. Тому ці два командні рядки є еквівалентними:

    $ mkvmerge -o out.mkv = file.mkv
    $ mkvmerge -o out.mkv '(' file.mkv ')'

Дещо треба зауважити:

1. Після відкриваючої і перед закриваючою дужками мають бути пробіли.

2. Кожен параметр між дужками інтерпретується як ім’я файлу. Тому всі параметри, що застосовуються до цього логічного файлу, мають бути перераховані перед початковою дужкою.

3. Деякі оболонки розглядають дужки як спеціальні символи. Отже, ви повинні сховати або процитувати їх, як показано у прикладі вище.

## 2.6. Підтримка вкладень (більше глобальних параметрів)

Option | Description
--- | ---
--attachment-description description | Звичайний текстовий опис наступного вкладення. Застосовується до наступного параметру --attach-file або --attach-file-once.
--attachment-mime-type MIME type | Тип MIME наступного вкладення. Застосовується до наступного параметра --attach-file або--attach-file-once. Список офіційно визнаних типів MIME можна знайти, наприклад, на домашній сторінці IANA. Тип MIME є обов’язковим для вкладення. Якщо для вкладення не вказано тип MIME, його тип буде визначено автоматично.
--attachment-name name | Встановлює ім’я, яке буде збережено у вихідному файлі для цього вкладення. Якщо цей параметр не вказано, ім’я буде отримано з назви файлу вкладеного файлу, заданого за допомогою параметра --attach-file або --attach-file-once.
--attach-file file-name, --attach-file-once file-name | Створює вкладення файлу всередині файлу Matroska(tm). Різниця між двома формами полягає в тому, що при розбитті файли, прикріплені за допомогою --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 | Не копіювати жодної доріжки кнопок DVD з цього файла.
-T, --no-track-tags | Не копіювати жодного тегу, специфічного для доріжки з цього файла.
--no-chapters | Не копіювати розділи з цього файла.
-M, --no-attachments | Не копіювати вкладення з цього файла.
--no-global-tags | Не копіювати глобальних тегів з цього файла.
--regenerate-track-uids | Коли цей параметр використовується до початкового файлу Matroska, mkvmerge(1) створить нову випадкову унікальну доріжку ID, замість того, щоб зберігати ту, що вже існує у файлі. Уже наявна доріжка в розділах & теґах, що читається з того ж файлу, буде переналаштована згідно зі свіжозгенерованими значеннями.

Ця поведінка автоматично включається для файлів 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).

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--cues TID:none|iframes|all | Елементи керування, для яких записи списку cue (індексу) доріжки, створюються для даної доріжки (див. розділ Ідентифікатори доріжок). 'none' перешкоджає створенню записів списку cue. Для 'iframes' лише блоки без посилань назад або вперед (= I-кадри у відео доріжках) поміщаються в список cue. 'all' примушує mkvmerge(1) створити записи cue для всіх блоків, що зробить файл дуже великим.

За замовчуванням - 'iframes' для доріжок відео та субтитрів і 'none' для звукових доріжок. Дивіться також параметр --no-cues, який перешкоджає створенню записів cue, незалежно від використовуваних параметрів --cues.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--default-track-flag TID[:bool] | Встановлює прапорець "доріжка за замовчуванням" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Прапор буде встановлено, якщо вихідний контейнер не надає цю інформацію і користувач не вказує її за допомогою цього параметра.

Якщо користувач явно не вибирає доріжку під час відтворення, програвач повинен вибрати одну із доріжок, для якого встановлено прапорець «доріжка за замовчуванням», враховуючи, наприклад, такі уподобання користувача, як мова.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--track-enabled-flag TID[:bool] | Встановлює прапорець "доріжка увімкнено" для даної доріжки (див. розділ Ідентифікатори доріжок) до заданого значення bool (0 або 1; за замовчуванням 1, якщо не вказано). Доріжки вмикаються за замовчуванням, якщо для них не вказано жодного параметра, а вихідний контейнер також не надає цю інформацію.

Для відтворення слід розглядати лише доріжки, для яких встановлено прапорець «доріжка увімкнена».

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--forced-display-flag TID[:bool] | Встановлює прапорець "примусова доріжка" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Використовуйте це для доріжок, що мають наекранний текст або діалоги іноземною мовою.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--forced-track TID[:bool] | Встановлює прапорець "з вадами слуху" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Цей прапорець може бути встановлений, якщо доріжка підходить для користувачів з вадами слуху.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--forced-track TID[:bool] | Встановлює прапорець "з вадами зору" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Цей прапорець може бути встановлений, якщо доріжка підходить для користувачів з вадами зору.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--default-track TID[:bool] | Встановлює прапорець "текстові описи" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Цей прапорець може бути встановлений, якщо доріжка містить текстові описи відеоконтенту, придатні для відтворення через систему синтезу мовлення для користувачів із вадами зору.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--forced-track TID[:bool] | Встановлює прапорець "оригінальна доріжка" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Цей прапорець може бути встановлений, якщо доріжка є оригіналом (не переклад).

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

--forced-track TID[:bool] | Встановлює прапорець "коментарій" для даної доріжки (див. розділ Ідентифікатори доріжок), якщо необов'язковий аргумент bool встановлено у 1 або якщо він відсутній. Цей прапорець може бути встановлений, якщо доріжка вміщує коментарі. Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.
--track-name TID:name | Встановлює назву доріжки для даної доріжки (див. розділ Ідентифікатори доріжок) на name.
--language TID:language | Встановлює мову для даної доріжки (див. розділ Ідентифікатори доріжок). Дозволені як коди мов ISO 639-2, так і коди країн ISO 639-1. Коди країн будуть автоматично перетворені в коди мов. Усі мови, включаючи їхні коди ISO 639-2, можна вказати за допомогою параметра --list-languages.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

-t, --tags TID:file-name | Читає теги для доріжки з номером TID з файлу file-name. Додаткову інформацію дивіться у розділі про тегі нижче.
--aac-is-sbr TID[:0|1] | Повідомляє mkvmerge(1) що доріжка з ID TID є SBR AAC (ще відомий як HE-AAC або 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 | Читає мітки часу, які будуть використовуватися для певного ідентифікатора доріжки з file-name. Ці мітки часу примусово замінюють мітки часу, які mkvmerge(1) нормально розраховує. Прочитайте розділ про зовнішні файли міток часу.
--default-duration TID:x | Примусово встановлює тривалість заданої доріжки за замовчуванням до вказаного значення. Також змінює мітки часу доріжки, щоб відповідати тривалості за замовчуванням. Аргумент x повинен мати один з постфіксів 's', 'ms', 'us', 'ns', 'fps', 'p' або 'i', щоб вказати тривалість за замовчуванням в секундах, мілісекундах, мікросекундах, наносекундах, кадрах за секунду, прогресивних кадрах в секунду» або чересстрокових кадрах в секунду відповідно. Число x може бути числом з плаваючою комою або дробом.

Якщо тривалість за замовчуванням не є примусовою, mkvmerge спробує отримати тривалість доріжки за замовчуванням з контейнера та/або закодованого бітового потоку для певних типів доріжок, наприклад, AVC/H.264 або MPEG-2.

Цей параметр також можна використовувати для зміни FPS відео доріжок без використання зовнішнього файлу позначок часу.

--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'.
--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:left,top,right,bottom | Встановлює параметри обрізання пікселів відео доріжки на задані значення.
--color-matrix 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,99.
--projection-type TID:method | Встановлює використовуваний метод проекції відео. Допустимі значення: 0 (прямокутна проекція), 1 (рівнопрямокутна проекція), 2 (проекція кубічної карти) і 3 (проекція сітки).
--projection-private TID:data | Встановлює приватні дані, які застосовуються лише до певної проекції. Дані мають бути подані у вигляді шістнадцяткових чисел з префіксом "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:character-set | Встановлює набір символів для перетворення в UTF-8 для UTF-8 субтитрів для заданого ідентифікатора доріжки. Якщо не вказано, набір символів буде отримано з поточних налаштувань мови. Зауважте, що набір символів не потрібен для читання субтитрів з файлів Matroska(tm) або з потоків Kate, оскільки вони завжди зберігаються в UTF-8. Перегляньте розділ про текстові файли та набори символів, щоб дізнатися, як mkvmerge(1) перетворює між наборами символів.

Цей параметр можна використовувати кілька разів, щоб вхідний файл застосовувався до кількох доріжок, вибираючи щоразу різні ідентифікатори доріжок.

## 2.10. Інші параметри

Option | Description
--- | ---
-i, --identify file-name | Дозволить mkvmerge(1) перевірити один файл і повідомити його тип, доріжки, що містяться у файлі, та їх ідентифікатори. Якщо використовується цей параметр, то єдиним дозволеним варіантом є ім’я файлу. Формат виводу, який використовується для результату, можна змінити за допомогою параметра --identification-format.
-J file-name | Це зручний псевдонім для "--identification-format json --identify file-name".
-F, --identification-format format | Визначає вихідний формат, що використовується параметром --identify. Наступні формати підтримуються: text (за замовчуванням, якщо цей параметр не використовується) і json.

1. Формат text є коротким і читається людиною. Він складається з одного рядка для кожного знайденого елемента (контейнер, доріжки, вкладення тощо).

   Цей формат не призначений для аналізу. Результат буде перекладено мовою, що використовує mkvmerge(1) (також дивіться --ui-language).

2. Формат виводу json є машиночитаним представленням JSON. Цей формат відповідає схемі JSON, описаній у наступному файлі:

   mkvmerge-identification-output-schema-v20.json

   Усі версії схеми JSON доступні як в Інтернеті, так і у випущених архівах вихідного коду.

--probe-range-percentage 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 priority | Встановлює приоритет, з яким виконується процес mkvmerge(1). Допустимими значеннями є 'lowest', 'lower', 'normal', 'higher' та 'highest'. Якщо нічого не задано, використовується 'normal'. На Unix-системах mkvmerge(1) використовує функцію nice(2). Тому лише суперкористувач може використовувати 'higher' та 'highest'. У Windows усі значення доступні для використання для кожного користувача.

Вибір 'найнижчий' також викликає mkvmerge(1) щоб вибрати пріоритет неактивного введення-виведення на додаток до найнижчого можливого пріоритету процесу.

--command-line-charset character-set | Встановлює набір символів для перетворення рядків заданих через командний рядок. За замовчуванням використовується набір символів для системної локалі. Ці параметри застосовуються до аргументів наступних параметрів: --title, --track-name та --attachment-description.
--output-charset character-set | Встановлює вихідний набір символів заданого в командному рядку для конвертації. Типово використовується набір символів згідно поточної локалі системи.
-r, --redirect-output file-name | Записує всі повідомлення у файл file-name, замість консолі. Хоча це можна легко зробити за допомогою переспрямування виводу, є випадки, коли цей параметр потрібний: коли термінал повторно інтерпретує вихід перед записом його у файл. Набір символів встанвлений з --output-charset враховується.
--no-bom | Normally text files that are created & encoded in one of the UTF variants will start with a byte order marker (BOM). Using this option disables writing that byte order marker.
--flush-on-close | Повідомляє програмі перенести до сховища кешовані в пам’яті дані під час закриття файлів, що були відкриті на запис. Це можна використовувати, щоб запобігти втраті даних при відключенні електроенергії або обійти певні проблеми в операційній системі чи драйверах. Недоліком є те, що мультиплексування займе більше часу, оскільки mkvmerge буде чекати, поки всі дані будуть записані в сховище, перш ніж вийти. Дивіться проблемы 2469 і 2480 баг-трекера MKVToolNix щоб дізнатися про переваги та недоліки.
--ui-language code | Використовується примусовий переклад для мови code (наприклад, 'de_DE' для німецького перекладу). Після введення list' як code програма відобразить список доступних перекладів.
--abort-on-warnings | Повідомляє програмі припинити роботу після першого попередження. Код виходу з програми буде 1.
--deterministic seed | Дозволяє створювати ідентичні до байту файли, якщо однакова версія mkvmerge(1) використовується з тими самими вихідними файлами, тим самим набором параметрів і тим самим початковим елементом. Зверніть увагу, що інформаційне поле сегмента «дата» не записується в цьому режимі.

Сід може бути довільним рядком і не обов’язково бути числом.

Результат ідентичних до байту файлів гарантується лише за таких умов:

1. Така ж версія mkvmerge(1) використовується з тими ж версіями libEBML і libMatroska.

2. Використані вхідні файли ідентичні до байта.

3. Ті самі параметри командного рядка використовуються в тому ж порядку (за винятком --output...).

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

--debug topic | Увімкнути налагодження для певної функції. Цей параметр корисний лише для розробників.
--engage feature | Вмикає експериментальні функції. Список доступних функцій можна запросити за допомогою mkvinfo --engage list. Ці функції не призначені для використання в звичайних ситуаціях.
--gui-mode | Вмикає режим графічного інтерфейсу. У цьому режимі можуть бути виведені спеціально відформатовані рядки, які можуть повідомляти керуючому графічному інтерфейсу, що відбувається. Ці повідомлення мають формат '#GUI#message'. За повідомленням можуть слідувати пари ключ/значення, як у '#GUI#message#key1=value1#key2=value2…'. Ані повідомлення, ані ключі ніколи не перекладаються і завжди виводяться англійською.
@options-file.json | Читає додаткові аргументи командного рядка з файлу options-file. Дивіться розділ про файл параметрів для додаткової інформації. Якщо ви хочете використовувати знак@як перший символ в аргументі опції, такої як '--title', вам потрібно екранувати його другим знаком @. Приклад:
    $ mkvmerge -o midnight-s01e01.mkv --title @@midnight midnight-s01e01.mp4
--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 output.mkv --title 'This and that' input.avi --title 'Something else'

Наступний приклад показує використання параметра --language двічі, що не стає проблемою завдяки тому, що вони використовується в різних сферах. Незважаючи на те, що вони застосовуються до одного ідентифікатора доріжки, вони застосовуються до різних вхідних файлів і, отже, мають різну область дії:

    $ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg

# 5. Приклади

Припустимо, у вас є файл MyMovie.avi та аудіо доріжка в окремому файлі, наприклад 'MyMovie.wav'. Спочатку ви хочете закодувати аудіо до OggVorbis(tm):

    $ oggenc -q4 -oMyMovie.ogg MyMovie.wav

Через пару хвилин ви можете з'єднати відео та аудіо:

    $ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg

Якщо ваш AVI вже містить звукову доріжку, то вона також буде скопійована (якщо mkvmerge(1) підтримує її аудіоформат). Щоб уникнути цього, просто зробіть наступне

    $ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg

Після кількох хвилин роздумів ви обираєте іншу звукову доріжку, наприклад коментарі режисера або іншомовну доріжку до 'MyMovie-add-audio.wav'. Кодуєте ще раз і об’єднуєте з іншим файлом:

    $ oggenc -q4 -oMyMovie-add-audio.ogg MyMovie-add-audio.wav
    $ mkvmerge -o MM-complete.mkv MyMovie-with-sound.mkv MyMovie-add-audio.ogg

Такого ж результату можна досягти за допомогою

    $ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg

Тепер використовуйте mplayer(tm) та насолоджуйтеся. Якщо ви маєте декілька аудіо доріжок (або навіть відео доріжок), тоді ви можете вказати mplayer(tm)-у яку доріжке програвати, використовуючи параметри '-vid' та '-aid'. Вони засновані на 0 і не розрізняють відео та аудіо.

Якщо вам потрібна синхронізація звукової доріжки, ви можете зробити це легко. Спочатку дізнайтеся, з яким ідентифікатором є доріжка Vorbis

    $ mkvmerge --identify outofsync.ogg

Тепер ви можете використовувати цей ID у наступному командному рядку:

    $ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg

Це додасть 200 мс тиші на початку звукової доріжки з ідентифікатором 12345, взятим із 'outofsync.ogg'.

Деякі фільми починають синхронізуватися правильно, але повільно втрачають її. Для таких фільмів ви можете вказати коефіцієнт затримки, який буде застосовано до всіх міток часу – дані не додаються та не видаляються. Тому якщо ви зробите цей коефіцієнт занадто великим або занадто малим, ви отримаєте погані результати. Наприклад, епізод має розсинхронізацію 0.2 секунди в кінці фільму довжиною 77340 кадрів. При частоті кадрів29.97fps 0.2 секунди становлять приблизно 6 кадрів. Тому я зробив

    $ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.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 mymovie

2. конвертує отримані зображення PGM в текст за допомогою gocr:

       $ pgm2txt mymovie

3. перевіряє орфографію отриманих текстових файлів:

       $ ispell -d american *txt

4. конвертує текстові файли у файл SRT:

       $ srttool -s -w -i mymovie.srtx -o mymovie.srt

Отриманий файл можна використовувати як інший вхідний файл для mkvmerge(1):

    $ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt

Якщо ви хочете вказати мову для певної доріжки, це легко зробити. Спочатку дізнайтеся код ISO 639-2 для вашої мови. mkvmerge(1) може перерахувати всі ці коди для вас:

    $ mkvmerge --list-languages

Знайдіть у списку потрібні мови. Припустимо, ви помістили дві звукові доріжки в файл Matroska(tm) і хочете встановити коди своїх мов, а також ідентифікатори доріжок 2 та 3. Це можна зробити за допомогою

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.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 no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt

# 6. ID доріжок

## 6.1. Ідентифікатори звичайних доріжок

Деякі параметри для mkvmerge(1) потребують ідентифікатор доріжки щоб визначити до якої доріжки вони мають бути застосовані. Ці ідентифікатори доріжок друкуються зчитувачами під час демуксування поточного вхідного файлу, або якщо mkvmerge(1) виконується з параметром --identify. Приклад такого виводу:

    $ mkvmerge -i v.mkv
    File 'v.mkv': container: Matroska
    Track ID 0: video (V_MS/VFW/FOURCC, DIV3)
    Track ID 1: audio (A_MPEG/L3)

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

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

Ідентифікатори доріжок призначаються таким чином:

- Файли AVI: відео доріжка має ідентифікатор 0. Аудіо доріжки отримують ідентифікатори в порядку зростання, починаючи з 1.

- Файли AAC, AC-3, MP3, SRT і WAV: одна доріжка у цьому файлі отримує ID 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, за замовчуванням для вихідного набору символів використовується поточний набір символів системи. У Windows для переспрямування за замовчуванням встановлено у UTF-8 за допомогою --redirect-output та з самим cmd.exe, наприклад mkvinfo file.mkv > info.txt.

# 9. Файли параметрів

Файлом параметрів є файл, з якого mkvmerge(1) може читати додаткові аргументи командного рядка. Це можна використовувати для того, щоб обійти певні обмеження оболонки або операційної системи під час виконання зовнішніх програм, наприклад, обмежена довжина командного рядка.

Файл параметрів містить дані у форматі JSON. Його вміст має бути дійсним масивом JSON, що складається виключно з рядків JSON. Кодування файлу має бути UTF-8. Файл не повинен починатися з маркера порядку байтів (BOM), але якщо він існує, його буде пропущено.

Правила екранування спеціальних символів всередині JSON відповідають офіційній специфікації JSON, RFC 7159.

Саме ім'я файлу параметрів має бути вказано як аргумент командного рядка з префіксом '@'.

Командний рядок 'mkvextract tracks source.mkv --raw 1:destination.raw' може бути перетворений на наступний конфігураційний файл:

    [
      "-o",
      "c:\\Matroska\\my file.mkv",
      "--title",
      "#65",
      "-A",
      "a movie.avi",
      "sound.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) щоб зв’язувати створені файли з конкретними SIDs. Це досягається за допомогою параметрів --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-ray або 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.

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

## 13.5. Загальні примітки

Під час розділення файлів mkvmerge(1) також правильно коригує розділи. Це означає, що кожен файл містить лише записи розділів, які до нього стосуються, і що мітки часу будуть зміщені відповідно до нових міток часу кожного вихідного файлу.

mkvmerge(1) може копіювати розділи з вхідних файлів Matroska(tm), якщо це явно не вимкнено за допомогою параметра --no-chapters. Розділи з усіх джерел (файли Matroska(tm), файли Ogg, файли MP4, текстові файли розділів) зазвичай не об’єднуються, а виходять в окремі ChapterEditions. Тільки якщо розділи читаються з кількох Matroska(tm) або XML файлів, які мають однакові ідентифікатори UID видання, будуть об’єднані в єдиний ChapterEdition. Якщо таке об'єднання є бажаним і в інших ситуаціях, користувач спочатку повинен витягти розділи з усіх джерел за допомогою mkvextract(1) потім вручну об’єднати файли 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 повідомляє, що ID відеодоріжки (не плутайте цей ідентифікатор з UID!) дорівнює 0. Отже, ви створюєте файл тегів залишаючи всі елементи Targets та виконуєте mkvmerge(1):

    $ mkvmerge -o file.mkv --tags 0:tags.xml file.avi

## 14.4. Формат файлу тегів

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

Основи:

- Самий зовнішній елемент повинен бути <Тегі>.

- Один логічний тег міститься в одній парі <Тег> тегів 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 head] [segment {meta seek #1} [segment information] [track information] {attachments} {chapters} [cluster 1] {cluster 2} ... {cluster n} {cues} {meta seek #2} {tags}]

Елементи в фігурних дужках є необов’язковими і залежать від вмісту та параметрів, що використовуються. Пара приміток:

- мета пошук №1 включає лише невелику кількість елементів рівня 1, і тільки якщо вони дійсно існують: вкладення, розділи, списки cue, теґи, мета пошук №2. Старіші версії mkvmerge(1) також використовується для розміщення кластерів у цьому мета-елементі пошуку. Тому довелося дещо неточні здогади, щоб зарезервувати достатньо місця. Це часто зазнавало невдач. Тепер тільки кластери зберігаються в мета пошуку №2, а мета пошуку №1 відноситься до мета пошуку №2.

- Елементи вкладень, розділів і теґів присутні лише в тому випадку, якщо вони були додані.

Найкоротший можливий файл Matroska(tm) буде виглядати так:

[EBML head] [segment [segment information] [track information] [cluster 1]]

Це може бути у випадку з аудіо файлами.

# 17. Зовнішні файли міток часу

mkvmerge(1) дозволяє користувачеві самостійно вибирати мітки часу для певної доріжки. Це можна використовувати для створення файлів із змінною частотою кадрів або для включення тиши у аудіо. У цьому випадку кадр є елементом, який mkvmerge(1) створює окремо для блока Matroska(tm). Для відео це рівно один кадр, для аудіо це один пакет певного типу аудіо. наприклад для AC-3 це буде пакет, що містить 1536 семплів.

Файли міток часу, які використовуються, коли доріжки додаються одна до одної, необхідно вказувати лише для першої частини ланцюжка доріжок. Наприклад, якщо ви додаєте два файли, v1.avi та v2.avi, і хочете використовувати позначки часу, ваш командний рядок має виглядати приблизно так:

    $ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi

Є чотири формати, які розпізнає mkvmerge(1). Перший рядок завжди містить номер версії. Порожні рядки, рядки, що містять лише пробіли, і рядки, що починаються з '#', ігноруються.

## 17.1. Формат файлу мітки часу версії 1

Цей формат починається з рядка версії. Другий рядок оголошує кількість кадрів за секунду за замовчуванням. Усі наступні рядки містять три числа, розділені комами: початковий кадр (0 — перший кадр), кінцевий кадр і кількість кадрів у цьому діапазоні. FPS — це число з плаваючою комою з крапкою '.' як десятковою комою. Діапазони можуть містити розриви, для яких використовується стандартне значення FPS. Наприклад:

    # Формат мітки часу версії 1
    assume 27.930
    800,1000,25
    1500,1700,30

## 17.2. Формат файлу мітки часу версії 2

У цьому форматі кожен рядок містить мітку часу для відповідного кадру. Ця мітка часу має бути вказана з точністю до мілісекунд. Це може бути число з плаваючою комою, але це не обов’язково. Ви повинні надати принаймні стільки рядків міток часу, скільки кадрів у доріжці. Мітки часу в цьому файлі повинні бути відсортовані. Приклад для 25 кадрів в секунду:

    # timestamp format v2
    0
    40
    80

## 17.3. Формат файлу мітки часу версії 3

У цьому форматі кожен рядок містить тривалість у секундах, за якою слідує необов’язкова кількість кадрів в секунду. Обидва можуть бути числами з плаваючою комою. Якщо кількість кадрів в секунду відсутня, використовується значення за замовчуванням. Для аудіо ви повинні дозволити кодеку самостійно обчислити мітки часу кадру. Для цього ви повинні використовувати 0,0 як кількість кадрів в секунду. Ви також можете створити розриви в потоці, використовуючи ключове слово 'gap', за яким слідує тривалість розриву. Приклад аудіофайлу:

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

## 17.4. Формат файлу мітки часу версії 4

Цей формат ідентичний формату 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. WWW

Остання версія завжди може бути знайдена на веб-сторінці MKVToolNix.