mkvpropedit -- Смена свойств существующих файлов Matroska(tm) без полного ремультиплексирования

Table of contents

1. Краткое содержание

mkvpropedit параметры {имя-исходного-файла} {действия}

2. Описание

Это приложение анализирует существующий файл Matroska(tm) и изменяет некоторые его свойства. Затем оно записывает эти изменения в существующий файл. Среди свойств, которые можно изменить, есть элементы информации о сегментах (например, название) и заголовки дорожек (например, код языка, флаг «дорожка по умолчанию» или название).

Параметры:

Option Description
-l, --list-property-names

Перечисляет все известные и редактируемые имена свойств, их тип (строка, целое число, логическое значение и т. п) и краткое описание. После этого программа завершается. Поэтому параметр source-filename не нужно указывать.

-p, --parse-mode режим

Устанавливает режим разбора. Параметр 'режим' может быть 'быстрым' (которым он также является по умолчанию) или 'полным'. 'Быстрый' режим не анализирует весь файл, а использует мета-элементы поиска для поиска необходимых элементов исходного файла. В 99 % случаев этого достаточно. Но для файлов, которые не содержат элементов метапоиска или повреждённых, пользователю придётся установить 'полный' режим анализа. Полное сканирование файла может занять несколько минут, а быстрое сканирование займёт всего несколько секунд.

Действия для работы с дорожками и свойствами информационных сегментов:

Option Description
-e, --edit selector

Устанавливает раздел файла Matroska(tm) (информацию о сегменте или заголовках определенной дорожки), с которым действуют все последующие действия add, set и delete. Этот параметр можно использовать несколько раз для внесения изменений в несколько элементов.

По умолчанию mkvpropedit(1) будет править раздел информации о сегменте.

Смотрите раздел редактирование селекторов для полного описания синтаксиса.

-a, --add name=значение

Добавляет свойство name со значением. Свойство будет добавлено, даже если оно уже существует. Примечание: большинство свойств уникально и не могут встречаться более одного раза.

-s, --set name=значение

Задаёт для всех вхождений свойства имя значение переменной. Если такого свойства не существует, то оно будет добавлено.

-d, --delete name

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

Действия для работы с тегами и главами:

Option Description
-t, --tags selector:имя-файла

Добавляет или заменяет теги в файле на теги из filename или удаляет их, если filename пуст. mkvpropedit(1) читает те же форматы тегов XML, которые читает и mkvmerge(1).

selector должен быть одним из слов all, global или track. Для all mkvpropedit(1) заменит или удалит все теги в файле. С global только глобальные теги будут заменены или удалены.

С дорожкой mkvpropedit(1) заменит теги для определённой дорожки. Кроме того, теги, прочитанные из filename, будут назначены той же дорожке. Дорожка указывается так же, как указываются селекторы редактирования (см. ниже), например, --tags track:a1:new-audio-tags.xml.

--add-track-statistics-tags

Вычисляет статистику для всех треков в файле и добавляет новые теги статистики для них. Если файл уже содержит эти теги, то они будут обновлены.

--delete-track-statistics-tags

Удаляет все метки статистики существующей дорожки из файла. Если в файле нет меток статистики дорожки, они не будут изменены.

-c, --chapters имя-файла

Добавляет или заменяет главы в файле соответствующим из filename или удаляет их, если filename пуст. mkvpropedit(1) считывает те же XML и простые форматы глав, что и mkvmerge(1).

Действия для обработки вложений:

Option Description
--add-attachment имя-файла

Добавляет новое вложение из имя-файла.

Если параметр --attachment-name использовался до этого параметра, его значение используется как имя нового вложения. Иначе он является производным от filename.

Если параметр --attachment-mime-type использовался до этого параметра, его значение используется как тип MIME нового вложения. Иначе он автоматически обнаруживается из содержимого filename.

Если параметр --attachment-description использовался до этого параметра, его значение используется как описание нового вложения. Иначе описание не устанавливается.

Если параметр --attachment-uid использовался до этого параметра, его значение используется как UID нового вложения. В ином случае будет автоматически создан случайный UID.

--replace-attachment селектор:имя-файла

Заменяет одно или несколько вложений, которые совпадают с selector по filename файла. Если более одного доступного вложения соответствует selector, то всё их содержимое будет заменено содержимым filename.

selector может иметь одну из четырёх форм. Они описаны ниже в разделе селекторы вложений.

