Работа с программой MKVToolNix (MKV).

Topic locked
 
Author Message

Серый1779 ®

Gender: Male

Longevity: 9 months 8 days

Posts: 522

Location: Украина

Post 03-Mar-2019 00:56

[Quote]

Работа с программой MKVToolNix (MKV).- 
Для работы с контейнером MKV существует родная для формата утилита MKVToolNix.

Важные изменения

4.0.0

Предупреждение: С версии 4.0.0 обновилась библиотека libMatroska, что может привести к проблемам с воспроизведением на бытовых проигрывателях выпущенных ранее. Поэтому рекомендуется в случае необходимости проигрывания на бытовых устройствах использовать более ранние версии.
Комментарий: Уже не актуально. Начиная с версии 6.0.0 сжатие заголовков по умолчанию отключено, пункт из меню настроек программы исключен.

4.1.0

Предупреждение: С версии 4.1.0 по умолчанию для всех потоков выставлено сжатие заголовков, что может быть причиной отсутствия видео и звука при проигрывании на бытовых медиапроигрывателях. Чтобы этого избежать надо выставить опцию сжатия в "None" для каждой из дорожек на вкладке "Extra options -> Compression".

Отключение сжатия заголовков

Заходим в настройки программы через меню "File -> Options"

Иллюстрация


Отмечаем пункт "Disable header removal compression for audio and video tracks by default".

Иллюстрация

5.9.0

Предупреждение: С версии 5.9.0 добавляются новые опции в структуру контейнера. Согласно спецификации mkv проигрыватель наткнувшись на не знакомые элементы должен их просто проигнорировать. Но не все проигрыватели следуют спецификации. Поэтому могут возникнуть проблемы с воспроизведением файлов созданных этой и последующими версиями сборщика. Чтобы отключить добавление дополнительной информации надо использовать параметры командной строки "--engage no_cue_duration" и "--engage no_cue_relative_position".

Отключение добавления дополнительной информации в структуру контейнера

Заходим в меню "Muxing -> Add command line options".

Иллюстрация


В появившемся окне, в нижней части вставляем параметры --engage no_cue_duration и --engage no_cue_relative_position и нажимаем "Ok".

Иллюстрация

Либо - что проще и удобнее - выбираем поочередно эти параметры из выпадающего списка "Available options" и добавляем кнопкой "Add" справа.
Чтобы эти параметры программа запомнила и использовала в дальнейшем нужно поставить галочку "Save as default for new jobs".

Иллюстрация


Проверить можно через меню "Muxing -> Show the command line".

Иллюстрация


В появившемся окне должны присутствовать параметры --engage no_cue_duration и --engage no_cue_relative_position.

Иллюстрация

7.0.0

В версии программы MKVToolNix v7.0.0 появилась новая функция (читайте ChangeLog-файл описания изменений), автоматически генерирующая и добавляющая в контейнер технические данные о каждой его основной дорожке в виде файлов Тегов при очередном мультиплексировании.

Иллюстрация

По заявлению разработчика включение данной функции обусловлено необходимостью более легкого получения данной информации для других программ.
Теги дорожек на сегодняшний день включают следующие параметры (возможно, их список будет расширяться):
  • BPS – средний битрейт (скорость передачи);
  • DURATION – продолжительность;
  • NUMBER_OF_FRAMES – количество кадров/пакетов для видео/аудио или количество записей для субтитров;
  • NUMBER_OF_BYTES – размер дорожки в Байтах;
  • _STATISTICS_WRITING_APP – информация о программе при помощи, которой был создан данный контейнер MKV;
  • _STATISTICS_WRITING_DATE_UTC – дата и время по UTC создания/обработки контейнера;
  • _STATISTICS_TAGS – информация о содержании данного файла тегов.
В MKVMergeGUI эта функция включена по умолчанию, но вы всегда можете ее отключить при помощи одного из параметров командной строки:

Иллюстрация

Перейдите в пункт меню Обработка (Muxing) --> Добавить параметры командной строки (Add command line options).
В открывшемся окне в разделе Доступные параметры: (Available options:) выберите "--disable-track-statistics-tags" и нажмите кнопку Добавить (Add).

Иллюстрация

Этот параметр пропишется в поле Параметры командной строки: (Command line options:). При желании можете Сохранить как параметры по умолчанию для новых заданий (Save as default for new jobs) и далее жмите OK.
Автор комментария - Alofa

