mkvextract — Matroska™ ファイルから、他の形式のファイルを抽出する
Matroska™
ファイルの特定の部分を、他の有用なフォーマットで抽出します。最初のmode引数は、mkvextract(1)
に何を抽出すべきかを指示します。現在サポートされているのは、トラック、タグ、添付ファイル、チャプタ、CUEシート 及び タイムコードの抽出です。二個目の引数はソースファイルの名前です。これはMatroska™ファイルでなければなりません。続く全ての引数は、オプションと抽出設定です。これらは指定されたmodeに依存します。
以下のオプションは、全てのmodeで使用できるので、このセクションで一括して説明します。
--command-line-charset character-setコマンドライン文字列の文字コードを指定します。デフォルトは、システムの現在のロケールの文字コードになります。
--output-charset character-set出力する文字コードを指定します。デフォルトは、システムの現在のロケールの文字コードになります。
-r, --redirect-output
file-name
全てのメッセージを、コンソールではなくfile-nameに書き出します。出力をリダイレクトすることで同じことが容易に可能ですが、このオプションが必要になることもあります。ターミナルが出力を、ファイルに書き出す前に処理してしまう場合などです。--output-charsetによって指定された文字コードは尊重されます。
--ui-language code
指定したcodeを強制的に言語コード(例:
日本語ならば'ja_JP')として使用します。しかし、環境変数LANGやLC_MESSAGES、LC_ALLを使用したほうが好ましいでしょう。codeにlistと指定すると、指定できる言語コードの一覧を出力します。
-v, --verbose出力が冗長になり、Matroska™のエレメントにとって重要なこと全てを、読み込まれるつどに表示していきます。
-h, --helpコマンド書式情報を出力して終了します。
-V, --versionバージョン情報を出力して終了します。
@options-file
options-fileで指定されたファイルから追加のコマンドラインオプションを読み込みます。行で最初の空白文字でない文字がハッシュマーク('#')である行はコメントとして扱われ、無視されます。行頭、及び行末の空白文字は取り除かれます。各行には一つずつしかオプションを指定できません。メタキャラクタのエスケープは必要ありません。
'mkvextract tracks source.mkv --raw 1:destination.raw'というコマンドラインと同じことは、次のようなオプションファイルによって指定できます。
# source.mkv からトラックを抽出
tracks
source.mkv
# トラックをrawデータとして出力
--raw
1:destination.raw
書式: mkvextract tracks
source-filename
[options]
TID1:dest-filename1
[TID2:dest-filename2 ...]
以下のコマンドラインオプションは、トラック抽出モードでは各トラック毎に指定することができます。これらのオプションは、作用するトラック指定子(下記参照)の前に指定しなければなりません。
-c character-set直後の字幕トラックの出力文字コードを指定します。直後のトラックIDが指すのが、字幕トラックのときのみ有効です。デフォルトはUTF-8になります。
--blockadd levelこのレベルまでのBlockAdditionを保持します。デフォルトでは全て保持します。このオプションは、WAVPACK4などの特定のコーデックにのみ有効です。
--cuesheet
mkvextract(1)に、直後のトラックのチャプタ情報とタグデータからCUEシートを生成します。出力ファイルの名前はトラックの出力名に'.cue'をつけたものになります。
--raw
コンテナ情報を含まない、rawデータをファイルに抽出します。--fullrawフラグとは違い、このフラグはCodecPrivate要素の内容はファイルに書き出しません。このモードは、mkvextract(1)がサポートしないものも含めて全てのCodecIDで使用できますが、出力されたファイルは使用できないかもしれません。
--fullraw
コンテナ情報を含まない、rawデータをファイルに抽出します。トラックがCodecPrivate要素のヘッダ情報を含む場合、その内容はファイルの先頭に書き出されます。このモードは、mkvextract(1)がサポートしないCodecIDにも使用できますが、出力されたファイルは使用できないかもしれません。
--no-oggFLACトラックに以外には無効です。通常、FLACトラックはOgg transport streamに埋め込まれますが、このスイッチを指定すると、生のFLACファイルが代わりに抽出されます。
TID:outname
IDがTIDであるトラックがソースファイルに存在すれば、outnameに抽出します。このオプションは複数回指定できます。トラックIDは、mkvmerge(1)に--identifyを指定して実行した際の出力に表示されるものと同じです。
各出力ファイル名は一回しか使用されません。RealAudio及びRealVideoトラックは例外です。もし、異なるトラックに同じファイル名が指定された場合、それらは同一のファイルに保存されます。例:
$ mkvextract tracks input.mkv 1:output-two-tracks.rm 2:output-two-tracks.rm
書式: mkvextract tags
source-filename
[options]
抽出されたタグは、出力がリダイレクトされていなればコンソールに出力されます。(詳細については、出力リダイレクトについてのセクションを参照ください。)
書式: mkvextract attachments
source-filename
[options]
AID1:outname1
[AID2:outname2 ...]
IDがAIDである添付ファイルがもしソースファイルに存在すれば抽出します。outnameが指定されない場合、Matroska™に格納された添付ファイルの名前が使用されます。このオプションは複数回指定できます。添付ファイルIDは、mkvmerge(1)に--identifyオプションを指定したときに出力されるものと同じです。
書式: mkvextract chapters
source-filename
[options]
-s, --simpleチャプタ情報をOGM toolsで使用される、シンプルフォーマット(CHAPTER01=..., CHAPTER01NAME=...)で出力します。このモードでは、一部の情報は破棄されます。デフォルトでは、チャプタはXMLフォーマットで出力されます。
抽出されたチャプタは、出力がリダイレクトされていなればコンソールに出力されます。(詳細については、出力リダイレクトについてのセクションを参照ください。)
書式: mkvextract cuesheet
source-filename
[options]
抽出されたCUEシートは、出力がリダイレクトされていなればコンソールに出力されます。(詳細については、出力リダイレクトについてのセクションを参照ください。)
書式: mkvextract timecodes_v2
source-filename
[options]
抽出されたタイムコードは、出力がリダイレクトされていなればコンソールに出力されます。(詳細については、出力リダイレクトについてのセクションを参照ください。)
いくつかのモードでは、mkvextract(1)は抽出されたデータをコンソールに出力します。一般的に、このデータをファイルに書き出すには二つの方法があります。一つはシェルによって提供され、もう一つはmkvextract(1)自体によって提供されます。
シェルビルトインのリダイレクト機構は、コマンドラインに'>
output-filename.ext'を追加することで使用できます。例:
$ mkvextract tags source.mkv > tags.xml
mkvextract(1)自体のリダイレクトは、--redirect-outputオプションを指定することで使用できます。例:
$ mkvextract tags source.mkv --redirect-output tags.xml
Windowsでは、--redirect-outputオプションを使用するべきでしょう。cmd.exeは、特殊文字を出力ファイルに書き出す前に処理してしまい、出力が壊れる虞があります。
出力ファイルのフォーマットの決定は、トラックの種類によって決まり、出力ファイル名の拡張子は使用されません。現在、以下の種類のトラックがサポートされています。
H.264/AVCビデオトラックは、H.264エレメンタリ・ストリームに書き出されます。これは例えばGPAC™パッケージに含まれる、MP4Box™などにより処理できます。
このCodecIDをもつ、固定FPSビデオトラックはAVIファイルに書き出されます。
RealVideo™トラックは、RealMedia™ファイルに書き出されます。
これらは、生のMP3ファイル及びAC3ファイルに抽出されます。
PCMRawデータは、WAVファイルに書き出されます。
全てのAACファイルは、ADTSヘッダを各パケットの前に追加されたうえでAACファイルに書き出されます。ADTSヘッダは、廃止予定であるエンファシスフィールドを含みません。
Vorbis audioはOggVorbis™ファイルに書き出されます。
RealAudio™トラックはRealMedia™ファイルに書き出されます。
TrueAudio™トラックはTTAファイルに書き出されます。Matroska™のタイムコード精度の上限のため、抽出されたファイルのヘッダは、data_lengthフィールド(ファイルに含まれる総サンプル数)とCRCについては不正確になります。
シンプル・テキスト字幕はSRTファイルに書き出されます。
SSA及びASSテキスト字幕は、それぞれSSA、ASSファイルに書き出されます。
Kate™ストリームはOgg™コンテナに格納されます。
タグは、XMLフォーマットに変換されます。このフォーマットはmkvmerge(1)でタグを読み込む際のフォーマットと同じです。
添付ファイルはそのままの形式で出力ファイルに書き出されます。変換等の処理は全く行われません。
チャプタはXMLフォーマットに変換されます。このフォーマットはmkvmerge(1)がチャプタを読み込む際のフォーマットと同じです。他にも、簡略化されたOGMスタイルのフォーマットで出力することもできます。
タイムコードはまず整列された後に、mkvmerge(1)で読み込むことのできる timecode v2 形式に準拠するファイルに書き出されます。他の形式(v1, v3, v4)への抽出はサポートされていません。