Если параметр --attachment-name использовался до этого параметра, его значение устанавливается в виде нового имени для каждого изменённого вложения. Иначе имена не меняются.

Если параметр --attachment-mime-type использовался до этого параметра, его значение устанавливается в виде нового типа MIME для каждого изменённого вложения. Иначе типы MIME не меняются.

Если параметр --attachment-description использовался до этого параметра, его значение устанавливается в виде нового описания для каждого изменённого вложения. Иначе описания не меняются.

Если параметр --attachment-uid использовался до этого параметра, его значение устанавливается в виде нового UID для каждого изменённого вложения. Иначе UID не меняются.

--update-attachment селектор

Указывает свойства для одного и более вложений, которые совпадают с селектором. Если более одного вложений совпадают с селектором, тогда все их свойства будут обновлены.

selector может иметь одну из четырёх форм. Они описаны ниже в разделе селекторы вложений.

Если параметр --attachment-name использовался до этого параметра, его значение устанавливается в виде нового имени для каждого изменённого вложения. Иначе имена не меняются.

Если параметр --attachment-mime-type использовался до этого параметра, его значение устанавливается в виде нового типа MIME для каждого изменённого вложения. Иначе типы MIME не меняются.

Если параметр --attachment-description использовался до этого параметра, его значение устанавливается в виде нового описания для каждого изменённого вложения. Иначе описания не меняются.

Если параметр --attachment-uid использовался до этого параметра, его значение устанавливается в виде нового UID для каждого изменённого вложения. Иначе UID не меняются.

--delete-attachment селектор

Удаляет одно или несколько вложений подходящих под селектор

selector может иметь одну из четырёх форм. Они описаны ниже в разделе селекторы вложений.

Параметры действий над вложениями:

Option Description
--attachment-name имя

Задаёт использование имени для следующей операции --add-attachment или --replace-attachment.

--attachment-mime-type тип-mime

Задаёт использование типа MIME для следующей операции --add-attachment или --replace-attachment.

--attachment-description описание

Задаёт использование описания для следующей операции --add-attachment или --replace-attachment.

--enable-legacy-font-mime-types

Позволяет использовать устаревшие типы MIME для определённых типов вложений шрифтов. Например, «application/x-truetype-font» будет использоваться для шрифтов TrueType вместо «fonts/ttf».

Это влияет как на добавление новых вложений, так и на замену существующих вложений, но только если новый тип MIME не указан. Другие доступные вложения не меняются.

Затрагиваются типы MIME: «font/sfnt», «font/ttf» и «font/collection»; они сопоставляются с «application/x-truetype-fonts» и «font/otf», который сопоставляется с «application/vnd .ms-opentype».

Прочие параметры:

Option Description
--disable-language-ietf

Обычно, когда пользователь запрашивает изменения в свойстве заголовка дорожки 'language', mkvpropedit(1) применяет то же изменение к новому элементу заголовка дорожки LanguageIETF в дополнение к устаревшему элементу Language. Если используется этот параметр, изменение будет применено только к устаревшему элементу Language.

Этот параметр не влияет на изменения, запрашиваемые через свойство 'language-ietf' заголовка дорожки.

--normalize-language-ietf режим

Позволяет нормализовать все языковые теги IETF BCP 47 к их канонической форме с режимом «canonical», к их форме расширенных языковых подтегов с помощью режима «extlang» или отключает его в режиме off. По умолчанию применяется нормализация к канонической форме.

В канонической форме все подтеги, для которых существуют предпочтительные значения, заменяются этими предпочтительными значениями. Это преобразует, например, «zh-yue-jyutping» в «yue-jyutping» или «fr-FX» в «fr-FR».

Для формы расширенных языковых подтегов изначально строится каноническая форма. После этого все основные языки, для которых существует расширенный языковой подтег, заменяются этим расширенным языковым подтегом и его префиксом. Это преобразует, например, «yue-jyutping» обратно к «zh-yue-jyutping», но не влияет на «fr-FR», потому что «fr» не является расширенным языковым подтегом.

Эта нормализация применяется только к элементам, которые фактически изменены:

  • При редактировании заголовков дорожек затрагиваются только те элементы языка треков, которые установлены в соответствии со спецификациями редактирования. Языки дорожек, которые не редактируются, не меняются. Редактирование дорожки, но установка только свойств, отличных от языка, также не повлияет на язык.

  • Во время редактирования глав подвергаются воздействию все языковые элементы всех элементов главы, поскольку существующие главы всегда заменяются полностью.

  • При редактировании тегов подвергаются воздействию только те языковые элементы тегов, которые фактически заменены. Например, замена глобальных тегов не влияет на существующие теги дорожек.