Рекомендация: Если нужно поменять какие то атрибуты вроде названия потоков или их языка, это можно сделать без пересборки контейнера. Для этих целей есть редактор заголовков.

Использование редактора заголовков

Редактор заголовка запускается через меню "MKVToolNix GUI -> Header editor" утилиты "mkvmerge GUI".

Иллюстрация

Чтобы открыть в нем редактируемый файл можно воспользоваться пунктом меню "File -> Open" или просто перетащить нужный файл из проводника операционной системы в окно программы.
После анализа файла в левой части окна программы будет выведен список потоков ролика.

Иллюстрация

Разворачивая дерево атрибутов потока можно получить доступ к некоторым свойствам. Свойства можно добавлять или удалять устанавливая галочки "Add element" или "Remove element" соответственно. Если изменить свойство можно, то в правой части окна будет доступно поле ввода для значения. В противном же случае поля ввода будут неактивны. То же самое применимо и для добавления/удаления свойств.

Иллюстрация

Изменение наименования потока. Изменение языка потока. Добавление свойства обрезки кадра слева и установка значения этого свойства равного 10 пикселям.
После внесения изменений нужно их сохранить через меню "File -> Save".
Свойства, смысл которых вам не понятен, изменять не рекомендуется.

Первым делом советую перенастроить формат вывода для раздела "Multiplexer". Необходимая настройка находится в меню "MKVToolNix GUI -> Preferences -> Multiplexer -> Layout". Нужно переключить опцию "Position for the track properties on the 'input' tab" в положение "In a tab widget below the files and tracks". В таком виде площадь формы используется более рационально.

Иллюстрация


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

Ввод данных

Концепция ввода данных состоит в том чтобы добавить исходные фрагменты из составляющих потоков которых можно будет собрать результат. Так же есть возможность добавления очередного фрагмента в дополнение к уже существующему.
Загрузка исходных фрагментов осуществляется тремя способами:
  • при помощи кнопки "Add source file" в нижней части окна программы
  • при помощи контекстного меню раздела "Source files" вкладки "Input"
  • при помощи перетаскивания файла в область раздела "Source files" вкладки "Input" окна программы

Кнопка "Add source files" и контекстное меню раздела "Source files" имеют схожий принцип функционирования. Пункт "Add files" вызывает диалог выбора файла. Если в разделе "Source files" выбран какой либо фрагмент, то в меню становится доступен пункт "Append files" позволяющий присоединить новый фрагмент к уже выбранному.

Иллюстрация


В случае перетаскивания файлов в область раздела "Source files" вкладки "Input" окна программы без вопросов добавляется только первый и единственный файл. В остальных случаях будет выведен диалог выбора действия:
  • "Add as new source files to the current multiplex settings" - перетаскиваемый набор файлов добавляется на текущий монтажный стол в качестве исходных фрагментов.
  • "Create new multiplex settings and add to those" - перетаскиваемый набор файлов будет помещен в качестве исходных фрагментов на новый монтажный стол.
  • "Create new multiplex settings for each file" - каждый файл перетаскиваемого набора файлов будет помещен на новый монтажный стол.
  • "Append to an existing source file" - набор файлов будет добавлен к выбранному ниже фрагменту в дополнение на текущем монтажном столе.
  • "Add as additional parts to an existing source file" - аналогично предыдущему пункту, но без учета структуры, т.е. как просто файлы (нужно в случае, когда видео было разбито на фрагменты как любой другой файл, например, запись потока кусками при просмотре онлайн).

Иллюстрация


Удаление какого либо фрагмента осуществляется через пункт "Remove file" контекстного меню, либо клавишей "Delete" на клавиатуре. Так же доступно удаление всех фрагментов через пункт "Remove all files".

Вывод результата и прогресс выполнения

Путь выходного файла нужно указать в нижней части окна программы в поле "Destination file". После этого жмем правее кнопку "Start multiplexing", которая помещает задачу в очередь с автоматическим исполнением согласно существующему порядку очереди. Либо можно кнопкой "Add to job queue" поместить задачу в очередь с ожиданием ручного запуска.
За процессом можно следить либо по строке состояния окна программы, которая расположена в самом низу. На ней отображается количество задач с автоматическим запуском, ручным запуском и уже запущенных, количество предупреждений и ошибок, а так же процент выполнения исполняемой задачи и общий процент выполнения относительно запланированных задач. Более подробную информацию можно посмотреть в разделе "Job output", где находится общий лог выполнения задач.

