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

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

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

# 2. Описание

This program analyses an existing Matroska(tm) file and modifies some of its properties. Then it writes those modifications to the existing file. Among the properties that can be changed are the segment information elements (e.g. the title) and the track headers (e.g. the language code, 'default track' flag or the name).

Параметры:

Option | Description
--- | ---
-l, --list-property-names | Перечисляет все известные и редактируемые имена свойств, их тип (строка, целое число, логическое значение и т. п) и краткое описание. После этого программа завершается. Поэтому параметр source-filename не нужно указывать.
-p, --parse-mode режим | Sets the parse mode. The parameter 'mode' can either be 'fast' (which is also the default) or 'full'. The 'fast' mode does not parse the whole file but uses the meta seek elements for locating the required elements of a source file. In 99% of all cases this is enough. But for files that do not contain meta seek elements or which are damaged the user might have to set the 'full' parse mode. A full scan of a file can take a couple of minutes while a fast scan only takes seconds.

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

Option | Description
--- | ---
-e, --edit selector | Sets the Matroska(tm) file section (segment information or a certain track's headers) that all following add, set and delete actions operate on. This option can be used multiple times in order to make modifications to more than one element. По умолчанию 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). The selector must be one of the words all, global or track. For all mkvpropedit(1) will replace or remove all tags in a file. With global only global tags will be replaced or removed. With track mkvpropedit(1) will replace tags for a specific track. Additionally the tags read from filename will be assigned to the same track. The track is specified in the same way edit selectors are specified (see below), e.g. --tags track:a1:new-audio-tags.xml.
--add-track-statistics-tags | Вычисляет статистику для всех треков в файле и добавляет новые теги статистики для них. Если файл уже содержит эти теги, то они будут обновлены.
--delete-track-statistics-tags | Удаляет все метки статистики существующей дорожки из файла. Если в файле нет меток статистики дорожки, они не будут изменены.
-c, --chapters имя-файла | Add or replace chapters in the file with the ones from filename or remove them if filename is empty. mkvpropedit(1) reads the same XML and simple chapter formats that mkvmerge(1) reads as well.

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

Option | Description
--- | ---
--add-attachment имя-файла | Добавляет новое вложение из имя-файла. Если параметр --attachment-name использовался до этого параметра, его значение используется как имя нового вложения. Иначе он является производным от filename. Если параметр --attachment-mime-type использовался до этого параметра, его значение используется как тип MIME нового вложения. Иначе он автоматически обнаруживается из содержимого filename. If the option --attachment-description has been used prior to this option then its value is used as the new attachment's description. Otherwise no description will be set. If the option --attachment-uid has been used prior to this option then its value is used as the new attachment's UID. Otherwise a random UID will be generated automatically.
--replace-attachment селектор:имя-файла | Replaces one or more attachments that match selector with the file filename. If more than one existing attachment matches selector then all of their contents will be replaced by the content of filename. The selector can have one of four forms. They're explained below in the section attachment selectors. Если параметр --attachment-name использовался до этого параметра, его значение устанавливается в виде нового имени для каждого изменённого вложения. Иначе имена не меняются. Если параметр --attachment-mime-type использовался до этого параметра, его значение устанавливается в виде нового типа MIME для каждого изменённого вложения. Иначе типы MIME не меняются. Если параметр --attachment-description использовался до этого параметра, его значение устанавливается в виде нового описания для каждого изменённого вложения. Иначе описания не меняются. Если параметр --attachment-uid использовался до этого параметра, его значение устанавливается в виде нового UID для каждого изменённого вложения. Иначе UID не меняются.
--update-attachment селектор | Указывает свойства для одного и более вложений, которые совпадают с селектором. Если более одного вложений совпадают с селектором, тогда все их свойства будут обновлены. The selector can have one of four forms. They're explained below in the section attachment selectors. Если параметр --attachment-name использовался до этого параметра, его значение устанавливается в виде нового имени для каждого изменённого вложения. Иначе имена не меняются. Если параметр --attachment-mime-type использовался до этого параметра, его значение устанавливается в виде нового типа MIME для каждого изменённого вложения. Иначе типы MIME не меняются. Если параметр --attachment-description использовался до этого параметра, его значение устанавливается в виде нового описания для каждого изменённого вложения. Иначе описания не меняются. Если параметр --attachment-uid использовался до этого параметра, его значение устанавливается в виде нового UID для каждого изменённого вложения. Иначе UID не меняются.
--delete-attachment селектор | Удаляет одно или несколько вложений подходящих под селектор The selector can have one of four forms. They're explained below in the section attachment selectors.

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

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». This affects both adding new attachments and replacing existing attachments, but only if the new MIME type isn't specified. Other existing attachments aren't changed. Затрагиваются типы MIME: «font/sfnt», «font/ttf» и «font/collection»; они сопоставляются с «application/x-truetype-fonts» и «font/otf», который сопоставляется с «application/vnd .ms-opentype».

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

Option | Description
--- | ---
--disable-language-ietf | Normally when the user requests changes to the 'language' track header property, mkvpropedit(1) will apply the same change to the new LanguageIETF track header element in addition to the legacy Language element. If this option is used, the change is only applied to the legacy Language element. Этот параметр не влияет на изменения, запрашиваемые через свойство '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» не является расширенным языковым подтегом. Эта нормализация применяется только к элементам, которые фактически изменены: When editing track headers only those track language elements that are set via edit specifications are affected. Languages of tracks that aren't edited aren't changed. Editing a track but setting only properties other than the language won't affect the language either. When editing chapters all language elements of all chapter elements are affected as existing chapters are always fully replaced. When editing tags only the language elements of the tags that are actually replaced are affected. For example, when you replace global tags then existing track tags aren't affected. The best way to normalize all existing language tags in a file is to remux it with mkvmerge(1) and set its '--normalize-language-ietf' option to the desired mode.
--command-line-charset кодировка | Устанавливает кодировку для конвертации строк, указанных в командной строке. Стандартная кодировка привязана с системной локализации.
--output-charset кодировка | Указывает кодировку, в которую конвертируются выходные строки. По умолчанию используется текущая кодировка системного языка.
-r, --redirect-output имя-файла | Writes all messages to the file file-name instead of to the console. While this can be done easily with output redirection there are cases in which this option is needed: when the terminal reinterprets the output before writing it to a file. The character set set with --output-charset is honored.
--ui-language код | Принудительно использовать перевод на код языка (напр. "de_DE" для немецкого). Если указать "list" вместо кода, то отобразится список доступных переводов.
--abort-on-warnings | Указывает mkvmerge прерывание после появления первого предупреждения. Код завершения программы будет 1.
--debug тематика | Включить режим отладки для указанной функции. Этот параметр полезен только для разработчиков.
--engage функция | Turn on experimental features. A list of available features can be requested with mkvpropedit --engage list. These features are not meant to be used in normal situations.
--gui-mode | Включает режим графического интерфейса. В этом режиме могут отображаться специально отформатированные строки для отправки управляющих сообщений интерфейсу. Формат сообщений — '#GUI#message'. За сообщением могут быть указаны пары ключа и значения, например '#GUI#message#key1=value1#key2=value2…'. Сообщения и ключи не переводятся и всегда выводятся на английском.
-v, --verbose | Вести расширенный вывод и показывать все важные элементы Matroska(tm) по мере их чтения.
-h, --help | Показать сведения об использовании и выйти.
-V, --version | Показать сведения о версии и выйти.
@файл-параметров.json | Считывает дополнительные аргументы командной строки из файла options-file. Полное описание поддерживаемых форматов для таких файлов смотрите в разделе "Файлы параметров" на странице документации mkvmerge(1).

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

The --edit option sets the Matroska(tm) file section (segment information or a certain track's headers) that all following add, set and delete actions operate on. This stays valid until the next --edit option is found. The argument to this option is called the edit selector.

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

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

The segment information can be selected with one of these three words: 'info', 'segment_info' or 'segmentinfo'. It contains properties like the segment title or the segment UID.

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

Track headers can be selected with a slightly more complex selector. All variations start with 'track:'. The track header properties include elements like the language code, 'default track' flag or the track's name.

Option | Description
--- | ---
track:n | Если параметр n является цифрой, то будет выбрана дорожкой с номером n. Порядок дорожек такой же, как и при выводе информации командой mkvmerge(1) с параметром --identify. Нумерация начинается с 1.
track:t n | If the parameter starts with a single character t followed by a n then the nth track of a specific track type will be selected. The track type parameter t must be one of these four characters: 'a' for an audio track, 'b' for a button track, 's' for a subtitle track and 'v' for a video track. The track order is the same that mkvmerge(1)'s --identify option outputs. Нумерация начинается с 1.
track:=uid | Если параметр начинается с «=», за которым следует число uid, будет выбрана дорожка, элемент дорожки UID которой равен данному uid. UID дорожек можно получить с помощью mkvinfo(1).
track:@номер | If the parameter starts with a '@' followed by a number number, the track whose track number element equals this number will be selected. Track numbers can be obtained with mkvinfo(1).

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

Due to the nature of the track edit selectors it is possible that several selectors actually match the same track headers. In such cases all actions for those edit selectors will be combined and executed in the order in which they're given on the command line.

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

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

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

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

3. Selection by attachment name. In this form the selector is the literal word name: followed by the existing attachment's name. If this selector is used with --replace-attachment then colons within the name to match must be escaped as \c.

4. Selection by MIME type. In this form the selector is the literal word mime-type: followed by the existing attachment's MIME type. If this selector is used with --replace-attachment then colons within the MIME type to match must be escaped as \c.

# 5. Примеры

The following example edits a file called 'movie.mkv'. It sets the segment title and modifies the language code of an audio and a subtitle track. Note that this example can be shortened by leaving out the first --edit option because editing the segment information element is the default for all options found before the first --edit option anyway.

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

The second example removes the 'default track flag' from the first subtitle track and sets it for the second one. Note that mkvpropedit(1), unlike mkvmerge(1), does not set the 'default track flag' of other tracks to '0' if it is set to '1' for a different track automatically.

    $ 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) завершается с одним из трёх кодов:

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

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

- 2 -- Этот код завершения используется в случае возникновения ошибки. 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.