Лучший способ нормализовать все имеющиеся языковые теги в файле — это сделать его ремультиплексирование с помощью mkvmerge(1) и установить его параметр «--normalize-language-ietf» в требуемый режим.

--command-line-charset кодировка

Устанавливает кодировку для конвертации строк, указанных в командной строке. Стандартная кодировка привязана с системной локализации.

--output-charset кодировка

Указывает кодировку, в которую конвертируются выходные строки. По умолчанию используется текущая кодировка системного языка.

-r, --redirect-output имя-файла

Записывает все сообщения в файл file-name вместо консоли. Хотя это можно легко сделать с помощью перенаправления вывода, есть случаи, когда этот параметр нужен: если терминал повторно интерпретирует выход перед записью его в файл. Набор символов, установленный с --output-charset, учитывается.

--ui-language код

Принудительно использовать перевод на код языка (напр., «de_DE» для немецкого). Если указать «list» вместо кода, то отобразится список доступных переводов.

--abort-on-warnings

Указывает mkvmerge прерывание после появления первого предупреждения. Код завершения программы будет 1.

--debug тематика

Включить режим отладки для указанной функции. Этот параметр полезен только для разработчиков.

--engage функция

Включает экспериментальные функции. Список доступных функций можно запросить с помощью mkvpropedit --engage list. Эти функции не предназначены для использования в обычных ситуациях.

--gui-mode

Включает режим графического интерфейса. В этом режиме могут отображаться специально отформатированные строки для отправки управляющих сообщений интерфейсу. Формат сообщений — '#GUI#message'. За сообщением могут быть указаны пары ключа и значения, например '#GUI#message#key1=value1#key2=value2…'. Сообщения и ключи не переводятся и всегда выводятся на английском.

-v, --verbose

Вести расширенный вывод и показывать все важные элементы Matroska(tm) по мере их чтения.

-h, --help

Показать сведения об использовании и выйти.

-V, --version

Показать сведения о версии и выйти.

@файл-параметров.json

Считывает дополнительные аргументы командной строки из файла options-file. Полное описание поддерживаемых форматов для таких файлов смотрите в разделе "Файлы параметров" на странице документации mkvmerge(1).

3. Редактирование селекторов

Параметр --edit устанавливает раздел файла Matroska(tm) (информация о сегменте или заголовках определённого трека), с которым выполняются все последующие действия add, set и delete. Это остаётся действительным до тех пор, пока не будет найден следующий параметр --edit. Аргумент этого параметра называется селектором редактирования.

По умолчанию mkvpropedit(1) будет править раздел информации о сегменте.

3.1. Информация о сегментах

Информацию о сегменте можно выбрать одним из трёх слов: «info», «segment_info» или «segmentinfo». Он содержит такие свойства, как заголовок сегмента или UID сегмента.

3.2. Заголовки дорожки

Заголовки дорожек можно выбрать с помощью несколько более сложного селектора. Все варианты начинаются с «track:». Свойства заголовка дорожки включают такие элементы, как код языка, флаг «дорожка по умолчанию» или название дорожки.

Option Description
track:n

Если параметр n является цифрой, то будет выбрана дорожкой с номером n. Порядок дорожек такой же, как и при выводе информации командой mkvmerge(1) с параметром --identify.

Нумерация начинается с 1.

track:tn

Если параметр начинается с одного символа t, за которым следует n, то будет выбрана n-ная дорожка определённого типа дорожек. Параметр типа дорожки t должен быть одним из четырёх символов: 'a' для звуковой дорожки, 'b' для дорожки кнопки, 's' для дорожки субтитров и 'v' для видеодорожки. Порядок отслеживания такой же, как и параметр --identify вывода mkvmerge(1).

Нумерация начинается с 1.

track:=uid

Если параметр начинается с «=», за которым следует число uid, будет выбрана дорожка, элемент дорожки UID которой равен данному uid. UID дорожек можно получить с помощью mkvinfo(1).

track:@номер

Если параметр начинается с «@», за которым следует число number, будет выбрана дорожка, элемент которой дорожки равен этому number. Номера дорожек можно получить с помощью mkvinfo(1).