Иллюстрация

Вырезать фрагмент / удалить фрагмент

Переходим на вкладку "Output". Нас интересует раздел "Splitting", опция "Split mode". Доступны несколько режимов, настройки которых вводятся строкой ниже.
  • "Do not split" - режим отключен.
  • "After output size" - резка на одинаковые фрагменты по размеру (например, на болванки CD-R), можно указать свое значение или выбрать из списка, настройки задаются в поле "Size" расположенном строкой ниже.
  • "After output duration" - резка на одинаковые фрагменты по продолжительности, длина фрагмента задается в формате HH:MM:SS.nnnnnnnnn" (HH - часы, MM - минуты, SS - секунды, n - миллисекунды), так же длину можно указывать в секундах с добавлением литеры "s" после значения, настройки задаются в поле "Duration" расположенном строкой ниже.
  • "After specific timecodes" - резка по заданным временным меткам перечисленным через запятую, настройки задаются в поле "Timecodes" расположенном строкой ниже.
  • "By parts based on frame/field numbers" - опция служит для нарезки как угодно по временным меткам, настройки задаются в поле "Parts" расположенном строкой ниже.
    • можно перечислить метки разреза через запятую и программа нарежет файл по заданным меткам.
    • можно указать диапазон через дефис и программа вырежет заданный фрагмент.
    • можно указать несколько диапазонов через запятую и программа вырежет их и поместит в отдельные файлы.
    • можно указать несколько диапазонов через знак "+" и программа запишет их в один файл, соответственно для удаления понадобится указать через знак "+" только фрагменты до вырезаемого и после.
  • "By parts based on frame/field numbers" - аналогично предыдущему пункту (только метками будут номера кадров или полей в случае чересстрочного видео), настройки задаются в поле "Parts" расположенном строкой ниже.
  • "After frame/field numbers" - резка по заданным номерам кадров или полей в случае чересстрочного видео, настройки задаются в поле "Frames/fields" расположенном строкой ниже.
  • "Before chapters" - режим резки с использованием списка глав, для резки только по нужным главам надо перечислить их номера через запятую, чтобы разрезать по всем главам нужно ввести слово "all", настройки задаются в поле "Chapter numbers" расположенном строкой ниже.

Иллюстрация

Опция "Maximum number of files" позволяет ограничить количество фрагментов, если вам нужны, допустим, только первые два.
Опция "Link files" позволяет автоматически связать разрезанные фрагменты, чтобы во время воспроизведения все выглядело как цельный фильм при условии, что файлы останутся лежать в одной директории.
Резка осуществляется с ближайшего последующего ключевого кадра относительно указанных меток.

Склеить два фрагмента

Добавляем первый фрагмент пунктом "Add files" контекстного меню или меню по кнопке "Add source files", либо просто перетаскиваем файл на область раздела "Source files" вкладки "Input" окна программы.

Иллюстрация


Добавляем последующие фрагменты пунктом "Append files" контекстного меню или меню по кнопке "Add source files", либо просто перетаскиваем файлы на область раздела "Source files" вкладки "Input" окна программы.
Чтобы стал доступен соответствующий пункт меню в первом случае контекстное меню нужно вызвать кликнув по уже загруженному первому фрагменту, во втором случае первый фрагмент должен быть выделен, т.е. на нем должен находиться курсор (строка выделения). В третьем случае будет задан вопрос что делать с перетаскиваемыми файлами - нужно выбрать пункт меню "Append to an existing source file" и указать первый фрагмент в нижней части окна диалога.

Иллюстрация


Остается только запустить выполнение задачи.
Рекомендация: Если при склейке двух фрагментов при воспроизведении второго отображается серый квадрат, то единственный рабочий способ решить эту проблему заключается в соединении сырых (raw) потоков "*.h264" извлеченных при помощи eac3to.
[Profile] [PM]

Серый1779 ®

Gender: Male

Longevity: 9 months 8 days

Posts: 522

Location: Украина

Post 03-Mar-2019 00:59 (after 2 minutes)

[Quote]

Добавить/удалить аудио дорожку/субтитры

Добавляем все ингредиенты при помощи пункта "Add files" контекстного меню или меню по кнопке "Add source files", либо просто перетаскиваем файлы на область раздела "Source files" вкладки "Input" окна программы. Оставляем галочки в списке нужных потоков "Tracks, chapters and tags". Нужный порядок задается простым перетаскиванием потоков на желаемые места. Для каждого потока есть возможность указать различные параметры.

