MKVEXTRACT(1)

名前
mkvextract - Matroskaファイルからトラックを抽出し、他の形式のファイルとして保存する

書式

mkvextract {ソースファイル名} {モード1} [オプション] [抽出指定1] [モード2] [オプション] [抽出指定2] [...]

説明

このプログラムは、Matroskaファイルから特定の部分を抽出し、他の利用可能な形式に書き出します。第1引数はソース（抽出元）のファイル名であり、これはMatroskaファイルである必要があります。

残りの全引数はそれぞれ、特定の抽出モードに切り替えるか、現行で有効なモードのオプションを変更するか、または抽出する内容と書き出し先のファイルを指定します。mkvextractの同一呼出し内で複数のモードが利用でき、一度の実行で複数種類の内容を抽出できます。ほとんどのオプションは特定のモードでしか利用できませんが、いくつかのオプションは全てのモードに適用できます。

現在は、トラック、タグ、添付ファイル、チャプター、CUEシート、タイムスタンプ、およびキュー（cues）の抽出をサポートしています。

  共通オプション

以下のオプションはすべてのモードで使用可能であり、このセクションでのみ説明します。

-f, --parse-fully
    解析モードを「full」に設定します。デフォルトでは、ファイル全体を解析せずにメタシーク（meta seek）要素を使用して必要な要素を特定します。99%のケースではこれで十分ですが、メタシーク要素がないファイルや破損しているファイルでは、このモードを使用する必要があります。高速スキャンは数秒で終わりますが、フルスキャンには数分かかる場合があります。

--command-line-charset character-set
    コマンドラインで指定された文字列の変換に使用する文字セットを設定します。デフォルトはシステムの現在のロケールに基づいた文字セットです。

--output-charset 文字セット
    出力される文字列を変換するのに用いる文字集合を設定します。既定では機構の現行地域特性で指定している文字集合になります。

-r, --redirect-output ファイル名
    全ての通報を操作卓にではなくファイル名のファイルに書き出します。出力を転送することで同じことが簡単にできるものの、このオプションが必要な場合は存在します:ファイルに転送する前に端末が出力を再解釈してしまう場合です。--output-charsetで設定した文字集合を優先します。

--no-bom
    Normally text files that are created & encoded in one of the UTF variants will start with a byte order marker (BOM). Using this option disables writing that byte order marker.

--flush-on-close
    書き込み用に開いたファイルを閉じる際に、プログラムが主記憶上に貯まった全データを補助記憶に排出 (flush) するようにします。停電時のデータ損失を防いだり、運用機構や機器特有の問題を避ける目的で使えるでしょう。欠点として、mkvmergeが終了前に全データを補助記憶に書き込み終わるまで待機するせいで多重化に長い時間を要します。MKVToolNixの不具合追跡局の議題2469号および2480号に、この挙動の長短について詳細な議論があります。

--ui-language コード
    用いる翻訳を指定した言語符号のものに強制します（例えば「de_DE」ならドイツ語翻訳です）。符号に「list」を指定すると利用可能な翻訳の一覧を出力します。

--abort-on-warnings
    最初の警告が出た時点でプログラムを中止するように指示します。この場合のプログラムの終了コードは1になります。

--debug トピック
    特定の機能のデバッグ出力を有効にします。このオプションは開発者向けです。

--engage 機能
    実験的な機能を有効にします。mkvextract --engage list で、利用可能な機能の一覧を確認できます。これらの機能は、通常の使用環境での利用を想定していません。

--gui-mode
    GUIモードを有効にします。このモードでは、制御しているGUIに状況を伝えるための特殊な形式の行が出力されます。これらのメッセージは「#GUI#メッセージ」という形式に従います。メッセージの後には、「#GUI#メッセージ#キー1=値1#キー2=値2...」のようにキーと値のペアが続くことがあります。メッセージ内容やキー名は翻訳されず、常に英語で出力されます。

-v, --verbose
    詳細（冗長）モードを有効にし、読み込まれた重要なMatroska要素をすべて表示します。

-h, --help
    ヘルプを表示して終了します。

-V, --version
    バージョン情報を表示して終了します。

@オプションファイル.json
    指定したファイル（オプションファイル）から追加のコマンドライン引数を読み込みます。サポートされている形式の詳細については、mkvmerge(1)のmanページにある「オプションファイル」のセクションを参照してください。

  トラック抽出モード

構文: mkvextract ソースファイル名 tracks [オプション] TID1:出力先ファイル名1 [TID2:出力先ファイル名2 ...]