3.3. Примечания

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

4. Селекторы вложений

Селектор вложений используется для двух действий: --replace-attachment и --delete-attachment. Он может принимать одну из следующих четырёх форм:

  1. Выбор по идентификатору вложения. В этой форме селектор представляет собой число, идентификатор вложения, выводимый командой идентификации mkvmerge(1).

  2. Выбор по УИД (уникальному идентификатору) вложения. В этой форме селектор представляет собой символ = с последующим числом, являющимся УИД вложения. Его узнать с помощью детальной команды идентификации mkvmerge(1).

  3. Выбор по названию вложения. В этой форме селектором является буквенное слово name:, за которым следует имя имеющегося вложения. Если этот селектор используется с --replace-attachment, то двоеточия в названии для соответствия должны экранироваться с помощью \c.

  4. Выбор по типу MIME. В этой форме селектором является буквенное слово mime-type:, за которым следует MIME-тип существующего вложения. Если этот селектор используется с --replace-attachment, то двоеточия в типе MIME для соответствия должны экранироваться с помощью \c.

5. Примеры

Следующий пример редактирует файл под названием 'movie.mkv'. Он устанавливает название сегмента и изменяет код языка аудио и дорожки субтитров. Обратите внимание, что этот пример можно сократить, исключив первый параметр --edit, поскольку редактирование элемента информации сегмента является стандартным для всех параметров, найденных перед первым параметром --edit.

$ mkvpropedit фильм.mkv --edit info --set "title=Фильм" --edit track:a1 --set language=fre --edit track:a2 --set language=ita

Второй пример удаляет «флаг дорожка по умолчанию» с первой дорожки субтитров и устанавливает его для второй. Обратите внимание, что mkvpropedit(1) в отличие от mkvmerge(1), не устанавливает «флаг дорожка по умолчанию» для других дорожек на «0», если для некоторой дорожки автоматически установлено значение «1».

$ mkvpropedit фильм.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1

Замена тегов во второй дорожке субтитров файла выглядит так:

$ mkvpropedit фильм.mkv --tags track:s2:new-subtitle-tags.xml

Удаление всех тегов требует указания имени файла:

$ mkvpropedit фильм.mkv --tags all:

Замена глав в файле выглядит так:

$ mkvpropedit фильм.mkv --chapters новые-главы.xml

Удаление всех глав происходит без указания имени выходного файла:

$ mkvpropedit фильм.mkv --chapters ''

Добавление файла шрифта (Arial.ttf) в виде вложения:

$ mkvpropedit фильм.mkv --add-attachment Arial.ttf

Добавление файла шрифта (89719823.ttf) в виде вложения и описание информации, что это Arial:

$ mkvpropedit фильм.mkv --attachment-name Arial.ttf --attachment-description 'Шрифт Arial в виде шрифта TrueType' --attachment-mime-type application/x-truetype-font --add-attachment 89719823.ttf

Замена вложенного файла шрифта (Comic.ttf) другим (Arial.ttf):

$ mkvpropedit фильм.mkv --attachment-name Arial.ttf --attachment-description 'Шрифт Arial в виде шрифта TrueType' --replace-attachment name:Comic.ttf:Arial.ttf

Удаление второго вложенного файла, неважно какого именно:

$ mkvpropedit фильм.mkv --delete-attachment 2

Удаление всех вложенных шрифтов по типу MIME:

$ mkvpropedit фильм.mkv --delete-attachment mime-type:application/x-truetype-font

6. Коды завершения

mkvpropedit(1) завершается с одним из трёх кодов:

7. Преобразование текстовых файлов и кодировок

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

8. Переменные среды

mkvpropedit(1) использует стандартные переменные, определяющие системный язык (например: LANG и семейство LC_*). Дополнительные переменные:

Option Description
MKVPROPEDIT_DEBUG, MKVTOOLNIX_DEBUG и его краткая форма MTX_DEBUG

Содержимое обрабатывается так, как если бы оно было передано с помощью параметра --debug.

MKVPROPEDIT_ENGAGE, MKVTOOLNIX_ENGAGE и его краткая форма MTX_ENGAGE

Содержимое обрабатывается так, как если бы оно было передано с помощью параметра --engage.

9. Смотрите также

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

10. Домашняя страница

Последняя версия программы всегда доступна на домашней странице MKVToolNix.