Иллюстрация


На вкладке "General options" отображаются основные свойства:
  • "Copy this item" - определяет будет ли поток добавлен к результату, возможные значения "Yes" / "No".
  • "Track name" - определяет наименование потока для более удобного обозначения (например, "Комментарии режиссера", "Дубляж", "Закадровый").
  • "Language" - определяет язык потока, доступен выбор из списка.
  • "Default track" - выбор потока по-умолчанию, который будет предпочитаться проигрывателем при прочих равных условиях, возможные значения "Yes" / "No" и автоматическое определение (которое включено по-умолчанию).
  • "Forced track" - выбор принудительного воспроизведения потока (например, полезно для субтитров только с переводом надписей), возможные значения "Yes" / "No".
  • "Compression" - выбор сжатия заголовка потока, включение (выбор "zlib") может вызывать проблемы при воспроизведении на бытовых проигрывателях, возможные значения "No extra compression" / "zlib" и автоматическое определение (которое включено по-умолчанию).
  • "Tags" - файл со списком меток в XML формате.

Иллюстрация


На вкладке "Timecodes and default duration" отображаются операционные свойства:
  • "Delay (in ms)" - задержка (смещение) потока (возможно как положительное значение, так и отрицательное для опережения), задается в миллисекундах.
  • "Stretch by" - сжатие/растяжение дорожки, задается коэффициент изменения продолжительности относительно единицы (меньше - сжатие, больше - растяжение).
  • "Default duration/FPS" - скорость воспроизведения видеопотока, задается в виде рационального числа (либо дроби с целыми значениями), так же доступен выбор из списка базовых значений.
  • "Timecode file" - файл со списком временных меток и скоростью воспроизведения начиная с указанной метки, позволяет задавать переменную скорость воспроизведения.

Иллюстрация


Примечание: Если субтитры в формате S_TEXT/ASS, в которых используются специальные шрифты, то файлы шрифтов также надо добавить.

Извлечь поток (видео/аудио дорожку/субтитры/главы)

mkvExtractGUI-2

Содержимое архива нужно распаковать и перенести файлы в папку, где установлен MKVToolNix.

Иллюстрация


1. Выбираем подопытного. Также можно перетащить нужный файл мышкой на окно программы.
2. Указываем путь для сохранения потоков. Если отметить поле "Source Dir", то потоки будут сохранены рядом с исходным файлом.
3. Этими псевдокнопками можно либо снять выделение всех потоков (кнопка слева), либо выделить все потоки (кнопка справа).
4. Отмечаем нужные для извлечения потоки.
5. Запускаем процесс. В нижней части окна будет отображаться прогресс в виде процентов.

MKVcleaver

Скачиваем и устанавливаем программу.
Удобство этой программы в потоковой обработке нескольких файлов.

Иллюстрация

После запуска нужно нажать на кнопку "Locate MKVToolNix..." и указать папку где установлен mkvToolNix
1. Добавить файлы в программу можно либо при помощи кнопки "Open MKV files to process..." либо перетащив их мышкой на окно программы. Чтобы удалить файл из списка нужно отметить его и нажать кнопку "Remove selected files from list".
2. В нижней части программы, в разделе "Output directory" нужно указать папку куда сохранять извлеченные потоки. Если не указывать, то потоки будут извлекаться в ту же директорию, что и исходный файл.
3. В левой части можно отметить какие потоки надо извлекать у каждого файла.
4. Справа, в разделе "Tracks to extract (Batch Mode)" можно задать общее условие для извлечения потоков и прочего содержимого контейнера. Т.е. извлечь из каждого файла такую то по счету аудиодорожку (Audio Track) или субтитры (Subtitle Track), извлечь прикрепленные файлы (Attachments), таймкоды (Timecodes), главы (Chapters) или тэги (Tags).
5. В поле "Filename options" можно настроить как будут именоваться извлеченные потоки. Первый вариант - "номер трэка - имя файла", второй - наоборот. Если во втором случае отметить опцию "Use 'Video', 'Audio' and 'Subtitle'", то вместо слова "Track" будет прописываться тип потока.
6. Для запуска нужно нажать кнопку "Extract Tracks!". Она становится активной только в том случае, если в одном из файлов есть что извлекать.

При помощи командной строки

