mkvpropedit(1)

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

КРАТКОЕ СОДЕРЖАНИЕ

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

ОПИСАНИЕ

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

Параметры:

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

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

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

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

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

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

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

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

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

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

-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).

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

--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 может иметь одну из четырёх форм. Они описаны ниже в разделе селекторы вложений.

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

--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».

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

--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).

РЕДАКТИРОВАНИЕ СЕЛЕКТОРОВ

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

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

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

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

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

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

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).

  Примечания

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

СЕЛЕКТОРЫ ВЛОЖЕНИЙ

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

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

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

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

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

ПРИМЕРЫ

Следующий пример редактирует файл под названием '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

КОДЫ ЗАВЕРШЕНИЯ

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

    • 0 -- Этот код завершения означает, что модификация закончилась успешно.

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

    • 2 -- Этот код завершения используется в случае возникновения ошибки. mkvpropedit(1) прекращает работу сразу после вывода сообщения об ошибке. Ошибки могут возникнуть из-за неверных параметров командной строки, из-за ошибки чтения/записи или просто из-за повреждённых файлов.

ПРЕОБРАЗОВАНИЕ ТЕКСТОВЫХ ФАЙЛОВ И КОДИРОВОК

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

ПЕРЕМЕННЫЕ СРЕДЫ

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

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

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

СМОТРИТЕ ТАКЖЕ

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

ДОМАШНЯЯ СТРАНИЦА

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

АВТОР

Мориц Бункус <moritz@bunkus.org>
    Разработчик

ПРИМЕЧАНИЯ

1.  домашней странице MKVToolNix
    https://mkvtoolnix.download/