mkvextract(1)

НАЗВАНИЕ
mkvextract - извлечение дорожки из файлов Matroska в другие файлы

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

mkvextract {имя-файла-источника} {режим1} [параметры] [свойства-извлечения1] [режим2] [параметры] [свойства-извлечения2] [...]

ОПИСАНИЕ

Эта программа извлекает указанные фрагменты из файла Matroska в другие используемые форматы. Первый аргумент — имя исходного файла, который должен быть файлом Matroska.

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

В настоящее время поддерживается извлечение дорожек, тегов, вложений, глав, файлов разметки CUE, меток времени и cue.

  Общие параметры

Следующие параметры доступны во всех режимах и описываются в этом разделе единожды.

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

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

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

-r, --redirect-output имя-файла
    Все сообщения записываются в файл имя-файла вместо консоли. Хотя это можно сделать и через перенаправление вывода, есть отдельные случаи применения именно этого параметра: когда терминал интерпретирует в другой способ вывода перед записью файла. Кодировка, указанная в --output-charset, учитывается.

--flush-on-close
    Указывает программе программе сбросить все данные, закэшированные в памяти, в хранилище при закрытии файлов, открытых для записи. Это может быть использовано для предотвращения потери данных при отключении питания или для обхода определённых проблем в операционной системе или драйверах. Недостатком является то, что слияние займёт больше времени, так как mkvmerge придётся ждать, пока все данные не будут записаны в хранилище перед выходом. Смотри проблемы #2469 и #2480 в трекере ошибок MKVToolNix, где подробно прокомментированы плюсы и минусы.

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

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

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

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

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

-v, --verbose
    Вести расширенный вывод и показывать все важные элементы Matroska по мере их чтения.

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

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

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

  Режим извлечения дорожки

Синтаксис: mkvextract имя-исходного-файла дорожки [параметры] TID1:имя-целевого-файла1 [TID2:имя-целевого-файла2 ...]

Следующие параметры командной строки доступны для каждой дорожки в режиме извлечения 'tracks'. Они должны присутствовать перед указанием дорожки (см. ниже), к которой будут применяться.

-c кодировка
    Указывает набор символов, который должна содержать следующая дорожка субтитров после конвертации. Применяется только тогда, когда ID следующей дорожки указывает на дорожку субтитров. По умолчанию используется UTF-8.

--blockadd уровень
    Сохранить BlockAdditions только до этого уровня. По умолчанию сохраняются все уровни. Этот параметр влияет только на определённый тип кодеков, например WAVPACK4.

--cuesheet
    Выполняет с помощью mkvextract(1) извлечение списков CUE из информации о разделах и из данных тегов данной дорожки в файл с названием выходной дорожки и расширением '.cue'.

--raw
    Извлекает необработанные данные в файл без контейнера. В отличие от флага --fullraw этот параметр не приводит к записи содержимого элемента CodecPrivate в файл. Этот режим работает со всеми CodecIDs, даже с теми, которые mkvextract(1) не поддерживает, но это может привести к созданию повреждённого файла.

--fullraw
    Извлекает необработанные данные в файл без контейнера. Содержимое элемента CodecPrivate будет записано первым в файл, если дорожка содержит подобный элемент заголовка. Этот режим работает со всеми CodecIDs, даже с теми, которые mkvextract(1) не поддерживает, но это может привести к созданию повреждённого файла.

TID:выходное-имя
    Извлекает дорожку с ID TID в файла выходное_имя при условии, что такая дорожка содержится во исходном файле. Этот параметр можно задавать несколько раз. ID дорожек должны быть такие же как и при выводе информации командой mkvmerge(1) с параметром --identify.

    Каждое название выходного файла должно использоваться только раз. Исключение составляют дорожки RealAudio и RealVideo. Если использовать одинаковые названия для разных дорожек, то они будут сохранены в одном файле. Пример:

        $ mkvextract input.mkv tracks 0:video.h264 2:output-two-vobsub-tracks.idx 3:output-two-vobsub-tracks.idx

  Режим извлечения вложений

Синтаксис: mkvextract имя-исходного-файла вложения [параметры] AID1:выходное-имя1 [AID2:выходное-имя2 ...]

AID:выходное-имя
    Производит извлечение вложения из ID AID в файл outname при условии, если такое вложение содержится во входном файле. Если же оставить outname пустым, то будет использоваться название вложения из входного файла Matroska. Этот параметр можно использовать несколько раз. ID вложений должны быть такие же как и при выводе информации командой mkvmerge(1) с параметром --identify.

  Режим извлечения глав

Синтаксис: mkvextract имя-исходного-файла главы [параметры] имя-выходного-файла.xml