Командная строка вызывается через меню "Пуск -> Выполнить". Далее вводим "cmd" и нажимаем "Enter".
Любой поток извлекается следующей командой:
"C:\mkvmerge\mkvextract.exe" tracks "c:\movie.mkv" 2:"c:\audio1.ac3"

Так же можно извлекать сразу несколько потоков:
"C:\mkvmerge\mkvextract.exe" tracks "c:\movie.mkv" 2:"c:\audio1.ac3" 3:"c:\audio2.flac"

Чтобы извлечь главы:
"C:\mkvmerge\mkvextract.exe" chapters "c:\movie.mkv" --redirect-output "c:\chapters.xml"

Чтобы извлечь тэги:
"C:\mkvmerge\mkvextract.exe" tags "c:\movie.mkv" --redirect-output "c:\tags.xml"

Чтобы извлечь тайм-коды:
"C:\mkvmerge\mkvextract.exe" timecodes_v2 "c:\movie.mkv" --redirect-output "c:\timecodes.txt"

Чтобы извлечь прикрепленные файлы:
"C:\mkvmerge\mkvextract.exe" attachments "c:\movie.mkv" 1:"c:\attachment1" 2:"c:\attachment2"
Прикрепленные файлы имеют собственную отдельную от потоков нумерацию.
Оригинальное название каждого вложения можно посмотреть через mkvMerge на вкладке Attachments.

Иллюстрация

Изменить fps видео

Для изменения скорости воспроизведения нужно указать желаемое значение в свойствах видеопотока в поле "Default duration/FPS" раздела "Timecodes and default duration", задается в виде рационального числа (либо дроби с целыми значениями), так же доступен выбор из списка базовых значений.

Иллюстрация


Для чересстрочного видео нужно выставлять частоту кадров в два раза большую. Определить это можно, если при выставлении оригинальной частоты кадров продолжительность увеличивается в 2 раза.
Так же может быть такая ситуация, что поток на самом деле явно прогрессивный, а исходная частота кадров - 29.970i. В этом случае надо обработать поток одной из программ:
h264info - для потока h264/AVC
vc1conv - для потока VC-1
В результате получим поток с честной частотой кадров равной 23.976p.

Crop без пересжатия

Эта фича будет работать только в случае, если устройство или программный плеер поддерживают такую опцию.
В списке "Tracks, chapter and tags" выбираем видеодорожку. Она обычно идет первой. Ниже переходим на закладку "Video properties" и в поле "Cropping" вписываем через запятую значения отрезаемых полос слева, сверху, справа, снизу.

Иллюстрация

Определение задержки потока

После выставления задержки для какого либо потока эта информация при открытии файла не отображается в поле задержки. А задержка никуда не делась. Чтобы определить задержку нужно воспользоваться утилитой mkvInfo из состава mkvToolNix. Последние версии надо запускать с ключом "--gui" или "-g" чтобы работать с привычным оконным интерфейсом. Самый простой способ - создать ярлык на "mkvInfo.exe" и в его свойствах, в строку запуска добавить этот ключ.

Иллюстрация


Далее перетаскиваем на окно нужный mkv и включаем расширенный режим отображения через меню "Options -> Show all elements".

Иллюстрация


Возможно потребуется некоторое время, чтобы программа вывела всю детальную информацию. В нижнем левом углу окна утилиты можно следить за процессом.
Теперь нужно обратить внимание на раздел "Segment..." и найти в нем первый подраздел "Cluster...".

Иллюстрация


Раскрываем его и ищем первую запись, где упоминается номер потока, для которого надо определить задержку. В рассматриваемом примере потоков три. 1 - видео, 2/3 - аудио. Для последних двух и определим задержку относительно видео.

Иллюстрация


Получаем следующие данные:
Задержка потока №1: 29.880с
Задержка потока №2: 29.382с
Задержка потока №3: 29.467с
Теперь, поскольку нам требуются задержки аудио относительно видео нужно посчитать разницу между задержками аудио и видео потоков, т.е.
Задержка потока №2 относительно потока №1: 29.382 - 29.880 = -498мс
Задержка потока №3 относительно потока №1: 29.467 - 29.880 = -413мс
В качестве примера взята запись со спутника. Поэтому присутствует задержка для видеопотока. Обычно же в скачиваемых фильмах задержки у видеопотока нет, т.е. видимая в mkvInfo задержка и есть искомой.
Поскольку задержка потока не отображается в его свойствах при открытии mkv через mkvMerge, то есть один момент, который надо учитывать. При указании задержки в поле "Delay" она суммируется с той, которая уже была.

