table of contents
other versions
- wheezy 5.6.0-1
- jessie 7.3.0-1
- testing 9.8.0-dmo1
- unstable 9.8.0-dmo1
- experimental 12.0.0-1
other languages
MKVMERGE(1) | MKVMERGE(1) |
名前¶
mkvmerge - マルチメディアストリームをMatroska(TM)ファイルに格納します。書式¶
mkvmerge
[global options] {-o out} [options1] {file1}
[[options2] {file2}] [@optionsfile]
説明¶
このプログラムはいくつかのメディアファイルを入力とし、それらに格納されたストリームのうち全て、もしくは選択されたものをMatroska(TM)ファイルに書き込みます。 Matroska(TM)[1]のウェブサイトも参照してください。グローバルオプション¶
-v, --verboseより詳細な情報を表示します
-q, --quiet
ステータス情報の出力を抑制します。
-o, --output file-name
file-nameで指定したファイルに書き込みます。もし、ファイル分割が有効な場合このオプションは若干解釈が違います。詳細は--splitオプションの説明を参照してください。
-w, --webm
WebMの規格に準拠したファイルを作成します。mkvmergeは出力ファイル名の拡張子が"webm"であった場合にもこれをオンにします。このモードではいくつかの制限が実施されます。使用できるコーデックはVP8ビデオとVorbisオーディオのトラックのみです。チャプタとタグは使用することができません。DocTypeヘッダアイテムは"webm"へと変更されます。
--title title
出力ファイル全体のタイトルを指定します(例:映画のタイトルなど)。
--default-language language-code
デフォルトの言語コードを指定します。--languageオプションで指定しなかったトラックはすべてここで指定した言語コードになります。デフォルトは'und'、つまり'未定義'です。
セグメント情報の扱い (グローバルオプション)¶
--segmentinfo filename.xml使用するセグメントUIDを設定します。これはコンマで区切られた、通常のUID形式("0x"を前置する、またはしない、空白を含む、または含まない、ちょうど32桁の16進数)128ビットセグメントUIDのリストです。
作成される各ファイルは一つのセグメントを含み、そして各セグメントは一つのセグメントUIDを持ちます。もし、作成されたセグメントよりも多数のセグメントUIDが指定された場合、余ったセグメントUIDは無視されます。また、もし指定されたセグメントUIDよりも多数のセグメントが作成された場合は、ランダムなUIDが作成されて使用されます。
チャプタ及びタグの扱い (グローバルオプション)¶
--chapter-language language-code各チャプタのエントリに書き込むISO639-2言語コードを指定します。デフォルトは'eng'です。詳細はチャプタのセクションを参照してください。
このオプションはシンプルチャプタファイルを読み込んだ場合、そしてソースファイルがチャプタを含むがチャプタの言語情報を含まなかった場合(例:MP4,OGMファイル)に適用されます。
--chapter-charset character-set
シンプルチャプタファイルをUTF-8に変換する際の文字コードを指定します。mkvmerge(1)の文字コード変換については、テキストファイルと文字コードのセクションを参照してください。
このスイッチはチャプタがOgg,OGMファイルなどのコンテナからコピーされる際にも適用されます。詳細については後述のチャプタについてのセクションを参照してください。
--cue-chapter-name-format format
•%pはそのエントリのPERFORMER文字列で置換されます。
•%tはそのエントリのTITLE文字列で置換されます。
•%nはそのエントリのトラック番号で置換されます。
•%Nは、そのエントリのトラック番号が10未満の場合0を前置して二桁にした数字で置換されます。
チャプタ情報をfile-nameで指定したファイルから読み込みます。詳細はチャプタのセクションを参照してください。
--global-tags file-name
出力一般のコントロール(高度なグローバルオプション)¶
--track-order FID1:TID1,FID2:TID2,...このオプションは入力されたトラックが配置される順序を変更します。オプション引数はコンマで区切られるIDペアのリストです。各ペアは最初を0としてコマンドラインの何番目に指定したファイルであるかを示すファイルID(FID1)と、そのファイルの中の何番目のトラックかを示すトラックID(TID1)からなります。ここで指定されなかったトラックは、指定されたトラックの後に配置されます。
--cluster-length spec
クラスタごとの、データブロック個数の上限または持続時間を指定します。specパラメータには単位なしの数字nもしくは、'ms'を後ろに付けた数字dを指定することができます。
単位が指定されなかった場合、クラスタごとのデータブロックの最大個数は
nに設定されます。上限は65535です。
数字
dに'ms'が後置されていた場合、
mkvmerge(1)は各データクラスタ毎に最大でもdミリ秒分のデータしか格納しません。dの最小値は'100ms'、最大値は'32000ms'です。
デフォルトは、データクラスタ毎に65535データブロック以下、5000ms以下のデータを書き込みます。
プログラムがあるフレームを見つけようとするときは、クラスタに直接シークして、その後クラスタ全体を読み込みます。よって、より大きなクラスタを作ると、シークが不正確かつ遅くなるかもしれません。
--no-cues
キューデータ(AVIファイルにおけるインデックスのようなもの)を作成しません。キューデータなしでもファイルは再生できますが、シークは不正確かつ遅くなるでしょう。このオプションは、少しでもファイルサイズを小さくしようと必死なとき、またはテスト目的以外には使用しないでください。--cuesオプションは各入力ファイルごとに指定できます。
--clusters-in-meta-seek
ファイルの終端に全てのクラスタを含むメタシーク要素を作成します。Matroska(TM)ファイルレイアウトのセクションも参照してください。
--disable-lacing
全てのトラックで複数のフレームを1つのブロックにまとめません。これは特に多数のオーディオトラックがある場合に、ファイルサイズを増大させます。テスト目的でのみ使用してください。
--enable-durations
全てのブロックの長さを記録します。これはファイルサイズを増大させますが、現在のところプレーヤには何のメリットももたらしません。
--timecode-scale factor
タイムコードスケールの係数をfactorに強制設定します。この値は1000~10000000、もしくは-1に設定しなければなりません。
通常
mkvmerge(1)は1000000を使用します。これはタイムコードとフレーム持続期間が1ミリ秒単位の精度を持つことを意味します。ビデオトラックを含まず、1つ以上のオーディオトラックを含むファイルでは、
mkvmerge(1)は全てのタイムコードとフレーム持続時間がサンプリング音1つ分の精度を持つようタイムコードスケールの係数を自動的に選択します。これによってオーバーヘッドは大きくなりますが、正確なシークと展開が可能になります。
特殊な値
-1が指定された場合、たとえビデオトラックが存在していてもサンプリング音の精度を使用します。
ファイルの分割と紐付け、追加結合、連結(グローバルオプションの続き):¶
--split specification出力ファイルを指定したサイズ、又は時間で分割します。トラックはキーフレームの直後でしか分割できないことに注意してください。mkvmerge(1)はバッファリングを行うため、ファイルは分割すべき点の次にくるキーフレームの直前で分割されます。よって、分割点はユーザが指定した点よりも若干後ろになります。
At the moment mkvmerge(1) supports four different modes.
1.指定サイズで分割します。
書式: --split [size:] d[k|m|g]
例: --split size:700m or --split 150000000
パラメータ
dの後ろには'k'・'m'・'g'を付けて、単位がそれぞれKB・MB・GBであることを示すことができます。付けない場合はバイト単位になります。出力中のファイルがこの上限に達したら、次の新しいファイルへの出力が開始されます。
'size:'という接頭辞は、互換性のために省略できるようになっています。
2.指定時間で分割します。
書式: --split [duration:] HH:MM:SS.nnnnnnnnn|ds
例: --split duration:00:60:00.000 or --split 3600s
パラメータは
HH:MM:SS.nnnnnnnnnという形式でナノ秒精度で長さを指定するか、数字
dのあとに's'と書いて秒数で長さを指定しなければなりません。HHは時間、MMは分、SSは秒数でnnnnnnnnnナノ秒を示します。時間及びナノ秒は省略できます。小数点の後ろには9桁までの数字を指定できます。指定した長さだけ出力されたら、次のファイルへの出力が開始されます。
'duration:'という接頭辞は、互換性のために省略できるようになっています。
3.指定した各タイムコードで分割します。
書式: --split timecodes: A[,B[,C...]]
例: --split timecodes:00:45:00.000,01:20:00.250,6300s
パラメータ
A、B、C...は、durationで使用されるものと同じフォーマットで指定しなければなりません(上記参照)。タイムコードのリストはコンマで区切られます。入力ストリームが現在の分割点に達すると次のファイルが作成され、このリストから次の分割点が使用されます。
'timecodes:'という接頭辞は、互換性のために省略できるようになっています。
4.Keeping specific parts by specifying
timecode ranges while discarding others.
Syntax: --split parts:
start1-end1[,[+]start2-end2[,[+]
start3-end3...]]
Examples:
1.--split
parts:00:01:20-00:02:45,00:05:50-00:10:30.RE
2.--split
parts:00:01:20-00:02:45,+00:05:50-00:10:30.RE
この分割モードでは、出力ファイル名は通常の操作とは異なる扱いを受けます。このモードでは出力ファイル名は
printfのように'%d'というパターンを含むことができます。'%02d'のように幅指定を追加することもできます。出力ファイル名がこのパターンを含む場合、ファイル番号が適切なフォーマットで指定された位置に挿入されます。含まない場合、'-%03d'というパターンがファイルの拡張子の直前に指定されたものとみなされ、例えば'-o
output.mkv'を指定した場合、'output-001.mkv'等のファイル名に出力されます。拡張子が存在しない場合、'-%03d'はファイル名の末尾に追加されます。
--link
3.--split parts:-00:02:45,00:05:50-.RE
The parts mode tells mkvmerge(1) to keep certain ranges of timecodes
while discarding others. The ranges to keep have to be listed after the parts:
keyword and be separated by commas. A range itself consists of a start and an
end timecode in the same format the other variations of --split accept
(e.g. both 00:01:20 and 80s refer to the same timecode).
If a start timecode is left out then it defaults to the previous range's end
timecode. If there was no previous range then it defaults to the start of the
file (see example 3).
If an end timecode is left out then it defaults to the end of the source files
which basically tells mkvmerge to keep the rest (see example 3).
Normally each range will be written to a new file. This can be changed so that
consecutive ranges are written to the same file. For that the user has to
prefix the start timecode with a +. This tells mvkmerge not to create a new
file and instead append the range to the same file the previous range was
written to. Timecodes will be adjusted so that there will be no gap in the
output file even if there was a gap in the two ranges in the input file.
In example 1 mkvmerge will create two files. The first will contain the content
starting from 00:01:20 until 00:02:45. The second file will contain the
content starting from 00:05:50 until 00:10:30.
In example 2 mkvmerge will create only one file. This file will contain both the
content starting from 00:01:20 until 00:02:45 and the content starting from
00:05:50 until 00:10:30.
In example 3 mkvmerge will create two files. The first will contain the content
from the start of the source files until 00:02:45. The second file will
contain the content starting from 00:05:50 until the end of the source
files.
分割された出力ファイルを相互に紐付けします。詳細はファイル紐付けのセクションを参照してください。
--link-to-previous segment-UID
最初の出力ファイルをsegment-UIDで指定したセグメントUIDに紐付けします。詳細はファイル紐付けのセクションを参照してください。
--link-to-next segment-UID
最後の出力ファイルをsegment-UIDで指定したセグメントUIDに紐付けします。詳細はファイル紐付けのセクションを参照してください。
--append-mode mode
ファイルを結合する際に、タイムコードがどのように計算されるかを決定します。パラメータmodeは'file'(デフォルト)、'trackの二つの値を取り得ます。
mkvmergeが二つめのファイル(以後'file2'と呼ぶ)のトラック(以後'track2_1'と呼ぶ)を、一つめのファイル(以後'file1'と呼ぶ)のトラック(以後'track1_1'と呼ぶ)と結合する際、'track2_1'のタイムコードは一定量だけずらす必要があります。'file'モードでは、ずらす量は'file1'の中の'track1_1'以外のトラックを含む全てのトラックの中で一番大きいタイムコードの値になります。'track'モードでは、'track1_1'の中で一番大きいタイムコードの値になります。
残念ながら、mkvmergeはどちらのモードが適切であるか判断はできません。デフォルトは'file'モードになっています。'file'モードは独立に作られたファイル同士を結合する際、例えばAVI又はMP4ファイルを結合する際に、通常はより上手く働きます。'tracks'モードは、例えばVOBやEVOファイルなどの大きなファイルの一部がソースの場合より上手く働くかもしれません。
字幕トラックは'track'モードが指定された場合でも、常に'file'が指定されたかのように処理されます。
--append-to SFID1:STID1:DFID1:DTID1[,...]
このオプションは、どのトラックがどのトラックに追加されるのかを制御します。ファイルID、トラックID、追加するファイルID、追加するトラックIDの4つのIDで一組の指定を構成します。最初のファイルIDとトラックIDの組み合わせは、追加される対象のトラックを指定します。次のファイルIDとトラックIDは、そのトラックに追加されるトラックを指定します。
このオプションが指定されない場合、標準のマッピングが使用されます。この場合、前のファイルのトラックに、現在のファイルのトラックIDが同じであるトラックが追加されます。これにより、動画が二つのファイルに分割されており、かつ同じトラック数とトラックIDを持つ場合、
mkvmerge -o output.mkv part1.mkv
+part2.mkvのようにして簡単に結合することができます。
+
'+'一文字を指定すると、次に指定されたファイルは追加ではなく結合されます。'+'は次のファイル名の直前に置くこともできます。よって、次の2つのコマンドは等価です。
=
$ mkvmerge -o full.mkv file1.mkv + file2.mkv $ mkvmerge -o full.mkv file1.mkv +file2.mkv
通常mkvmergeは、入力ファイルと同じディレクトリにあり、同じ基底名を持ち、通し番号だけが異なるファイル(例:'VTS_01_1.VOB',
'VTS_01_2.VOB', 'VTS_01_3.VOB'
etc)を検索し、それらのファイル全てを、まるで1つの大きなファイルへと連結されているかのように扱います。この'='一文字のオプションを使うと、mkvmergeはそういった追加ファイルを検索しません。
'='は次のファイル名の直前に置くこともできます。よって、次の2つのコマンドは等価です。
( file1 file2 )
$ mkvmerge -o full.mkv = file1.mkv $ mkvmerge -o full.mkv =file1.mkv
複数のファイル名が括弧の中に含まれている場合、それらのファイルは、各ファイルの内容によって順々に構成される1つの大きなファイルへと連結されているかのように扱われます。
これは、例えばDVDのVOBファイルやMPEGトランスポートストリーム等のために使用することができます。通常AVIやMP4のようなスタンドアローンのファイルの場合ですが、各ファイルが自身のヘッダを一通り含んでいる場合には使用することができません。
ファイル名を括弧で括るのは、オプション
=で説明されているように同じ基底名を持つファイルをmkvmerge(1)に検索させない効果もあります。
よって、これらの2つのコマンドラインは同値です:
いくつか注意事項があります:
$ mkvmerge -o out.mkv = file.mkv $ mkvmerge -o out.mkv '(' file.mkv ')'
1.開く括弧の後と閉じる括弧の前の両方に空白が必要です。
2.括弧内の全てのパラメータはファイル名として解釈されます。よって、この論理上のファイルに適用される全てのオプションは、開く括弧の前に記述する必要があります。
3.括弧を特殊文字として扱うシェルもあります。よって、上の例で示されているように括弧をエスケープするかクォーテーションで囲む必要があります。
添付ファイルのサポート(グローバルオプションの続き)¶
--attachment-description description次の添付ファイルを説明するプレーンテキストを指定します。次の--attach-fileオプション又は--attach-file-onceオプションで指定した添付ファイルに適用されます。
--attachment-mime-type MIME type
次の添付ファイルのMIMEタイプを指定します。--attach-file及び--attach-file-onceオプションに適用されます。公式に認知されているMIMEタイプは例えばIANAのホームページ[2]に掲載されています。MIMEタイプは添付ファイルに必須です。
--attachment-name name
この添付ファイルの、出力ファイル内での名前を指定します。このオプションが指定されなかった場合、--attach-fileまたは--attach-file-onceで指定されたファイル名がそのまま使用されます。
--attach-file file-name, --attach-file-once
file-name
各入力ファイルに指定できるオプション¶
-a, --audio-tracks [!]n,m,...オーディオトラックn、m...をコピーします。番号は--identifyオプションで得られるトラックIDです。これは単純にトラック番号を示すものではありません(トラックIDのセクションを参照してください)。デフォルト:
全てのオーディオトラックをコピーします。
もしIDにプレフィックス!がついていた場合は、意味が逆になります:!の後に列挙されたIDを除く全てをコピーします。
-d, --video-tracks [!]n,m,...
ビデオトラックn、m...をコピーします。数字は--identifyオプションで得られるトラックIDです。これは単純にトラック番号を示すものではありません(トラックIDのセクションを参照してください)。
デフォルト:
全てのビデオトラックをコピーします。
もしIDにプレフィックス!がついていた場合は、意味が逆になります:!の後に列挙されたIDを除く全てをコピーします。
-s, --subtitle-tracks [!]n,m,...
字幕トラックn、m...をコピーします。番号は--identifyオプションで得られるトラックIDです。これは単純にトラック番号を示すものではありません(トラックIDのセクションを参照してください)。デフォルト:
全ての字幕トラックをコピーします。
もしIDにプレフィックス!がついていた場合は、意味が逆になります:!の後に列挙されたIDを除く全てをコピーします。
-b, --button-tracks [!]n,m,...
ボタントラックn、m...をコピーします。番号は--identifyオプションで得られるトラックIDです。これは単純にトラック番号を示すものではありません(トラックIDのセクションを参照してください)。デフォルト:
全てのボタントラックをコピーします。
もしIDにプレフィックス!がついていた場合は、意味が逆になります:!の後に列挙されたIDを除く全てをコピーします。
--track-tags [!]n,m,...
トラックn、m...のタグをコピーします。番号は--identifyオプションで得られるトラックIDです。これは単純にトラック番号を示すものではありません(トラックIDのセクションを参照してください)。デフォルト:
全てのトラックのタグをコピーします。
もしIDにプレフィックス!がついていた場合は、意味が逆になります:!の後に列挙されたIDを除く全てをコピーします。
-m, --attachments
[!]n[:all|first],m[:all|first],...
IDがn、m...の添付ファイルを全ての、または最初の出力ファイルにコピーします。各IDの後ろには、':all'(デフォルト)又は':first'を指定することができます。出力ファイル分割が有効の場合、':all'をつけたIDの添付ファイルは全ての出力ファイルにコピーされ、':first'をつけた場合は最初の出力ファイルにのみコピーされます。分割が有効でない場合は二つは同等です。
デフォルトでは、全ての添付ファイルが全ての出力ファイルにコピーされます。
もしIDにプレフィックス!がついていた場合は、意味が逆になります:!の後に列挙されたIDを除く全てをコピーします。
-A, --no-audio
このファイルからオーディオトラックをコピーしません。
-D, --no-video
このファイルからビデオトラックをコピーしません。
-S, --no-subtitles
このファイルから字幕トラックをコピーしません。
-B, --no-buttons
このファイルからボタントラックをコピーしません。
-T, --no-track-tags
このファイルからオーディオトラックをコピーしません。
--no-chapters
このファイルからチャプタをコピーしません。
-M, --no-attachments
このファイルから添付ファイルをコピーしません。
--no-global-tags
このファイルからグローバルタグを引き継ぎません。
--chapter-charset character-set
ソースファイルに含まれるチャプタ情報ををUTF-8に変換する際の文字コードを指定します。mkvmerge(1)の文字コード変換については、テキストファイルと文字コードのセクションを参照してください。
--chapter-language language-code
各チャプタエントリのISO639-2言語コードを指定します。このオプションはソースファイルがチャプタは含みますが、チャプタの言語情報を含まない場合(例:MP4、OGMファイル)に使用されます。
-y, --sync TID:d[,o[/p]]
トラックIDがTIDのトラックのタイムコードをdミリ秒だけ調整します。トラックIDは--identifyオプションで得られるものと同じです(トラックIDのセクションを参照してください)。
o/p:
タイムスタンプを
o/pの割合で調整し、リニアドリフトを修正します。
pが省略された場合、デフォルトで1が使用されます。o及びpには小数を指定できます。
デフォルト:
マニュアル同期修正は行われません(
d = 0 かつ o =
1.0の場合と同じです)。
このオプションは異るトラックIDを指定することで複数の入力トラックに対して使用することができます。
--cues TID:none|iframes|all
指定されたトラックについて、どのトラックCUE(インデックス)エントリが作成されるのかを指定します(トラックIDのセクションを参照)。'none'はCUEエントリを作成しません。'iframesは前方参照及び後方参照を含まないブロック(ビデオトラックでは
I
frame)のみがCUEシートに挿入されます。'all'では
mkvmerge(1)は全てのブロックに対してCUEエントリを作成し、非常に大きなファイルを出力するでしょう。
デフォルトはビデオトラックは'iframesで、その他のトラックは'none'です。
--cuesが使用されているかどうかに関わらずCUEエントリの作成を抑制する、--no-cuesオプションも参照してください。
このオプションは異るトラックIDを指定することで複数の入力トラックに対して使用することができます。
--default-track TID[:bool]
省略可能な引数boolが指定されなかった場合、指定されたトラックに'デフォルト'フラグを付与します(トラックIDのセクションも参照)。ユーザが明示的にトラックを選択しなかった場合、プレイヤーは'デフォルト'フラグの付いたトラックを優先的に再生します。各トラックの種類(オーディオ、ビデオ、字幕、ボタン)ごとに、一つだけのトラックにだけ'デフォルト'フラグは付与できます。もし、デフォルトフラグをどのトラックにも付けたくない場合は、全てのトラックでboolを0にすれば可能です。
このオプションは異るトラックIDを指定することで複数の入力トラックに対して使用することができます。
--forced-track TID[:bool]
省略可能な引数boolが指定されなかった場合、指定されたトラックに'強制表示'フラグを付与します(トラックIDのセクションも参照。)プレーヤはこのフラグが1に設定されている全てのトラックを再生しなければなりません。
このオプションは異るトラックIDを指定することで複数の入力トラックに対して使用することができます。
--blockadd TID:level
指定したトラックで、レベルlevelまでのBlockAdditionを保持します。デフォルトでは全て保持します。このオプションはWAVPACK4などの特定のコーデックにのみ有効です。
--track-name TID:name
指定したトラックのトラック名をnameにします(トラックIDのセクションも参照)。
--language TID:language
指定したトラックの言語を設定します(トラックIDのセクションも参照)。ISO639-2
言語コード及び ISO639-1
国別コードが使用できます。国別コードは言語コードへ自動的に変換されます。ISO639-2
に含まれる全てのコードは
--list-languagesオプションで一覧できます。
このオプションは異るトラックIDを指定することで複数の入力トラックに対して使用することができます。
-t, --tags TID:file-name
指定したトラックIDのタイムコードを、file-nameから読み込みます。これらのタイムコードはmkvmerge(1)が通常計算するタイムコードを強制的に上書きします。外部タイムコードファイルのセクションを参照してください。
--default-duration TID:x
指定したトラックの
default duration
を強制的に設定します。トラックのトラックのタイムコードも、
default duration
に合うように変更されます。引数
xは's'、'ms'、'us'、'ns'、'fps'、p'。'iのうちどれか一つを後置されていなければなりません。それぞれ、
default duration
は秒、ミリ秒、マイクロ秒、ナノ秒、'fps'、1秒あたりのプログレッシブフレーム、1秒あたりのインターレスのフレーム数単位で指定されます。
xは小数または分数で指定できます。
デフォルトのフレーム持続時間が指定されなかった場合は、mkvmergeはそのトラックのデフォルトのフレーム持続時間を、コンテナと、AVC/h.264やMPEG-2のような特定のトラックタイプの場合はエンコードされたビットストリームから取得しようと試みます。
このオプションは、外部タイムコードファイルを使用せずにビデオトラックのFPSを変更するのにも使えます。
--nalu-size-length TID:n
トラックの圧縮法を選択します。プレイヤーが選択した圧縮法をサポートしている必要があることに注意してください。指定できる圧縮法は、'none'、'zlib'、'lzo'/'lxo1x'、'bz2'/'bzlib'及び'mpeg4_p2'/'mpeg4p2'です。'lzo'/'lxo1x'と'bz2'/'bzlib'はmkvmerge(1)がそれぞれ、liblzo(TM)及びbzlib(TM)圧縮ライブラリのサポート付きでコンパイルされたときのみ使用できます。
'mpeg4_p2'/'mpeg4p2'圧縮法は、 MPEG4 part2
ビデオトラックにのみ適用できる、'header
removal'と呼ばれる特殊な圧縮法です。
いくつかの字幕トラックにおけるデフォルトは'zlib'圧縮法です。この圧縮法はほとんど全ての再生アプリケーションでサポートされています。'none'以外の他の圧縮法については、サポートされているとは限りません。
ビデオトラックにのみ適用されるオプション¶
-f, --fourcc TID:FourCCアスペクト比を設定するもうひとつの方法は、元のアスペクト比からの係数を指定する方法です。元のアスペクト比に、factorを乗じたものが新しいアスペクト比として使用されます。
これらの値を設定する別の方法として、
--aspect-ratio又は--display-dimensionsオプションが使用できます(上記参照)。これらのオプションは互いに排他的です。
--cropping TID:left,top,right,bottom
ビデオトラックのピクセルクロッピングのパラメータを指定した値に設定します。
--stereo-mode TID:n|keyword
トラックIDがTIDのビデオトラックのステレオモードを設定します。ステレオモードは、0~14の数字n、または以下のキーワードのうちの1つを指定することができます:
'mono', 'side_by_side_left_first', 'top_bottom_right_first',
'top_bottom_left_first', 'checkerboard_right_first',
'checkerboard_left_first', 'row_interleaved_right_first',
'row_interleaved_left_first', 'column_interleaved_right_first',
'column_interleaved_left_first', 'anaglyph_cyan_red',
'side_by_side_right_first', 'anaglyph_green_magenta',
'both_eyes_laced_left_first', 'both_eyes_laced_right_first'.
テキスト字幕トラックにのみ適用されるオプション¶
--sub-charset TID:character-set指定したIDの示すトラックのUTF-8字幕をUTF-8へ変換する際の文字コードを指定します。デフォルトでは、現在のロケールの設定が使用されます。mkvmerge(1)の文字コード変換については、テキストファイルと文字コードのセクションを参照してください。
このオプションは異るトラックIDを指定することで複数の入力トラックに対して使用することができます。
その他のオプション¶
-i, --identify file-nameサポートされている入力ファイルの種類を列挙します。
--list-languages
コマンドライン文字列の文字コードを指定します。デフォルトは、システムの現在のロケールの文字コードになります。この設定は--title、--track-name、及び--attachment-descriptionの三つのオプションの引数に影響します。
--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と指定すると、指定できる言語コードの一覧を出力します。
--debug topic
特定の機能のデバッグをオンにします。このオプションは開発者にのみ有用です。
--engage feature
実験的機能をオンにします。利用可能な機能のリストはmkvmerge
--engage
listで得られます。これらの機能は通常の状況で使用されることは意図されていません。
@options-file
ファイルoptions-fileから追加のコマンドライン引数を読み込みます。詳細はオプションファイルのセクションを参照してください。
--capabilities
コンパイル時に組込まれたオプション機能を一覧表示して終了します。出力の一行目はバージョン情報になります。以降の全ての行は、その機能がコンパイルされていることを示す一単語のみを含みます。オプション機能の一覧を下に示します。
-h, --help
•"'BZ2' --
bzlib(TM)圧縮ライブラリ。
--compressionオプションに指定できる圧縮メソッドに影響します。
•'LZO' --
lzo(TM)圧縮ライブラリ。
--compressionオプションに指定できる圧縮メソッドに影響します。
•'FLAC' --
生FLACファイルの読み込み及び、他のコンテナ(例:
Ogg(TM)、Matroska(TM)など)に格納されたFLACトラックの処理。
コマンド書式情報を出力して終了します。
-V, --version
バージョン情報を出力して終了します。
--check-for-updates
使用法¶
各ファイルについて、ユーザは mkvmerge(1)が取り出すべきトラックを選択できます。取り出されたトラックは、すべて-oで指定されたファイルに書き出されます。既知の(サポート済の)入力ファイルフォーマットは-lオプションで取得できます。オプションの順番¶
いくつかのオプションでは、入力する順番が重要になります。オプションは2つに分類されます:
1.プログラム全体に影響し、どの入力ファイルにも関連付けられていないオプション。例えば、
--command-line-charset、--output、--titleなどです。これらのオプションは、コマンドラインのどこに書いても構いません。
2.1つの入力ファイルのみ、もしくは入力ファイル中の1つのトラックのみに影響するオプション。これらのオプションは全て、コマンドラインでその後ろに続く入力ファイルに適用されます。同じ入力ファイル(または同じ入力ファイル中のトラック)に適用される全てのオプションは、その入力ファイルのファイル名の前に書きさえすれば、どんな順番でも構いません。1つの入力ファイルに適用されるオプションの例を挙げると、
--no-chaptersや--chapter-charsetなどがあります。1つのトラックのみに適用されるオプションには、例えば--default-durationや--languageがあります。
オプションは左から右へと処理されます。もし同じスコープ内に1つのオプションが2回以上出てきた場合には、最後のものが使われます。よって、次の例ではタイトルは"Something
else"に設定されます。
$ mkvmerge -o output.mkv --title 'This and that' input.avi --title 'Something else'
$ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg
例¶
あなたは、 MyMovie.avi というファイルを持っていて、またオーディオトラックが別の、例えば 'MyMovie.wav'というファイルに入っているとします。あなたは、まず音声をOggVorbis(TM)でエンコードしたいと思います。$ oggenc -q4 -oMyMovie.ogg MyMovie.wav
$ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg
$ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg
$ oggenc -q4 -oMyMovie-add-audio.ogg MyMovie-add-audio.wav $ mkvmerge -o MM-complete.mkv MyMovie-with-sound.mkv MyMovie-add-audio.ogg
$ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg
$ mkvmerge --identify outofsync.ogg
$ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg
$ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv
1.ソースから生字幕を抽出:
$ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie
2.出力されたPGMイメージをgocrでテキスト化:
$ pgm2txt mymovie
3.出力されたテキストファイルを校正:
$ ispell -d american *txt
4.テキストファイルをSRTファイルに変換:
出力されたファイルを
mkvmerge(1)の入力ファイルとして使用する:
$ srttool -s -w -i mymovie.srtx -o mymovie.srt
$ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt
$ mkvmerge --list-languages
$ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.mkv
$ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track 3 without-lang-codes.mkv --language 0:eng english.srt --default-track 0 --language 0:fre french.srt
$ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt
トラックID¶
$ mkvmerge -i v.mkv File 'v.mkv': container: Matroska(TM) Track ID 1: video (V_MS/VFW/FOURCC, DIV3) Track ID 2: audio (A_MPEG/L3)
•
AVIファイル:
ビデオトラックのIDは0になります。オーディオトラックのIDは1から昇順に割り当てられます。
•
AAC、AC3、MP3、SRT、及びWAVファイル:
ファイル中の唯一のトラックがID
0
を割り当てられます。
•その他の殆どのファイル:トラックIDは、トラックがファイル中で見つかった順番に0から割り当てられます。
'
-1'は特殊で、そのスイッチが入力ファイルから読み込まれる全てのトラックに適用されることを示します。
トラックIDを使用するオプションの説明には、'TID'が含まれています。また、
--audio-tracks、--video-tracks、--subtitle-tracks、--button-tracks及び--track-tagsオプションもトラックIDを使用します。
テキストファイルと文字コード変換¶
•
--sub-charsetは、テキスト字幕ファイルの文字コードと、他のコンテナに格納されたテキスト字幕トラックの文字コードが曖昧さなく決定できない場合(例:
Oggファイル)の文字コードを指定します。
•
--chapter-charsetは、チャプタテキストファイルの文字コードと、他のコンテナフォーマットに格納されているチャプタ及びタイトルの文字コードを曖昧さなく決定できない場合(例:
Oggファイルのチャプタ情報、トラックとファイルのタイトル等、及びMP4ファイルのチャプタ情報)の文字コードを指定します。
•
--command-line-charsetは全てのコマンドライン文字列の文字コードを指定します。
•
--output-charsetはコンソールに出力される文字列の文字コード及び、--redirect-outputオプションによりファイルに出力がリダイレクトされている場合、そのファイルの文字列の文字コードを指定します。
オプションファイル:¶
オプションファイルとは、 mkvmerge(1)が追加のコマンドラインの引数をそれから読み込むことができるものです。これは、コマンドラインの長さ制限等の、外部プログラムを実行する際のシェルやオペレーティングシステムの特定の制限を回避するために使用することができます。 オプションファイルに関していくつか規則があります。行で最初の空白文字でない文字がハッシュマーク('#')である行はコメントとして扱われ、無視されます。行頭、及び行末の空白文字は取り除かれます。各行には一つずつしかオプションを指定できません。 何も書かれていない行も無視されます。空の引数は、'#EMPTY#'という行によって表すことができます。 エスケープすることのできる文字もあります。例えば、コメントではない行を'#'で始める必要のある場合です。そのルールは、エスケープ文字についてのセクションで説明されています。 バックスラッシュ(Windows上の日本語フォントでは\記号)は、必ずエスケープされなければなりません。ハッシュマーク(#)は、それがコメントの始まりでなければエスケープされなければなりません。 ' mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg'というコマンドラインと同じことは、次のようなオプションファイルによって指定できます。# Windowsでは、"my file.mkv" に書き込む。 -o c:\\Matroska\\my file.mkv # タイトルを'#65'に設定する。 --title \h65 # "a movie.avi" からビデオトラックのみを取り出す。 -A a movie.avi sound.ogg
テキスト中の特殊文字をエスケープする¶
特殊文字をエスケープしなければならない、あるいはすべき場所が少しだけあります。エスケープのルールは単純です:エスケープする必要のある各文字を、バックスラッシュ(Windows上の日本語フォントでは\記号)の後ろに違う文字が1つついたものと入れ替えます。 ルール:' '(半角スペース)は'\s'に、'"'(ダブルクォーテーション)は'\2'に、':'は'\c'に、'#'は'\h'に、そして'\'それ自体は'\\'になります。字幕¶
•SubRipテキスト字幕形式(SRT)ファイル
•Substation Alpha (SSA) / Advanced
Substation (ASS) 字幕
•Universal Subtitle Format
(USF)ファイル
•OggKateストリーム
•VobSubビットマップ字幕
•ブルーレイディスクで見られるようなPGSビットマップ字幕ファイル
ファイル紐付け¶
デフォルト値¶
添付ファイル¶
$ mkvmerge -o output.mkv -A video.avi sound.ogg \ --attachment-description "Me and the band behind the stage in a small get-together" \ --attachment-mime-type image/jpeg \ --attach-file me_and_the_band.jpg \ --attachment-description "The real rare and unbelievably good looking font" \ --attachment-type application/octet-stream \ --attach-file really_cool_font.ttf
チャプタ¶
シンプルチャプタフォーマット¶
このフォーマットは、'CHAPTERxx='で始まる行と'ChapterxxNAME='で始まる行のペアから成ります。前者の行は開始タイムコードを含み、後者はタイトルを含みます。下に例を示します。CHAPTER01=00:00:00.000 CHAPTER01NAME=Intro CHAPTER02=00:02:30.000 CHAPTER02NAME=Baby prepares to rock CHAPTER03=00:02:42.300 CHAPTER03NAME=Baby rocks the house
XMLチャプタフォーマット¶
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"> <Chapters> <EditionEntry> <ChapterAtom> <ChapterTimeStart>00:00:30.000</ChapterTimeStart> <ChapterTimeEnd>00:01:20.000</ChapterTimeEnd> <ChapterDisplay> <ChapterString>A short chapter</ChapterString> <ChapterLanguage>eng</ChapterLanguage> </ChapterDisplay> <ChapterAtom> <ChapterTimeStart>00:00:46.000</ChapterTimeStart> <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd> <ChapterDisplay> <ChapterString>A part of that short chapter</ChapterString> <ChapterLanguage>eng</ChapterLanguage> </ChapterDisplay> </ChapterAtom> </ChapterAtom> </EditionEntry> </Chapters>
1.チャプタの終了タイムコードを指定できます。
2.ネストしたチャプタを作成できます。
3.言語及び国を設定できます。
mkvtoolnixは、テンプレートとなるサンプルファイルと一緒に配布されています。サンプルファイルはdocサブディレクトリの中にあります。
以下にサポートされているXMLタグ、そのデータタイプ、そして適切な場所では、その値の有効な範囲を挙げます:
Chapters (master) EditionEntry (master) EditionUID (unsigned integer, valid range: 1 <= value) EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1) EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1) EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1) ChapterAtom (master) ChapterAtom (master) ChapterUID (unsigned integer, valid range: 1 <= value) ChapterTimeStart (unsigned integer) ChapterTimeEnd (unsigned integer) ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1) ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1) ChapterSegmentUID (binary, valid range: 1 <= length in bytes) ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value) ChapterPhysicalEquiv (unsigned integer) ChapterTrack (master) ChapterTrackNumber (unsigned integer, valid range: 1 <= value) ChapterDisplay (master) ChapterString (UTF-8 string) ChapterLanguage (UTF-8 string) ChapterCountry (UTF-8 string) ChapterProcess (master) ChapterProcessCodecID (unsigned integer) ChapterProcessPrivate (binary) ChapterProcessCommand (master) ChapterProcessTime (unsigned integer) ChapterProcessData (binary)
注意¶
タグ¶
はじめに¶
タグのスコープ¶
例¶
あなたは、AVIから読み込まれるビデオトラックにタグをつけたいと仮定しましょう。 mkvmerge --identify file.aviを実行すると、ビデオトラックのトラックID(このIDをUIDと混同しないでください!)は0であると教えてくれます。よって、あなたは全てのTargetsエレメントを記入しないタグファイルを作成し、 mkvmerge(1)を以下のように実行します。$ mkvmerge -o file.mkv --tags 0:tags.xml file.avi
タグファイルフォーマット¶
•最も外側のエレメントは<Tags>でなければなりません。
•一個の論理タグは<Tag>XMLタグの内部に包含されます。
•タグの中身の直前・直後のスペースは無視されます。
データタイプ¶
新しいMatroska(TM)タグシステムは、UTF-8文字列とバイナリの二つのデータタイプしか認識しません。前者はタグの名前と<Strings>エレメントに使用され、後者は<Binary>エレメントに使用されます。 バイナリデーは、そのままではXMLファイルに格納できないので、 mkvmerge(1)は二つのバイナリデータを格納する方法をサポートします。XMLタグの中身が'@'で始まる場合、そのあとのテキストはファイル名として扱われ、対応するファイルの中身がMatroska(TM)エレメントにコピーされます。 もう一つの方法では、データはBase64エンコードされる必要があります。これは、バイナリデータをASCIIキャラクタの一部だけで表現するためのエンコードで、例えばEメールなどに使用されています。 mkvextract(1)は、バイナリエレメントをBase64エンコードされたデータとして出力します。 古いタグシステムは、公式のMatroska(TM)の仕様に示されているように、もっと多くのデータタイプを認識していました。 mkvmerge(1)はもはやこのシステムをサポートしないので、それらのタイプについてはここでは説明しません。XMLファイルフォーマットで知られているタグ¶
以下にサポートされているXMLタグ、そのデータタイプ、そして適切な場所では、その値の有効な範囲を挙げます:Tags (master) Tag (master) Targets (master) TargetTypeValue (unsigned integer) TargetType (UTF-8 string) TrackUID (unsigned integer) EditionUID (unsigned integer) ChapterUID (unsigned integer) AttachmentUID (unsigned integer) Simple (master) Simple (master) Name (UTF-8 string) TagLanguage (UTF-8 string) DefaultLanguage (unsigned integer) String (UTF-8 string) Binary (binary)
セグメント情報XMLファイル¶
セグメント情報XMLファイルで、Matroskaファイルの"segment information"ヘッダフィールドの特定の値を設定することが可能です。これらの値の全てがコマンドラインオプション経由で設定可能というわけではありません。 他の"segment information"ヘッダフィールドはコマンドラインオプション経由で設定できますが、XMLファイル経由では設定できません。 これはには例えば --titleや --timecode-scale オプションなどが含まれます。 他にもコマンドラインオプション経由でもXMLファイル経由でも設定できない要素があります。これらには以下のものが含まれます: DateUTC (別名"muxing date")、 MuxingApp、WritingApp、そしてDurationです。それらは常にmkvmerge(1)自身によって設定されます。 以下にサポートされているXMLタグ、そのデータタイプ、そして適切な場所では、その値の有効な範囲を挙げます:Info (master) SegmentUID (binary, valid range: length in bytes == 16) SegmentFilename (UTF-8 string) PreviousSegmentUID (binary, valid range: length in bytes == 16) PreviousSegmentFilename (UTF-8 string) NextSegmentUID (binary, valid range: length in bytes == 16) NextSegmentFilename (UTF-8 string) SegmentFamily (binary, valid range: length in bytes == 16) ChapterTranslate (master) ChapterTranslateEditionUID (unsigned integer) ChapterTranslateCodec (unsigned integer) ChapterTranslateID (binary)
MATROSKA(TM)ファイルのレイアウト¶
•メタシーク
#1は、少数のレベル1エレメント(添付ファイル、チャプタ、CUE、タグ、メタシーク
#2)のみを、それらが存在するときにのみ含みます。以前のバージョンの
mkvmerge(1)は、このメタシークエレメントにクラスタも挿入していました。このため、十分なスペースを確保しておくために不正確な推測が必要で、この推測は多くの場合失敗していました。現在では、クラスタのみはメタシーク
#2に格納され、メタシーク
#1がメタシークエレメント
#2を参照しています。
•添付ファイル、チャプタ、及びタグエレメントはそれらが存在するときにのみ追加されます。
最小構成のMatroskaファイルはこのような構成になります。
[EBMLヘッダ] [セグメント
[セグメント情報]
[トラック情報]
[クラスタ1]]
音声のみのファイルはこのようになるでしょう。
外部タイムコードファイル¶
ユーザは、特定のトラックのタイムコードを自分で mkvmerge(1)に指定することができます。これは可変フレームレートビデオを含むファイルを作成するときや、オーディオに無音を挿入するときに使用できます。この場合、フレームはMatroska(TM)ブロックを作成する際の単位となります。ビデオでは、これはちょうど1フレームとなり、オーディオではこれは各オーディオタイプの1パケットとなります。例えば、AC3では、これは1536サンプルを含む1パケットとなります。 結合されたトラックにタイムコードファイルを指定する場合は、各結合されるトラックチェインの最初の部分にのみ指定してください。例えばv1.avi、v2.aviの二つのファイルを結合し、タイムコードを使用したいときのコマンドラインは次のようになります。$ mkvmerge ... --timecodes 0:my_timecodes.txt v1.avi +v2.avi
タイムコードファイルフォーマット v1¶
このフォーマットはバージョン行から始まります。2行目はデフォルトフレームレートを宣言します。残りの全ての行は、コンマで区切られた3つの数字を含みます。開始フレーム( 0が最初のフレームです)、終了フレーム、そしてこの範囲で適用されるフレームレートです。FPSは、ドット'.'を小数点として持つ小数です。フレーム範囲はデフォルトFPSが使用されるギャップを含むこともあります。例を下に示します。# timecode format v1 assume 27.930 800,1000,25 1500,1700,30
タイムコードファイルフォーマット v2¶
このフォーマットでは、各行は対応するフレームのタイムコードを含みます。このタイムコードはミリ秒単位の精度で指定しなければなりません。小数を指定することができますが、小数でなくてもかまいません。最低でも、トラックに含まれるフレーム数と同数のタイムコード行を含ま なければなりません。このファイル内のタイムコードは整列されていなければなりません。例えば、25fpsでは以下のようになります。# timecode format v2 0 40 80
タイムコードファイルフォーマット v3¶
このフォーマットでは、各行は秒単位の持続時間と、省略可能なフレームレートを含みます。この二つは両方とも小数を指定できます。もし、フレームレートが指定されない場合はデフォルトの値が使用されます。オーディオではコーデックにタイムコードを計算させるべきです。このためには、フレームレートとして 0.0を指定してください。また、'gap'キーワードの後に持続時間を指定して、無音を指定することもできます。オーディオファイル用の例を示します。# timecode format v3 assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
タイムコードファイルフォーマット v4¶
このフォーマットはv2フォーマットと同一です。唯一の違いは、タイムコードが整列されていなくてもいいという点です。このフォーマットが使われることはほぼ無いでしょう。返り値¶
•
0 --
この返り値はMUXが正常に終了したことを示します。
•
1 --
この返り値は、一つ以上の警告が出力されましたが、抽出が続行されたことを意味します。警告は
'警告:'
という文字列を先頭につけて出力されます。出力ファイルが無事であるかどうかは、場合によります。出力ファイルを確認することを強く推奨します。
•
2 --
この返り値は、エラーが発生し、エラーメッセージを出力した後に
mkvmerge(1)が処理を中断したことを示します。エラーメッセージは不正なコマンドラインやファイルI/Oエラー、壊れたファイルなど様々です。
環境変数¶
その内容は、あたかも--debugオプション経由で渡されたかのように扱われます。
MKVTOOLNIX_ENGAGEとその短縮形MTX_ENGAGE
その内容は、あたかも--debugオプション経由で渡されたかのように扱われます。
MKVTOOLNIX_OPTIONSとその短縮形MTX_OPTIONS
その内容は空白で分割されます。得られた一部の文字列は、あたかもそれがコマンドラインオプションとして渡されたかのように扱われます。もし特殊な文字(例:空白)を渡す必要があるなら、それらをエスケープする必要があります(テキスト中の特殊文字のエスケープについてのセクションをご覧ください)。
関連項目¶
ウェブ¶
最新のバージョンは、常時 MKVToolNixのホームページ[5]から取得できます。著者¶
Bunkus Moritz[FAMILY Given] <moritz@bunkus.org>開発者
注記¶
- 1.
- Matroska(TM)
- 2.
- IANAのホームページ
- 3.
- Matroska(TM)のウェブサイト
- 4.
- Matroska(TM)の仕様
- 5.
- MKVToolNixのホームページ
2012-05-27 | MKVToolNix 5.6.0 |