-s, --simple
    Экспорт главы информации в простой формат, используемый в инструментах OGM (ГЛАВА01=..., ГЛАВА01ИИМЯ=...). В этом режиме некоторая информация должна быть отброшена. По умолчанию главы выводятся в формат XML.

--simple-language язык
    Если включён простой формат, то mkvextract(1) будет выводить только единственную запись для каждого встречающегося атома глав, даже если атом глав содержит более одного названия главы. По умолчанию mkvextract(1) будет использовать первый обнаруженный заголовок главы для каждого атома вне зависимости от его яыка.

    Использование этого параметра даёт возможность пользователю определить, какие имена глав выводятся, если атомы содержат более одного имени главы. Параметр language должен быть кодом из ISO 639-1 или ISO 639-2.

Главы записаны в указанный выходной файл. По умолчанию используется понятный для mkvmerge(1) формат XML. Если в файле нет глав, то выходной файл не создан.

  Режим извлечения меток

Синтаксис: mkvextract имя-исходного-файла теги [параметры] имя-выходного-файла.xml

Теги записаны в указанный выходной XML-файл, понятный для mkvmerge(1). Если в файле нет тегов, то выходной файл не создан.

  Режим извлечения файлов разметки CUE

Синтаксис: mkvextract имя-исходного-файла cuesheet [параметры] имя-выходного-файла.cue

Cue sheet (файл разметки) записан в указанный выходной файл. Если в файле нет глав или тегов, то выходной файл не создан.

  Режим извлечения метки времени

Синтаксис: mkvextract имя-исходного-файла метки-времени_v2 [параметры] TID1:имя-целевого-файла1 [TID2:имя-целевого-файла2 ...]

TID:выходное-имя
    Извлекает временные метки дорожки с ID TID в файла выходное_имя при условии, что такая дорожка содержится во исходном файле. Этот параметр можно задавать несколько раз. ID дорожек должны быть такие же как и при выводе информации командой mkvmerge(1) с параметром --identify.

    Пример:

        $ mkvextract input.mkv timestamps_v2 1:ts-track1.txt 2:ts-track2.txt

  Режим извлечения файлов разметки CUE

Синтаксис: mkvextract имя-исходного-файла cue-файлы [параметры] TID1:имя-целевого-файла1 [TID2:имя-целевого-файла2 ...]

TID:имя-целевого-файла
    Извлекает дорожку с ID TID в файла выходное_имя при условии, что такая дорожка содержится во исходном файле. Этот параметр можно задавать несколько раз. ID дорожек должны быть такие же как и при выводе информации командой mkvmerge(1) с параметром --identify, при этом не должны совпадать с цифрами, содержащимися в элементе CueTrack.

Выходной формат представлен в текстовом виде: один элемент CuePoint на линию с парой ключ=значение. Если элемент параметра не представлен в CuePoint (напр. CueDuration), то вместо значения будет тире.

Пример:

    timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11

Возможные ключи:

метка времени
    Длительность точки cue с точностью до наносекунд. Формат: HH:MM:SS.nnnnnnnnn. Этот элемент всегда устанавливается.

длительность
    Длительность точки cue с точностью до наносекунд. Формат: HH:MM:SS.nnnnnnnnn.

cluster_position
    Абсолютная позиция в байтах внутри файла Matroska, с которой начинается кластер, содержащий ссылочный элемент.

        Примечание
        Внутри файла Matroska CueClusterPosition находится относительно начального смещения данных сегмента. Однако значение, выводимое в режиме извлечения cue mkvextract(1), уже содержит это смещение и является абсолютным смещением от начала файла.

relative_position
    Относительное положение в байтах внутри кластера, где начинаются элементы BlockGroup или SimpleBlock, на которые ссылается cue-точка.

        Примечание
        Внутри файла Matroska CueRelativePosition относительно начальному смещению данных кластера. Однако значение, выводимое режимом извлечения метки mkvextract(1), зависит от идентификатора кластера. Абсолютное положение внутри файла можно вычислить добавлением cluster_position и relative_position.

Пример:

    $ mkvextract input.mkv cues 1:cues-track1.txt 2:cues-track2.txt

ПРИМЕРЫ

Извлечение глав и тегов в их соответствующие форматы XML за один раз:

    $ mkvextract фильм.mkv chapters главы-фильма.xml tags теги-фильма.xml

Извлечение пары треков и их соответствующие временные метки за один раз:

    $ mkvextract "Другой фильм.mkv" tracks 0:video.h265 "1:основное аудио.aac" "2:комментарии режиссёра.aac" временные метки_v2 "0:временные метки видео.txt" "1:временные метки основного аудио.txt" "2:временные метки комментариев режиссёра.txt"