Так же задержку можно посмотреть при помощи MediaInfo.

Создание глав и нескольких версий фильма

Просто главы

Для создания и добавления глав открывать изначально какой либо видеофайл не надо.
Выбираем раздел "Chapter editor", нажимаем кнопку "New". Первая глава уже добавлена.

Иллюстрация


Далее можно добавить еще главы при помощи контекстного меню.
  • "Add new chapter before" - добавить главу перед текущей.
  • "Add new chapter after" - добавить главу после текущей.
  • "Add new sub-chapter inside" - добавить вложенную главу.

Теперь выбираем первую главу и становятся доступны её опции:
  • "Start" - время начала главы относительно видеопотока (задается как HH.MM.SS.nnn).
  • "End" - время окончания главы относительно видеопотока (задается как HH.MM.SS.nnn).
  • "Enabled" - если снять флажок, то глава будет пропущена при проигрывании.
  • "Hidden" - при выставленном флажке глава будет недоступна для выбора в списке глав.
  • "Segment UID" - идентификатор главы, уникальный для каждой.
  • "Name" - название главы.
  • "Language" - языковая принадлежность главы.
  • "Country" - страна главы.
Время окончания главы можно не указывать, оно просто не будет учитываться.
Так же можно не указывать "UID" и "Name". Но без названия будет совсем неудобно...

Иллюстрация


Редактор глав является независимой утилитой и никак не связан с частью программы отвечающей за микширование. Поэтому для использования созданного списка глав есть два пути:

Иллюстрация


1. Через пункт меню "Chapter Editor -> Save to Matroska file" сохранить сразу в нужное видео. Причем это происходит существенно быстрее, чем второй способ, т.к. в этом случае просто вносятся изменения в указанный файл.
2. Сохранить список глав в отдельный файл через меню "Chapter Editor -> Save as XML file". Открыть нужное видео в разделе "Multiplexer", указать файл глав на закладке "Output" в поле "Chapter file", не забыв на вкладке "Input" снять галку с исходного потока глав, если таковой был. Остается только сохранить результат.

Иллюстрация

Сохраненный в отдельный файл список глав можно в любой момент открыть через пункт меню "Chapter Editor -> Open Matroska or chapter file" и редактировать дальше.
Стандартно доступ к списку глав (к верхнему уровню вложенности) при просмотре можно получить через Haali Media Splitter (он же Matroska Splitter) кликнув правой кнопкой мышки по значку контейнера в трее при запущенном фильме.

Иллюстрация


Примечание: Не каждый проигрыватель способен показать все уровни вложенности. Одним из таких является VLC.

Упорядоченные главы

Просто главы - это фактически точки поиска в видеопотоке.
Упорядоченные главы позволяют задавать виртуальную шкалу времени.
Для того, чтобы включить этот режим нужно в файл глав добавить тег "<EditionFlagOrdered>1</EditionFlagOrdered>".
Это придется делать вручную, программа не позволяет использовать эту опцию.