以下の命令行オプションは 'tracks' 抽出モードにおける各トラックごとに利用可能です。これらのオプションは適用先のトラック指定（後述）の前に存在する必要があります。

-c 文字セット
    次に指定するテキスト字幕トラックの変換先文字セットを設定します。このオプションは、直後のトラックIDがテキスト字幕トラックである場合にのみ有効です。デフォルトはUTF-8です。

--blockadd レベル
    指定した水準までのBlockAdditionのみを保持します。既定では全ての水準を保持します。このオプションの効果があるのはWAVPACK4といった特定の符号器のみです。

--cuesheet
    mkvextract(1)に対し、直後のトラックのチャプター情報とタグデータからCUEシートを抽出させます。出力ファイル名は、トラックの出力名に「.cue」を付加したものになります。

--raw
    生データを、コンテナ情報を全く含まずにファイルに出力します。--fullrawの指定下とは違い、この指定下ではCodecPrivate要素の内容をファイルに書き出すことはありません。このモードは、mkvextract(1)が対応していないものであっても全てのCodecIDsで動作しますが、結果のファイルが利用できるものとは限りません。

--fullraw
    生データを、コンテナ情報を全く含まずにファイルに出力します。トラックがCodecPrivate頭部要素を含む場合、始めにその要素の内容をファイルに書き出します。このモードは、mkvextract(1)が対応していないものであっても全てのCodecIDsで動作しますが、結果のファイルが利用できるものとは限りません。

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 ソースファイル名 attachments [オプション] AID1:出力名1 [AID2:出力名2 ...]

AID:出力名
    識別子がTIDの添付ファイルが原ファイルに存在する場合、その添付ファイルを出力名ファイルに抽出するようにします。出力名が空の場合は、代わりに原Matroskaファイル内部の添付ファイルの名前を用います。このオプションは複数回指定できます。添付ファイル識別子はmkvmerge(1)の--identifyオプションの出力結果と同じものです。

  チャプター抽出モード

構文: mkvextract ソースファイル名 chapters [オプション] 出力ファイル名.xml

-s, --simple
    チャプター情報を、OGMツールで使用されるシンプル形式（CHAPTER01=..., CHAPTER01NAME=...）でエクスポートします。このモードでは一部の情報が破棄されます。デフォルトでは、チャプターはXML形式で出力されます。

--simple-language 言語
    単純形式が有効の場合、mkvextract(1)はたとえ楽章素片が複数の楽章名を含んでいる場合でも、検出した楽章素片毎に一項目のみを出力します。既定では、言語に関係なく各素片で見付けた最初の楽章名を用います。

    このオプションを用いることで、素片が複数の楽章名を含んでいた場合にどの楽章を出力するか定めることができます。言語属性はJIS X 0412-1またはJIS X 0412-2に存在していなくてはなりません。

チャプターは指定された出力ファイルに書き込まれます。デフォルトでは mkvmerge(1) が対応しているXML形式が使用されます。ファイル内にチャプターが見つからない場合、出力ファイルは作成されません。

  タグ抽出モード

構文: mkvextract ソースファイル名 tags [オプション] 出力ファイル名.xml

-T, --no-track-tags
    トラック固有ではないタグのみをエクスポートします。

タグは、mkvmerge(1) が対応しているXML形式で出力ファイルに書き込まれます。ファイル内にタグが見つからない場合、出力ファイルは作成されません。

  CUEシート抽出モード

構文: mkvextract ソースファイル名 cuesheet [オプション] 出力ファイル名.cue

CUEシートを指定された出力ファイルに書き込みます。ファイル内にチャプターやタグが見つからない場合、出力ファイルは作成されません。

  タイムスタンプ抽出モード

構文: mkvextract ソースファイル名 timestamps_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

  キュー抽出モード

構文: mkvextract ソースファイル名 cues [オプション] TID1:出力先ファイル名1 [TID2:出力先ファイル名2 ...]

TID:出力先ファイル名
    指定したID（TID）を持つトラックのキューをファイル（出力名）に抽出します。このオプションは複数回指定できます。使用するトラックIDは mkvmerge(1) の --identify オプションで出力されるものであり、CueTrack 要素に含まれる番号ではありません。

出力形式はシンプルなテキスト形式で、CuePoint 要素ごとに1行ずつ、key=value のペアで構成されます。CuePoint 内にオプション要素（CueDuration など）が存在しない場合は、値としてハイフン（-）が出数されます。

例:

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

使用されるキーは以下の通りです:

timestamp
    キューポイントのタイムスタンプ（ナノ秒単位）。形式は HH:MM:SS.nnnnnnnnn です。この要素は常に設定されます。

duration
    キューポイントの継続時間（ナノ秒単位）。形式は HH:MM:SS.nnnnnnnnn です。

cluster_position
    参照されている要素を含むクラスターが始まる、Matroskaファイル内での絶対バイト位置です。

        注記
        Matroskaファイルの内部では、CueClusterPosition はセグメントのデータ開始オフセットからの相対位置です。しかし、mkvextract(1) のキュー抽出モードで出力される値にはそのオフセットがあらかじめ加算されており、ファイル冒頭からの絶対オフセット（絶対位置）になります。

relative_position
    キューポイントが参照する BlockGroup または SimpleBlock 要素が始まる、クラスター内での相対バイト位置です。

        注記
        Matroskaファイルの内部では、CueRelativePosition はクラスターのデータ開始オフセットからの相対位置です。しかし、mkvextract(1) のキュー抽出モードで出力される値はクラスターIDからの相対位置になります。ファイル内の絶対位置は、cluster_position と relative_position を足すことで計算できます。

例:

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

例

チャプターとタグを、それぞれのXML形式で同時に抽出する例：

    $ mkvextract movie.mkv chapters movie-chapters.xml tags movie-tags.xml

複数のトラックとそれぞれのタイムスタンプを同時に抽出する例：

    $ mkvextract "Another Movie.mkv" tracks 0:video.h265 "1:main audio.aac" "2:director's comments.aac" timestamps_v2 "0:timestamps video.txt" "1:timestamps main audio.txt" "2:timestamps director's comments.txt"

チャプターをOgg/OGM形式で抽出し、テキスト字幕トラックを別の文字セットに変換して抽出する例：

    $ mkvextract "My Movie.mkv" chapters --simple "My Chapters.txt" tracks -c MS-ANSI "2:My Subtitles.srt"

テキストファイルと文字セット変換

MKVToolNixスイートの各ツールが文字セット変換、入出力エンコーディング、コマンドラインおよびコンソールのエンコーディングをどのように処理するかについての詳細は、mkvmerge(1) のmanページにある同名のセクションを参照してください。

出力ファイル形式

出力形式は、出力ファイル名の拡張子ではなく、トラックの種類に基づいて決定されます。現在サポートされているトラックの種類は以下の通りです：

A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC
    すべての AAC トラックは、各パケットの前に ADTS ヘッダーを付加した上で AAC ファイルとして書き出されます。ADTS ヘッダーには、非推奨の emphasis フィールドは含まれません。

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 の2つのフィールドは、元のものとは異なる値になることに注意してください。

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 エレメンタリ・ストリームとして書き出されます。これらは、GPACパッケージの MP4Box などを使用してさらに処理することが可能です。

V_MPEG4/ISO/HEVC
    H.265 / HEVC ビデオトラックは、 H.265 エレメンタリ・ストリームとして書き出されます。これらは、GPACパッケージの MP4Box などを使用してさらに処理することが可能です。

V_MS/VFW/FOURCC
    この CodecID を持つ固定フレームレート（FPS）のビデオトラックは、 AVI ファイルとして書き出されます。

V_REAL/*
    RealVideo トラックは、 RealMedia ファイルとして書き出されます。

V_THEORA
    Theora ストリームは、 Ogg コンテナ内に書き出されます

V_VP8, V_VP9
    VP8 / VP9 トラックは、 IVF ファイルとして書き出されます。

タグ
    タグは XML 形式に変換されます。この形式は、 mkvmerge(1) がタグの読み込みにサポートしているものと同じです。

添付ファイル
    添付ファイルはそのままの形式で出力ファイルに書き出されます。変換処理などは一切行われません。

チャプター
    チャプターは XML 形式に変換されます。この形式は、 mkvmerge(1) がチャプターの読み込みにサポートしているものと同じです。あるいは、シンプルな OGM 形式の簡易版として出力することも可能です。

タイムスタンプ
    時刻印はまず整列され、mkvmerge(1)が読み込めるように時刻印v2形式準拠ファイルとして書き出されます。その他の形式（v1、v3およびv4）の抽出には対応していません。

終了コード

mkvextract(1) は、以下の3つの終了コードのいずれかを返します：

    • 0 -- 抽出が正常に完了したことを意味します。

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

WWW

最新バージョンは常に MKVToolNix のホームページ[1] から入手できます。

著者

Bunkus Moritz[FAMILY Given] <moritz@bunkus.org>
    開発者

注記

1.  MKVToolNix のホームページ
    https://mkvtoolnix.download/