Извлечение глав в формат Ogg/OGM и перекодирование дорожки текстовых субтитров в другую кодировку:

    $ mkvextract "Мой фильм.mkv" chapters --simple "Мои главы.txt" tracks -c MS-ANSI "2:Мои субтитры.srt"

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

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

ФОРМАТЫ ФАЙЛОВ НА ВЫХОДЕ

Решение о формате файла на выходе выбирается на основании типа дорожки, а не расширения выходного файла. В настоящее время поддерживаются следующие типы дорожек:

A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC
    Все файлы AAC будут записаны в файл AAC с заголовками ADTS перед каждым пакетом. Заголовки ADTS не будут содержать устаревшее поле особого назначения.

A_AC3, A_EAC3
    Это будет извлечено в необработанные файлы AC-3.

A_ALAC
    Дорожки ALAC записаны в файлы CAF.

A_DTS
    Это будет извлечено в необработанные файлы DTS.

A_FLAC
    Дорожки FLAC записаны в файлы FLAC.

A_MPEG/L2
    Потоки MPEG-1 Audio Layer II будут извлечены в необработанные файлы MP2.

A_MPEG/L3
    Это будет извлечено в необработанные файлы MP3.

A_OPUS
    Дорожки Opus записаны в файлы OggOpus.

A_PCM/INT/LIT, A_PCM/INT/BIG
    Необработанные данные PCM будут записаны в файл WAV. Данные виде целочисленных с большим концом будут сконвертированы в данные с малым концом в процессе.

A_REAL/*
    Дорожки RealAudio записаны в файлы RealMedia.

A_TRUEHD, A_MLP
    Это будет извлечено в необработанные файлы TrueHD/MLP.

A_TTA1
    Дорожки TrueAudio записываются в файлы TTA. Имейте в виду, что из-за ограниченной точности временных меток Matroska, извлечённые заголовки файлов будут разными, как указано в двух полях: data_length (суммарное количество семплов в файле) и CRC.

A_VORBIS
    Аудио-файлы Vorbis будут записаны в файл OggVorbis.

A_WAVPACK4
    Дорожки WavPack записаны в файлы WV.

S_HDMV/PGS
    Субтитры PGS будут записаны в файлы SUP.

S_HDMV/TEXTST
    Субтитры TextST будут записаны в виде файла, созданного специально для mkvmerge(1) и mkvextract(1).

S_KATE
    Потоки Kate будут записаны в контейнер Ogg.

S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS
    Текстовые субтитры SSA и ASS будут записаны в виде файлов SSA/ASS соответственно.

S_TEXT/UTF8, S_TEXT/ASCII
    Простые текстовые субтитры будут записаны в виде файлов SRT.

S_VOBSUB
    Субтитры VobSub будут записаны в виде файлов SUB с соответствующими файлами индексов в виде IDX.

S_TEXT/USF
    Текстовые субтитры USF будут записаны в виде файлов USF.

S_TEXT/WEBVTT
    Текстовые субтитры WebVTT будут записаны в виде файлов WebVTT.

V_MPEG1, V_MPEG2
    Видео-дорожки MPEG-1 и MPEG-2 будут записаны в виде элементарных потоков MPEG.

V_MPEG4/ISO/AVC
    Видео-дорожки H.264 / AVC будут записаны в виде элементарных потоковH.264, которые в дальнейшем могут обработаны, например, с помощью MP4Box из пакеты GPAC.

V_MPEG4/ISO/HEVC
    Видео-дорожки H.265 / EVC будут записаны в виде элементарных потоковH.265, которые в дальнейшем могут обработаны, например, с помощью MP4Box из пакеты GPAC.

V_MS/VFW/FOURCC
    Видео-дорожки с фиксированной кадровой частотой и с данным CodecID записаны в виде файлов AVI./

V_REAL/*
    Дорожки RealVideo записаны в файлы RealMedia.

V_THEORA
    Потоки Theora будут записаны в контейнер Ogg

V_VP8, V_VP9
    Дорожки VP8 / VP9 записаны в файлы IVF.

Метки
    Теги конвертируются в формат XML. Этот же формат mkvmerge(1) использует для чтения тегов.

Вложения
    Вложения записываются в выходной файл как есть. Никаких преобразований не выполняется.

Главы
    Главы конвертируются в формат XML. Этот же формат mkvmerge(1) используется для чтения глав. Либо можно извлечь урезанную версию в упрощённый стилевой формат OGM.

Метки времени
    Временные метки сначала сортируются и затем выводятся в формате временных меток v2, совместимом для использования в mkvmerge(1). Извлечение в другие форматы (v1, v3 и v4) не поддерживается.

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

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

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

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

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

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

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

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

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

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

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

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

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

АВТОР

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

ПРИМЕЧАНИЯ

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