Пример файла глав (chapters.xml&#41;

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Chapters>
  <EditionEntry>
    <EditionFlagOrdered>1</EditionFlagOrdered>
    <EditionFlagHidden>0</EditionFlagHidden>
    <EditionFlagDefault>0</EditionFlagDefault>
    <EditionUID>418778243</EditionUID>
    <ChapterAtom>
      <ChapterDisplay>
        <ChapterString>Opening</ChapterString>
        <ChapterLanguage>und</ChapterLanguage>
      </ChapterDisplay>
      <ChapterUID>3825996674</ChapterUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterDisplay>
        <ChapterString>Serie #1</ChapterString>
        <ChapterLanguage>und</ChapterLanguage>
      </ChapterDisplay>
      <ChapterUID>2294809483</ChapterUID>
      <ChapterTimeStart>00:00:05.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterDisplay>
        <ChapterString>Ending</ChapterString>
        <ChapterLanguage>und</ChapterLanguage>
      </ChapterDisplay>
      <ChapterUID>3630189237</ChapterUID>
      <ChapterTimeStart>00:00:25.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
    </ChapterAtom>
  </EditionEntry>
</Chapters>
Так изменяется и отображаемый список глав - появляется указатель, который показывает текущий активный фрагмент.

Иллюстрация

Доработаем список глав - проставим время их окончания.

Иллюстрация

Теперь будут проигрываться только существующие главы, а плейер будет показывать продолжительность фильма как сумму продолжительности активных глав. Если конечное время не указывать, то окончанием текущей главы будет считаться начало следующей или конец видеопотока.
Желательно чтобы каждая глава начиналась с ключевого кадра, иначе будут задержки при переходе к главе, которая начинается не с ключевого кадра.

Версии фильма и произвольный порядок проигрывания

Доработаем файл глав - добавим еще один раздел "EditionEntry" и так же заполним параметры его глав.

Иллюстрация

Сохраняем изменения, не забываем вставить для обоих разделов "EditionEntry" тэг упорядоченных глав.
Собираем фильм и запускаем. Меню в трее примет следующий вид:

Иллюстрация

Вот и получили две версии фильма, а точнее два варианта проигрывания одного и того же видеопотока.
С помощью упорядоченных глав можно задавать любой порядок проигрывания видеопотока, точнее - его частей.
В примере показана ситуация, когда в видеопотоке в хронологическом порядке записаны следующие части: заставка, сюжет первой серии, сюжет второй серии, титры. При выборе любого из потоков будет проигрываться как заставка так и титры, а вот сюжетная часть будет уже своя. Т.е. это дает экономию при записи сериала. Аналогично устроены и разные версии фильма, например, режиссерская версия и её часть - театральная. Либо режиссерская, расширенная и театральная, которые могут иметь уникальные части.
Осталась еще одна мелочь - имена версий. Ведь неудобно когда они называются "Edition 1", "Edition 2" и т.д.
Это можно исправить указав на закладке "Output" в поле "Global tags" созданный в ручную xml-файл следующего содержания:

Пример файла тэгов (tags.xml&#41;

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
<Tag>
  <Targets>
   <EditionUID>418778243</EditionUID>
   <TargetTypeValue>50</TargetTypeValue>
  </Targets>
  <Simple>
   <Name>TITLE</Name>
   <String>Serie #1</String>
   <TagLanguage>und</TagLanguage>
   <DefaultLanguage>1</DefaultLanguage>
  </Simple>
</Tag>
<Tag>
  <Targets>
   <EditionUID>475116935</EditionUID>
   <TargetTypeValue>50</TargetTypeValue>
  </Targets>
  <Simple>
   <Name>TITLE</Name>
   <String>Serie #2</String>
   <TagLanguage>und</TagLanguage>
   <DefaultLanguage>1</DefaultLanguage>
  </Simple>
</Tag>
</Tags>
Ключевой момент здесь - указать теже "EditionUID", что и в файле глав.
В тегах "<String></String>" указываем желаемое имя версии.

Иллюстрация

В итоге получим информативное меню версий:

Иллюстрация


Так же может быть полезной возможность прицепить к версии включение определенной связки дорожек. Это не является частью спецификаций контейнера. Такую возможность обеспечивает Haali Media Splitter.
Для реализации нужно добавить в файл тэгов раздел с:
- именем "TRACKSETEX"
- строкой вида "EditionUID VideotrackUID AudiotrackUID SubtitletrackUID Three-letter_language_code Optional_name", где "Three-letter_language_code" - трехбуквенное обозначение аудиопотока, а "Optional_name" - наименование связки (набора дорожек).
Соответствующие нужным трекам UID можно посмотреть через mkvInfo.
Вместо UID любого трека можно указать "." что будет оставлять соответствующий вид потока без изменений.
Вместо UID трека субтитров можно указать "x" что будет означать отключение потока субтитров.
При выборе какой либо версии активируется привязанный к её UID набор дорожек. В указанном ниже примере:
- при выборе "Serie #1" включится русская дорожка без субтитров. (набор "for Serie #1")
- при выборе "Serie #2" включится английская дорожка с указанным потоком субтитров. (набор "for Serie #2")

Пример файла тэгов (tags.xml&#41;

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Tags>
<Tag>
  <Targets>
   <EditionUID>418778243</EditionUID>
   <TargetTypeValue>50</TargetTypeValue>
  </Targets>
  <Simple>
   <Name>TITLE</Name>
   <String>Serie #1</String>
   <TagLanguage>und</TagLanguage>
   <DefaultLanguage>1</DefaultLanguage>
  </Simple>
</Tag>
<Tag>
  <Targets>
   <EditionUID>475116935</EditionUID>
   <TargetTypeValue>50</TargetTypeValue>
  </Targets>
  <Simple>
   <Name>TITLE</Name>
   <String>Serie #2</String>
   <TagLanguage>und</TagLanguage>
   <DefaultLanguage>1</DefaultLanguage>
  </Simple>
</Tag>
<Tag>
  <Simple>
   <Name>TRACKSETEX</Name>
   <String>418778243 . 1229391496 x rus for Serie #1</String>
  </Simple>
  <Simple>
   <Name>TRACKSETEX</Name>
   <String>475116935 . 4229142712 1107776681 eng for Serie #2</String>
  </Simple>
</Tag>
</Tags>
В результате в меню Haali Media Splitter появится возможность выбора связки потоков (Track sets):

Иллюстрация

Сегменты и связывание разных файлов (линкованное видео&#41;

При помощи сегментов можно связать любые файлы mkv с одинаковыми параметрами (набор дорожек, кодеки).
Самый простой способ применения - связать две части одного фильма. Как более интересный способ применения - воспроизведение сериала, который разбит на заставку, титры и собственно сам сюжет серии в виде отдельный файлов. Можно сделать так, чтобы в начале каждой серии запускалась заставка, а в конце - титры.
Реализуется связывание следующим образом: при запуске файла, в котором прописаны связи, сканируется содержимое каталога с целью найти файл с указанным идентификатором. Не важно как назван файл, ориентир - идентификатор файла.
Чтобы определить идентификатор файла нужно воспользоваться утилитой mkvinfo из комплекта MKVToolNix. Последние версии надо запускать с ключом "---gui" чтобы работать с привычным оконным интерфейсом. Самый простой способ - создать ярлык на "mkvInfo.exe" и в его свойствах, в строку запуска добавить этот ключ.

Иллюстрация


Открываем в ней файл который собираемся прицепить и получаем искомый идентификатор.

Иллюстрация

Далее открываем в разделе "Multiplexer" файл к которому собираемся прицепить и на закладке "Output" в секции "File/Segment linkimg" прописываем идентификаторы связываемых файлов.
  • "Previous segment UID" - предыдущего файла.
  • "Next segment UID" - последующего файла.

Иллюстрация

Так же есть возможность ссылаться не на весь файл целиком, а на его произвольную часть.
Для этого в файле глав надо указать ссылку (идентификатор) на нужный файл в тэгах "<ChapterSegmentUID format="hex"></ChapterSegmentUID>" и указанный промежуток будет подцепляться из внешнего файла. Префикс "0x" перед каждой цифрой не обязателен. Так же не обязательно указывать ссылку на сам внешний файл, т.е. строка "<ChapterUID>3825996674</ChapterUID>" в примере ниже не обязательна.
Время начала всегда определяется в пределах локальной шкалы видео из которого берется фрагмент.

Пример файла глав (chapters.xml&#41;

<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->
<Chapters>
  <EditionEntry>
    <EditionFlagOrdered>1</EditionFlagOrdered>
    <EditionFlagHidden>0</EditionFlagHidden>
    <EditionFlagDefault>0</EditionFlagDefault>
    <EditionUID>418778243</EditionUID>
    <ChapterAtom>
      <ChapterDisplay>
        <ChapterString>Opening</ChapterString>
        <ChapterLanguage>und</ChapterLanguage>
      </ChapterDisplay>
      <ChapterUID>3825996674</ChapterUID>
      <ChapterSegmentUID format="hex">a8 e4 31 81 50 88 16 5f 86 a3 6c 99 0f 07 fa 0a</ChapterSegmentUID>
      <ChapterTimeStart>00:00:00.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterDisplay>
        <ChapterString>Serie #1</ChapterString>
        <ChapterLanguage>und</ChapterLanguage>
      </ChapterDisplay>
      <ChapterUID>2294809483</ChapterUID>
      <ChapterTimeStart>00:00:05.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
    </ChapterAtom>
    <ChapterAtom>
      <ChapterDisplay>
        <ChapterString>Ending</ChapterString>
        <ChapterLanguage>und</ChapterLanguage>
      </ChapterDisplay>
      <ChapterUID>3630189237</ChapterUID>
      <ChapterTimeStart>00:00:25.000000000</ChapterTimeStart>
      <ChapterFlagHidden>0</ChapterFlagHidden>
      <ChapterFlagEnabled>1</ChapterFlagEnabled>
    </ChapterAtom>
  </EditionEntry>
</Chapters>
Источник информации на английском языке.
[Profile] [PM]
Display posts:    
Topic locked

Current time is: 20-Aug 22:11

All times are UTC + 3



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum