mkvextract -
Matroska(TM)ファイルからトラックを抽出し、他の形式のファイルとして保存する
mkvextract
{ソースファイル名}
{モード1} [オプション]
[抽出指定1] [モード2]
[オプション]
[抽出指定2] [...]
このプログラムは、Matroska(TM)ファイルから特定の部分を抽出し、他の利用可能な形式に書き出します。第1引数はソース(抽出元)のファイル名であり、これはMatroska(TM)ファイルである必要があります。
残りの全引数はそれぞれ、特定の抽出モードに切り替えるか、現行で有効なモードのオプションを変更するか、または抽出する内容と書き出し先のファイルを指定します。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(TM)要素をすべて表示します。
-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(TM)ファイル内部の添付ファイルの名前を用います。このオプションは複数回指定できます。添付ファイル識別子は
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(TM)ファイル内での絶対バイト位置です。
注記
Matroska(TM)ファイルの内部では、CueClusterPosition
はセグメントのデータ開始オフセットからの相対位置です。しかし、
mkvextract(1)
のキュー抽出モードで出力される値にはそのオフセットがあらかじめ加算されており、ファイル冒頭からの絶対オフセット(絶対位置)になります。
relative_position
キューポイントが参照する
BlockGroup または SimpleBlock
要素が始まる、クラスター内での相対バイト位置です。
注記
Matroska(TM)ファイルの内部では、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(TM) トラックは
OggOpus(TM)
ファイルとして書き出されます。
A_PCM/INT/LIT, A_PCM/INT/BIG
生の PCM データは WAV
ファイルとして書き出されます。その際、ビッグエンディアンの整数データはリトルエンディアンに変換されます。
A_REAL/*
RealAudio(TM) トラックは
RealMedia(TM)
ファイルとして書き出されます。
A_TRUEHD, A_MLP
これらは生の
TrueHD/MLP
ファイルとして抽出されます。
A_TTA1
TrueAudio(TM) トラックは
TTA
ファイルとして書き出されます。Matroska(TM)
のタイムスタンプ精度の制限により、抽出されたファイルのヘッダーにおける
data_length(ファイル内の総サンプル数)および
CRC
の2つのフィールドは、元のものとは異なる値になることに注意してください。
A_VORBIS
Vorbis 音声は OggVorbis(TM)
ファイルとして書き出されます。
A_WAVPACK4
WavPack(TM) トラックは WV
ファイルとして書き出されます。
S_HDMV/PGS
PGS 字幕は SUP
ファイルとして書き出されます。
S_HDMV/TEXTST
S_KATE
Kate(TM)
ストリームは、 Ogg(TM)
コンテナに格納されて書き出されます。
S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS
SSA および ASS
テキスト字幕は、それぞれ
.ssa/.ass
ファイルとして書き出されます。
S_TEXT/UTF8, S_TEXT/ASCII
シンプルなテキスト字幕は、SRT
ファイルとして書き出されます。
S_VOBSUB
VobSub(TM) 字幕は、 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(TM)
などを使用してさらに処理することが可能です。
V_MPEG4/ISO/HEVC
H.265 / HEVC
ビデオトラックは、 H.265
エレメンタリ・ストリームとして書き出されます。これらは、GPACパッケージの
MP4Box(TM)
などを使用してさらに処理することが可能です。
V_MS/VFW/FOURCC
この CodecID
を持つ固定フレームレート(FPS)のビデオトラックは、
AVI
ファイルとして書き出されます。
V_REAL/*
RealVideo(TM)
トラックは、 RealMedia(TM)
ファイルとして書き出されます。
V_THEORA
Theora(TM)
ストリームは、 Ogg(TM)
コンテナ内に書き出されます
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
オプションを介して渡されたものとして処理されます。
WWW¶
最新バージョンは常に
MKVToolNix
のホームページ[1]
から入手できます。
Bunkus Moritz[FAMILY Given] <moritz@bunkus.org>
開発者