MKVMERGE(1) | 利用者命令 | MKVMERGE(1) |
名前¶
mkvmerge - 複合媒体流をMatroskaファイルに格納します
書式¶
mkvmerge [広域オプション] {-o 出力} [オプション1] {ファイル1} [[オプション2] {ファイル2}] [@オプションファイル.json]
説明¶
このプログラムは複数の媒体ファイルを入力とし、それらの流れ(の全て、もしくは選択したもののみ)をMatroskaファイルへと結合します。Matroskaの本拠地[1]をご覧ください。
重要
命令行オプションの順序は重要です。もしもプログラム初心者なら、「オプション順序」節を読んでください。
広域オプション¶
-v, --verbose
-q, --quiet
-o, --output ファイル名
-w, --webm
楽章および標識に対しては、要素の部分集合のみが許容されます。mkvmerge(1)は仕様が許可していない項目を全て消去します。
--title 題名
--default-language 言語コード
The default language code is 'und' for 'undetermined'.
区分情報の扱い (広域オプション)¶
--segmentinfo ファイル名.xml
詳細は、後述の区分情報XMLファイルについての節をご覧ください。
--segment-uid SID1,SID2,...
SIDが=で始まる場合は、読み取り使用した区分UIDを持つMatroskaファイルの名前として残りの部分を解釈します。
作成される各ファイルには一つの区分があり,各区分には一つの区分UIDがあります。作成したものより多くの区分UIDを指定した場合は,余分なUIDは無視されます。作成したものより少ない区分UIDしか指定しなかった場合は,無作為なUIDを生成して補います。
楽章および標識の扱い(広域オプション)¶
--chapter-language 言語コード
単一の楽章ファイルや,楽章があるがその楽章言語情報はない場合(例えばMP4やOGMファイル)に使用できるでしょう。
このオプションで設定した言語は--generate-chaptersオプションで生成した楽章にも用いられます。
--chapter-charset 文字集合
この切替は楽章が特定のコンテナ種別(例: Ogg・OGMやMP4ファイル)から複製する際にも適用されます。詳細については後述の楽章についての節をご覧ください。
--chapter-sync d[,o[/p]]
o/p: 時刻印をo/pだけ調整し,線型偏流を修正します。既定ではpを省略した場合1になります。oおよびp双方に浮動点小数を指定できます。
既定: 手動同期修正なし(d = 0でありo/p = 1.0である場合と同じです)。
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--generate-chapters モード
このモードはまた分割モード 'parts:' および'parts-frames:' でも動作します。これらのモードでは,追加した時刻印(開始時点および'+' が前置された時刻印)の範囲毎に一つの楽章を生成します。
注記
ファイルを新しく追加した際にmkvmerge(1)が感知できるように,映像または音声トラックが存在する必要があります。複数の映像トラックが混在していた場合,始めのトラックを使用します。それ以外の場合,始めの音声トラックを使用します。
例: --generate-chapters interval:45s
新規楽章の名前は--generate-chapters-name-templateオプションで制御します。言語は--chapter-languageで設定し,--generate-chaptersの後ろでなければなりません。
--generate-chapters-name-template 雛形
雛形では幾つかの変数が使用でき,それらは楽章が生成する際に実際の値に置き換わります。文字列 '<NUM>' は楽章番号に置き換わります。文字列 '<START>' は楽章の開始時刻印に置き換わります。
The strings '<FILE_NAME>' and '<FILE_NAME_WITH_EXT>' are only filled when generating chapters for appended files. They will be replaced by the appended file's name without respectively with its extension. Note that only the file's base name and extension are inserted, not its directory or drive components.
楽章を設定する場所の最小値を「<NUM;場所>」という形式で指定できます(例: <NUM:3>)。指定した数より場所が少ない場合は,番号をゼロ埋めして出力します。
<START:形式>によって開始する時刻表示の書式を制御できます。なにも指定されていない場合の既定の書式は「%H:%M:%S」です。有効な書式指定子は以下の通りです:
--cue-chapter-name-format 書式指定子
このオプションが指定されていない場合、既定で'%p - %t'という形式が使用されます。
形式が指定された場合、下のメタ文字以外はそのまま複製され、メタ文字は以下のように置換されます。
--chapters ファイル名
--global-tags ファイル名
出力一般の制御(高度な広域オプション)¶
--track-order FID1:TID1,FID2:TID2,...
If this option isn't given, tracks will be sorted by their type first & the order of their source file second. Video tracks come first followed by audio & subtitle tracks. Other rarely used track types come last.
--cluster-length 指定子
単位が指定されなかった場合、群団ごとのデータ区画の最大個数はnに設定されます。上限は65535です。
数字dに「ms」が後置されていた場合、mkvmerge(1)は各群団毎に最大でもdミリ秒分のデータしか格納しません。dの最小値は「100ms」、最大値は「32000ms」です。
mkvmerge(1)は既定で一つの群団に最大65535のデータ区画,5000msのデータを書き込みます。
プログラムがある齣を探索する際は,群団を直接読み出すことしかできず、その後に群団全体を読まなければなりません。そのため、群団を大きくすると、送り出しが不正確になったり、遅くなったりすることがあります。
--clusters-in-meta-seek
--timestamp-scale 係数
mkvmerge(1)が通常用いる値は1000000です。これは時刻印と齣持続期間が1ミリ秒単位の精度を持つことを意味します。映像トラックを含まず、1つ以上の音声トラックを含むファイルでは、mkvmerge(1)は全ての時刻印と齣持続時間が標本音1つ分の精度を持つように時刻印の桁数係数を自動的に選択します。これによって処理負荷は増えますが、正確な送り出しと展開が可能になります。
特殊値-1を指定した場合、映像トラックが存在している場合でも標本音の精度を使用します。
--enable-durations
--no-cues
--no-date
--disable-lacing
--disable-track-statistics-tags
Enabling this option prevents mkvmerge(1) from writing those tags and from touching any existing tags with same names.
--disable-language-ietf
--normalize-language-ietf mode
In the canonical form all subtags for which preferred values exist are replaced by those preferred values. This converts e.g. 'zh-yue-jyutping' to 'yue-jyutping' or 'fr-FX' to 'fr-FR'.
For the extended language subtags form the canonical form is built first. Afterwards all primary languages for which an extended language subtag exists are replaced by that extended language subtag and its prefix. This converts e.g. 'yue-jyutping' back to 'zh-yue-jyutping' but has no effect on 'fr-FR' as 'fr' is not an extended language subtag.
--stop-after-video-ends
ファイルの分割・紐付け・追加・連結(広域オプションの続き)¶
--split specification
At the moment mkvmerge(1) supports the following modes:
書式: --split [size:]d[k|m|g]
例: --split size:700m or --split 150000000
パラメータdの後ろには'k'・'m'・'g'を付けて、単位がそれぞれKB・MB・GBであることを示すことができます。付けない場合はバイト単位になります。出力中のファイルがこの上限に達したら、次の新しいファイルへの出力が開始されます。
'size:'という接頭辞は、互換性のために省略できるようになっています。
書式: --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:'という接頭辞は、互換性のために省略できるようになっています。
書式: --split timestamps:A[,B[,C...]]
例: --split timestamps:00:45:00.000,01:20:00.250,6300s
パラメータA、B、C...は、期間を指定するのに用いる形式(上記参照)と同じ形式で指定しなければなりません。時刻印の一覧は読点で区切られます。入力流が現在の分割点に達すると次のファイルが作成され、この一覧から次の分割点が使用されます。
'timestamps:'という接頭辞は省略してはなりません。
構文: --split parts:開始1-終了1[,[+]開始2-終了2[,[+]開始3-終了3...]]
例:
The parts mode tells mkvmerge(1) to keep certain ranges of timestamps 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 timestamp in the same format the other variations of --split accept (e.g. both 00:01:20 and 80s refer to the same timestamp).
If a start timestamp is left out then it defaults to the previous range's end timestamp. If there was no previous range then it defaults to the start of the file (see example 3).
If an end timestamp is left out then it defaults to the end of the source files which basically tells mkvmerge(1) 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 timestamp with a +. This tells mkvmerge(1) not to create a new file and instead append the range to the same file the previous range was written to. Timestamps 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(1) 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(1) 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(1) 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.
注記
Note that mkvmerge(1) only makes decisions about splitting at key frame positions. This applies to both the start and the end of each range. So even if an end timestamp is between two key frames mkvmerge(1) will continue outputting the frames up to but excluding the following key frame.
Syntax: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
例:
The parts-frames mode tells mkvmerge(1) to keep certain ranges of frame/field numbers while discarding others. The ranges to keep have to be listed after the parts-frames: keyword and be separated by commas. A range itself consists of a start and an end frame/field number. Numbering starts at 1.
If a start number is left out then it defaults to the previous range's end number. If there was no previous range then it defaults to the start of the file (see example 3).
If an end number is left out then it defaults to the end of the source files which basically tells mkvmerge(1) 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 number with a +. This tells mkvmerge(1) not to create a new file and instead append the range to the same file the previous range was written to. Timestamps 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.
注記
Note that mkvmerge(1) only makes decisions about splitting at key frame positions. This applies to both the start and the end of each range. So even if an end frame/field number is between two key frames mkvmerge(1) will continue outputting the frames up to but excluding the following key frame.
In example 2 mkvmerge(1) will create only one file. This file will contain both the content starting from 733 until 912 and the content starting from 1592 until 2730.
In example 3 mkvmerge(1) will create two files. The first will contain the content from the start of the source files until 430. The second file will contain the content starting from 2512 until the end of the source files.
This mode considers only the first video track that is output. If no video track is output no splitting will occur.
注記
The numbers given with this argument are interpreted based on the number of Matroska blocks that are output. A single Matroska block contains either a full frame (for progressive content) or a single field (for interlaced content). mkvmerge does not distinguish between those two and simply counts the number of blocks. For example: If one wanted to split after the 25th full frame with interlaced content one would have to use 50 (two fields per full frame) as the split point.
Syntax: --split frames:A[,B[,C...]]
Example: --split frames:120,237,891
The parameters A, B, C etc must all be positive integers. Numbering starts at 1. The list of frame/field numbers is separated by commas. After the input stream has reached the current split point's frame/field number a new file is created. Then the next split point given in this list is used.
接頭辞「frames:」は省略できません。
This mode considers only the first video track that is output. If no video track is output no splitting will occur.
注記
The numbers given with this argument are interpreted based on the number of Matroska blocks that are output. A single Matroska block contains either a full frame (for progressive content) or a single field (for interlaced content). mkvmerge does not distinguish between those two and simply counts the number of blocks. For example: If one wanted to split after the 25th full frame with interlaced content one would have to use 50 (two fields per full frame) as the split point.
書式: --split chapters:all又は--split chapters:A[,B[,C...]]
例: --split chapters:5,8
A, B, C等のパラメータは正整数でなくてはなりません。番号は1始まりです。複数の楽章番号はコンマで区切られます。分割が行なわれるのは、指定された番号の各楽章が開始するタイムスタンプと等しい又はより大きいタイムスタンプである最初のキーこまの直前です。0秒から開始する楽章は分割されることなく、通知なしに破棄されます。
全ての楽章番号を手で入力する代わりに、allキーワードが使えます。
接頭辞「chapters:」は省略できません。
注記
The Matroska file format supports arbitrary deeply nested chapter structures called 'edition entries' and 'chapter atoms'. However, this mode only considers the top-most level of chapters across all edition entries.
この分割モードでは、出力ファイル名は通常の操作とは異なる扱いを受けます。このモードでは出力ファイル名はprintfのように'%d'というパターンを含むことができます。'%02d'のように幅指定を追加することもできます。出力ファイル名がこのパターンを含む場合、ファイル番号が適切な形式で指定された位置に挿入されます。含まない場合、'-%03d'というパターンがファイルの拡張子の直前に指定されたものとみなされ、例えば'-o output.mkv'を指定した場合、'output-001.mkv'等のファイル名に出力されます。拡張子が存在しない場合、'-%03d'はファイル名の末尾に追加されます。
Another possible pattern is '%c' which will be replaced by the name of the first chapter in the file. Note that when '%c' is present, the pattern '-%03d' will not be added automatically.
--link
--link-to-previous segment-UID
SIDが=で始まる場合は、読み取り使用した区分UIDを持つMatroskaファイルの名前として残りの部分を解釈します。
--link-to-next segment-UID
SIDが=で始まる場合は、読み取り使用した区分UIDを持つMatroskaファイルの名前として残りの部分を解釈します。
--append-mode mode
mkvmergeが二つめのファイル(以後'file2'と呼ぶ)のトラック(以後'track2_1'と呼ぶ)を、一つめのファイル(以後'file1'と呼ぶ)のトラック(以後'track1_1'と呼ぶ)と結合する際、'track2_1'の時刻印は一定量だけずらす必要があります。'file'モードでは、ずらす量は'file1'の中の'track1_1'以外のトラックを含む全てのトラックの中で一番大きい時刻印の値になります。'track'モードでは、'track1_1'の中で一番大きい時刻印の値になります。
残念ながら、mkvmergeはどちらのモードが適切であるか判断はできません。既定は'file'モードになっています。'file'モードは独立に作られたファイル同士を結合する際、例えばAVI又はMP4ファイルを結合する際に、通常はより上手く働きます。'track'モードは、例えばVOBやEVOファイルなどの大きなファイルの一部がソースの場合より上手く働くかもしれません。
字幕トラックは'track'モードが指定された場合でも、常に'file'が指定されたかのように処理されます。
--append-to SFID1:STID1:DFID1:DTID1[,...]
このオプションが指定されない場合、標準のマッピングが使用されます。この場合、前のファイルのトラックに、現在のファイルのトラックIDが同じであるトラックが追加されます。これにより、動画が二つのファイルに分割されており、かつ同じトラック数とトラックIDを持つ場合、mkvmerge -o output.mkv part1.mkv +part2.mkvのようにして簡単に結合することができます。
+
$ mkvmerge -o full.mkv file1.mkv + file2.mkv $ mkvmerge -o full.mkv file1.mkv +file2.mkv
[ file1 file2 ]
This is an alternative syntax to using '+' between the file names. Therefore the following two commands are equivalent:
$ mkvmerge -o full.mkv file1.mkv + file2.mkv $ mkvmerge -o full.mkv '[' file1.mkv file2.mkv ']'
=
'='は次のファイル名の直前に置くこともできます。よって、次の2つの命令は等価です。
$ mkvmerge -o full.mkv = file1.vob $ mkvmerge -o full.mkv =file1.vob
( file1 file2 )
これは、例えばDVDのVOBファイルやMPEGトランスポートストリーム等のために使用することができます。通常AVIやMP4のようなスタンドアローンのファイルの場合ですが、各ファイルが自身の頭部を一通り含んでいる場合には使用することができません。
ファイル名を括弧で括るのは、オプション=で説明されているように同じ基底名を持つファイルをmkvmerge(1)に検索させない効果もあります。 よって、これらの2つの命令行は同値です:
$ mkvmerge -o out.mkv = file.mkv $ mkvmerge -o out.mkv '(' file.mkv ')'
いくつか注意事項があります:
添付ファイルへの対応(広域オプションの続き)¶
--attachment-description description
--attachment-mime-type MIME type
If no MIME type is given a for an attachment, its type will be detected automatically.
--attachment-name name
--attach-file file-name, --attach-file-once file-name
mkvextract(1)でMatroskaファイルから添付ファイルを抽出することができます。
--enable-legacy-font-mime-types
This affects both new attachments if its MIME type is detected automatically and existing attachments whose stored MIME types will be remapped to the legacy ones.
The affected MIME types are 'font/sfnt', 'font/ttf' and 'font/collection' which are all mapped to 'application/x-truetype-fonts' and 'font/otf' which is mapped to 'application/vnd.ms-opentype'.
各入力ファイルに指定できるオプション¶
-a, --audio-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
Default: copy all tracks of this kind.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
-d, --video-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
-s, --subtitle-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
-b, --button-tracks [!]n,m,...
Instead of track IDs you can also provide ISO 639-2 language codes. This will only work for source files that provide language tags for their tracks.
If the IDs are prefixed with ! then the meaning is reversed: copy all tracks of this kind but the ones listed after the !.
--track-tags [!]n,m,...
もしIDに!が接頭していた場合には、意味が逆転します,すなわち,!の後に列挙されたIDを除く全てのトラック標識を複製します。
-m, --attachments [!]n[:all|first],m[:all|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
--regenerate-track-uids
This behavior is enabled automatically for Matroska files created by the MakeMKV software. The reason is that MakeMKV uses consecutive numbers (1, 2, 3...) as UIDs instead of generating random ones.
-y, --sync TID:d[,o[/p]]
o/p: 時刻印をo/pだけ調整し,線型偏流を修正します。既定ではpを省略した場合1になります。oおよびp双方に浮動点小数を指定できます。
既定: 手動同期修正なし(d = 0でありo/p = 1.0である場合と同じです)。
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--cues TID:none|iframes|all
The default is 'iframes' for video and subtitle tracks and 'none' for audio tracks. See also option --no-cues which inhibits the creation of cue entries regardless of the --cues options used.
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--default-track-flag TID[:bool]
If the user does not explicitly select a track during playback, the player should select one of the tracks that has its "default track" flag set, taking user preferences such as their preferred language into account.
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--track-enabled-flag TID[:bool]
Only tracks whose "track enabled" flag is set should be considered for playback.
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--forced-display-flag TID[:真偽値]
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--hearing-impaired-flag TID[:bool]
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--visual-impaired-flag TID[:真偽値]
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--text-descriptions-flag TID[:真偽値]
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--original-flag TID[:bool]
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--commentary-flag TID[:bool]
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
--track-name TID:name
--language TID:language
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
-t, --tags TID:file-name
--aac-is-sbr TID[:0|1]
ソースファイルがMatroskaファイルの場合、CodecIDによりSBR AACを検知できます。しかし、CodecIDが不正な場合、このスイッチで修正することができます。
もし、mkvmergeがAACファイルを間違ってSBRと認識してしまった場合、トラックIDに':0'を指定できます。
--audio-emphasis TID:n|symbolic-name
--reduce-to-core TID
Currently only DTS tracks are affected by this option. TrueHD tracks that contain an embedded AC-3 core are instead presented as two separate tracks for which the user can select which track to copy. For DTS such a scheme would not work as the HD extensions cannot be decoded by themselves – unlike the TrueHD data.
--remove-dialog-normalization-gain TID
Currently only AC-3, DTS and TrueHD tracks are affected by this option.
--timestamps TID:file-name
--default-duration TID:x
既定のこま持続時間が指定されなかった場合は、mkvmergeはそのトラックの既定のこま持続時間を、コンテナと、AVC/H.264やMPEG-2のような特定のトラックタイプの場合はエンコードされたビットストリームから取得しようと試みます。
このオプションは、外部時刻印ファイルを使用せずに映像トラックのFPSを変更するのにも使えます。
--fix-bitstream-timing-information TID[:0|1]
注記
This has only been implemented for AVC/H.264 video tracks so far.
--compression TID:n
'mpeg4_p2'/'mpeg4p2'圧縮法は、 MPEG4 part2 映像トラックにのみ適用できる、'header removal'と呼ばれる特殊な圧縮法です。
The default for some subtitle types is 'zlib' compression. This compression method is also the one that most if not all playback applications support. Support for other compression methods other than 'none' is not assured.
映像トラックにのみ適用されるオプション¶
-f, --fourcc TID:FourCC
--display-dimensions TID:widthxheight
これらの値を設定する別の方法として、--aspect-ratio又は--aspect-ratio-factorオプションが使用できます(下記参照)。これらのオプションは互いに排他的です。
--aspect-ratio TID:ratio|width/height
これらの値を設定する別の方法として、--aspect-ratio-factor又は--display-dimensionsオプションが使用できます(上記及び下記参照)。これらのオプションは互いに排他的です。
--aspect-ratio-factor TID:factor|n/d
これらの値を設定する別の方法として、--aspect-ratio又は--display-dimensionsオプションが使用できます(上記参照)。これらのオプションは互いに排他的です。
--cropping TID:left,top,right,bottom
--color-matrix-coefficients TID:n
Valid values and their meaning are:
0: GBR, 1: BT709, 2: unspecified, 3: reserved, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 non-constant luminance, 10: BT2020 constant luminance
--color-bits-per-channel TID:n
--chroma-subsample TID:hori,vert
Example: For video with 4:2:0 chroma subsampling, the parameter should be set to TID:1,1.
--cb-subsample TID:hori,vert
Example: For video with 4:2:1 chroma subsampling, the parameter --chroma-subsample should be set to TID:1,0 and Cb-subsample should be set to TID:1,0.
--chroma-siting TID:hori,vert
--color-range TID:n
--color-transfer-characteristics TID:n
Valid values and their meaning are:
0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: gamma 2.2 curve, 5: gamma 2.8 curve, 6: SMPTE 170M, 7: SMPTE 240M, 8: linear, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361 extended color gamut, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--color-primaries TID:n
Valid values and their meaning are:
0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: JEDEC P22 phosphors
--max-content-light TID:n
--max-frame-light TID:n
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y
--white-color-coordinates TID:x,y
--max-luminance TID:float
--min-luminance TID:float
--projection-type TID:method
--projection-private TID:data
--projection-pose-yaw TID:float
--projection-pose-pitch TID:float
--projection-pose-roll TID:float
--field-order TID:n
0: progressive; 1: interlaced with top field displayed first and top field stored first; 2: undetermined field order; 6: interlaced with bottom field displayed first and bottom field stored first; 9: interlaced with bottom field displayed first and top field stored first; 14: interlaced with top field displayed first and bottom field stored first
--stereo-mode TID:n|symbolic-name
文章字幕トラックにのみ適用されるオプション¶
--sub-charset TID:character-set
このオプションを一つの入力ファイルに対して複数回使用でき,毎回異なるトラックIDを指定することで複数のトラックを処理できます。
その他のオプション¶
-i, --identify file-name
The output format used for the result can be changed with the option --identification-format.
-J file-name
-F, --identification-format 形式
この形式は解析を意図していません。出力はmkvmerge(1)が用いる言語に翻訳されます(--ui-languageもご覧ください)。
mkvmerge-identification-output-schema-v20.json[3]
JSON模式の全版はWeb上でも公開版ソースコード書庫でも利用できます。
--probe-range-percentage 度合い
トラックの存在を認識しているのに見付けられなかった場合は,このオプションを用いて探測の度合いを変更することができます。最低値10MBは組み込まれており変更することはできません。
--list-audio-emphasis
--list-languages
--list-stereo-modes
-l, --list-types
--priority 優先度
'lowest' を選択することはまた,mkvmerge(1)のプロセス優先度に加えて入出力優先度も最低にします。
--command-line-charset 文字集合
--output-charset 文字集合
-r, --redirect-outputファイル名
--flush-on-close
--ui-language 符号
--abort-on-warnings
--deterministic 初期種
初期種は任意の文字列で,数値であってはなりません。
結果ファイルのバイト同一性が保証されるのは次述の条件下に限ります:
違う版のmkvmerge(1)や,異なる命令行オプションを使用していても結果としてファイルがバイト同一である場合があるますが,保証外です。
--debug 機能
--engage 機能
--gui-mode
@オプションファイル.json
--capabilities
-h, --help
-V, --version
使用法¶
各ファイルについて、利用者はmkvmerge(1)が取り出すべきトラックを選択できます。取り出されたトラックは、すべて-oで指定されたファイルに書き出されます。既知の(サポート済の)入力ファイル形式は-lオプションで取得できます。
重要
命令行オプションの順序は重要です。もしもプログラム初心者なら、「オプション順序」節を読んでください。
オプション順序¶
いくつかのオプションでは、入力の順番が重要です。オプションは二種類に大別されます:
オプションは左から右へと処理されます。もし同じスコープ内に1つのオプションが2回以上出てきた場合には、最後のものが使われます。よって、次の例ではタイトルは"Something else"に設定されます。
$ mkvmerge -o output.mkv --title 'This and that' input.avi --title 'Something else'
次の例は、違うスコープ内で使われているので--languageオプションを2回使ってもよいということを示しています。それらは同じトラックIDに適用されますが、違う入力ファイルに適用されるので違うスコープを持っているのです。
$ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg
例¶
あなたは、 MyMovie.avi というファイルを持っていて、また音声トラックが別の、例えば 'MyMovie.wav'というファイルに入っているとします。あなたは、まず音声をOggVorbisでエンコードしたいと思います。
$ oggenc -q4 -oMyMovie.ogg MyMovie.wav
数分後、映像と音声を結合できます。
$ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg
AVIファイルが既に音声トラックを持っていた場合(そしてmkvmerge(1)がその形式に対応していた場合),そのトラックも複製されます。これを避けるには、下のようにしてください。
$ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg
ちょっと考えて、あなたはもうひとつの音声トラック(例えば音声コメンタリや吹替えなど)を'MyMovie-add-audio.wavにリッピングしました。再びエンコードして、新しいファイルにまとめます。
$ 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
あとはmplayerを立ち上げて動画を楽しむだけです。もし、複数の音声トラック(もしかすると映像トラックも)がある場合は、再生するトラックを'-vid'と'-aid'オプションでmplayerに指定できます。ゼロベースで、映像と音声の区別をしないIDを指定します。
もし、音声トラックの同期をとる必要がある場合も、簡単にとることができます。まず、次のようにしてVorbisトラックのトラックIDを取得します。
$ mkvmerge --identify outofsync.ogg
次に、このIDを使って、次のような命令行を実行します。
$ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg
上のようにすると、'outofsync.ogg'に入っている、IDが 12345 の音声トラックの最初に200msの無音を挿入します。
最初は同期がとれているのにだんだんとずれていく動画もあります。このような動画には、全ての時刻印に適用される遅れ係数を指定することができます。データは追加も削除もされないので、あまり大きな、またはあまりに小さな係数を指定するとまずい結果になるでしょう。例として、私が変換したある動画は、全長が77340こまで、最終的に0.2秒ずれていました。29.97fpsでは、0.2は約6こまに相当します。よって、私は次のような命令を実行しました。
$ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv
結果は良好でした。
同期オプションは字幕にも同様に使用できます。
文章字幕を生成するには、SubRipperのようなWindowsソフトウェアを使用するか、transcode(1)のソースコードの、contrib/subrip'ディレクトリの中にあるsubripパッケージが使用できます。一般的なプロセスは以下の通りです。
$ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie
$ pgm2txt mymovie
$ ispell -d american *txt
$ srttool -s -w -i mymovie.srtx -o mymovie.srt
出力されたファイルをmkvmerge(1)の入力ファイルとして使用する:
$ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt
もし、あるトラックに言語コードを指定したいならば、簡単に指定できます。まず、指定する言語のISO 639-2コードを調べます。次のようにすればmkvmerge(1)に全ての言語コードを一覧表示させることができます。
$ mkvmerge --list-languages
必要な言語をリストの中から探してください。Matroskaファイルの中に、二つの音声トラックがあり、トラックIDは2と3だとします。この二つに言語コードを指定するには、次のようにします。
$ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.mkv
このように、--languageスイッチを複数回使うことができます。
プレイヤーに既定でオランダ語を再生させたいときもあるでしょう。さらに、例えば英語とフランス語の字幕があって、フランス語を既定で再生させたいと仮定します。これは、次のようにすれば可能です。
$ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track-flag 3 without-lang-codes.mkv --language 0:eng english.srt --default-track-flag 0 --language 0:fre french.srt
もし、指定したはずの言語や既定フラグがmkvinfo(1)の出力に見当たらない場合は、既定値のセクションを参照してください。
入力ファイルの圧縮をオフにします。
$ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt
トラックID¶
Regular track IDs¶
mkvmerge(1)のオプションの中には、どのトラックに適用するかを特定するために、トラックIDを指定する必要なものがあります。このトラックIDは、入力ファイルがdemuxされる際に表示されるほか、mkvmerge(1)に--identifyオプションを指定して表示させることもできます。この場合の出力は次のようになります。
$ mkvmerge -i v.mkv File 'v.mkv': container: Matroska Track ID 0: video (V_MS/VFW/FOURCC, DIV3) Track ID 1: audio (A_MPEG/L3)
出力されるMKVファイルの中に配置されるトラックに割り当てられるトラックIDと、入力ファイルのトラックIDを混同しないでください。これらの値が必要なオプションに使われるのは、入力ファイルのトラックIDだけです。
また、各入力ファイルは、それ固有のトラックIDの組を持っていることにも注意してください。従って、'mkvmerge --identify'で報告される'file1.ext'のトラックIDは、他にいくつ入力ファイルがあっても、また、'file1.ext'がどの位置で使われようとも、変わることはありません。
トラックIDは次のように割り当てられます:
トラックIDを使用するオプションの説明には、'TID'が含まれています。また、--audio-tracks、--video-tracks、--subtitle-tracks、--button-tracks及び--track-tagsオプションもトラックIDを使用します。
特殊トラックID¶
識別出力には表われない、特別な意味を持つIDが幾つかあります。
特殊トラックID '-1' は全称的で,指定した切替を入力ファイルから読み込まれる全てのトラックに適用します。
特殊トラックID '-2' は原ファイル中の楽曲を指し示します。現在,--syncオプションのみがこの特殊IDを用いています。--sync -2:...の替わりに,オプション--chapter-sync ...を使うことができます。
LANGUAGE HANDLING¶
Matroska has support for two different types of language elements: the old, deprecated "Language" element containing ISO 639-2 alpha 3 codes and the new "LanguageIETF" tags containing IETF BCP 47 language tags. All of mkvmerge(1)'s options that accept a language accept a BCP 47 language tag. mkvmerge(1) will derive the value for the deprecated "Language" element from the BCP 47 language tags wherever possible.
When identifying a file in JSON mode, existing "LanguageIETF" track header elements will be output as the language_ietf track property.
When writing a file mkvmerge(1) will always write the "LanguageIETF", "ChapLanguageIETF" and "TagLanguageIETF" elements (the latter two only if chapters or tags are written respectively). In addition to those elements the corresponding old elements will be written; they'll be set to the ISO 639-2 code portion of the BCP 47 language tag. For example, when the track language is set to sr-Cyrl-RS "LanguageIETF" will be set to sr-Cyrl-RS and the old "Language" element will be set to srp.
When reading existing files (Matroska files, XML chapter or tag files etc.) that already contain "...LanguageIETF" elements the existing elements will be kept. Otherwise "...LanguageIETF" elements will be added based on command-line options and other existing deprecated "...Language" elements.
The creation of the new elements can be disabled completely with the command-line option --disable-language-ietf which operates on all three new elements.
You can chose the normalization method applied to extended language sub-tags with the parameter --normalize-language-ietf.
文章ファイルと文字集合変換¶
はじめに¶
Matroskaファイルに格納されている文章の文字コードは全てUTF-8です。よって、mkvmerge(1)が文章ファイルを読み込む際には全てをUTF-8に文字コード変換する必要があります。代わりに、mkvmerge(1)が例えば--ui-languageによって非英語翻訳が使用される際や、Matroskaファイルに格納されていた文章を出力する際には、UTF-8から指定された文字コードに変換すればよいということになります。
mkvmerge(1)はこの変換をバイト・オーダー・マーク(BOM)の有無、又はシステムのロケールに基づいて自動的に行ないます。ロケールからどのように文字コードが推測されるかは、mkvmerge(1)を実行するシステムに依存します。
バイト順記号 (BOM)¶
BOMで始まる文章ファイルは、既にUTFエンコーディングの一種でエンコードされています。mkvmerge(1)はUTF-8、UTF-16リトルエンディアン及びビッグエンディアン、UTF-32リトルエンディアン及びビッグエンディアンの五つのモードをサポートします。BOMで始まる文章ファイルは自動的にUTF-8に変換されます。この場合、文章ファイルの文字コードを指定するパラメータ(例: --sub-charset)は全て黙殺されます。
Linux、及びmacOSを含むUnix系システム¶
UNIX系システム上では、mkvmerge(1)はsetlocale(3)システムコールを使うので、LANG、LC_ALL及びLC_CYPE環境変数を使用します。大抵は、UTF-8かISO-8859-*ファミリのどれかが全ての文章ファイルと命令行文字列の処理、及びコンソールへの出力の文字コードとして使用されます。
Windows¶
Windowsにおいては、文章ファイルを変換するのに用いられる既定の文字コードはシステム呼出しGetACP()を呼び出すことで決定されます。
Reading the command line is done with the GetCommandLineW() function which already returns a Unicode string. Therefore the option --command-line-charset is ignored on Windows.
Output to the console consists of three scenarios:
Command line options¶
次のような文字コードを指定するオプションがあります。
オプションファイル:¶
オプションファイルとは、mkvmerge(1)が追加の命令行の引数をそれから読み込むことができるものです。これは、命令行の長さ制限等の、外部プログラムを実行する際のシェルやオペレーティングシステムの特定の制限を回避するために使用することができます。
An option file contains JSON-formatted data. Its content must be a valid JSON array consisting solely of JSON strings. The file's encoding must be UTF-8. The file should not start with a byte order marker (BOM), but if one exists, it will be skipped.
The rules for escaping special characters inside JSON are the ones in the official JSON specification, RFC 7159[4].
The option file's name itself must be specified as a command line argument prefixed with a '@' character.
The command line 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg' could be converted into the following JSON option file called e.g. 'options.json':
[
"-o",
"c:\\Matroska\\my file.mkv",
"--title",
"#65",
"-A",
"a movie.avi",
"sound.ogg" ]
The corresponding command would then be 'mkvmerge @options.json'.
ファイル紐付け¶
Matroskaはファイル紐付けをサポートします。ファイル紐付けとは、単純に現在のファイルの前の、又は次のファイルを指定する機能です。正確に言うと、本当に紐付けされるのはファイルではなくMatroskaセグメントです。ほとんどのファイルはMatroskaセグメントを一つしか持たないので、以降の説明ではより正確な'セグメント紐付け'という用語ではなく、'ファイル紐付け'という用語を使用します。
各セグメントはユニークな128-bit幅のセグメントUIDを持ちます。このUIDはmkvmerge(1)が自動的に生成します。紐付けは基本的にセグメントUID(略してSID)を頭部情報の中に挿入することで行われます。mkvinfo(1)はこのSIDを、存在する場合は表示します。
もしひとつのファイルがいくつかの小さなファイルに分割されて紐付けされる場合、時刻印は0から始まらず、前のファイルの続きから始まります。この方式では、前のファイルが無い場合も絶対時間が保たれます(例: ストリーミングを使用している際)。もし、紐付けが使用されない場合、時刻印は各ファイルで0から始まります。既定ではmkvmerge(1)はファイル紐付けを使用しません。ファイル紐付けを使用したい場合は、--linkオプションを使用する必要があります。このオプションはファイル分割が有効な場合以外には無効です。
ファイル分割が有効か無効かに関わらず、利用者はmkvmerge(1)に、生成したファイルを特定のSIDに紐付けすることができます。これは--link-to-previousオプションと--link-to-nextオプションにより可能です。これらのオプションはmkvinfo(1)が出力する形式(16個の0x00から0xffまでの、'0x'を頭につけた16進数)のSIDを受け付けます(例: '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93')。もしくは短い形式('0x'及び数字の間のスペースを省いた0x00から0xffまでの16進数の数字)を指定することもできます。例: '41da7366d9cfb21eae78ebb45ecab393'
もしファイル分割が有効の場合、最初のファイルが--link-to-previousオプションで指定したSIDに紐付けされ、最後のファイルが--link-to-nextオプションで指定したSIDに紐付けされます。ファイル分割が無効の場合、一つの出力ファイルが両方のSIDに紐付けされます。
既定値¶
Matroskaファイルの仕様には、既定値を持つ要素の存在が明記されています。通常、既定値と等しい値をもつ要素はファイルサイズを抑えるためファイルに書き込まれません。mkvinfo(1)では表示されないかもしれない要素は、言語と既定トラックフラグ要素です。言語要素の既定値は英語('eng')で、既定トラックフラグ要素の既定値はtrueです。よって、あるトラックに--language: 0:engを指定した場合には、mkvinfo(1)の出力には現れません。
添付ファイル¶
Matroskaファイルに写真を入れておきたいということや、非常に稀でしょうがSSA字幕を使っていてTrueTypeフォントを使用したいということがあるかもしれません。このような場合には、Matroskaファイルにファイルを添付することができます。添付されるファイルはMatroskaファイルにただ単純に追加されるのではなく、埋め込まれます。よって、プレイヤーはこれらのファイルを表示したり(写真の場合)、字幕を描画するのに使用したり(フォントの場合)できます。
下に、出力ファイルに写真とTrueTypeフォントを添付する方法の例を示します。
$ 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-mime-type application/octet-stream \
--attach-file really_cool_font.ttf
添付ファイルつきのMatroskaファイルが入力ファイルとして使われた場合、mkvmerge(1)はその添付ファイルを新しいファイルに複製します。添付ファイルの複製するか否かは,--attachments及び--no-attachmentsオプションを使って切り替えることができます。
楽章¶
Matroska楽章システムは、OGMファイルで使用されていた従来のシステムより強力です。その仕様の全ては、Matroskaのウェブサイト[5]に記されています。
mkvmerge(1)は2種類の楽章ファイルを入力としてサポートしています。一つ目は'シンプル楽章ファイル'と呼ばれるもので、OGM toolsが想定しているものと同じ形式です。二つ目はXMLベースの楽章形式で、Matroskaの楽章機能の全てをサポートしています。
Apart from dedicated chapter files mkvmerge(1) can also read chapters from other file formats (e.g. MP4, Ogg, Blu-rays or DVDs).
シンプル楽章形式¶
この形式は、'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
mkvmerge(1) will transform every pair or lines into one Matroska ChapterAtom. It does not set any ChapterTrackNumber which means that all chapters apply to all tracks in the file.
このときに文章ファイルの文字コードが必要になります。mkvmerge(1)の文字コード変換については文章ファイルと文字コードのセクションを参照してください。
XML楽章形式¶
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>
この形式では、シンプル楽章形式では不可能な、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)
Reading chapters from Blu-rays¶
mkvmerge(1) can read chapters from unencrypted Blu-rays. For that you can use the path to one of the MPLS play lists with the --chapters parameter.
Example: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
Reading chapters from DVDs¶
When MKVToolNix is compiled with the libdvdread library, mkvmerge(1) can read chapters from DVDs. For that you can use the path to one of the folders or files on the DVD with the --chapters parameter. As DVDs can contain more than one title and each title has its own set of chapters, you can append a colon and the desired title number to the end of the file name argument. The title number defaults to 1.
Example: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
注意¶
mkvmerge(1)は出力ファイルを分割する際、楽章も適切に処理します。つまり、分割された各ファイルはそのファイルに関係する楽章のみを含み、時刻印には適切なオフセットがかかります。
mkvmerge(1)は、--no-chaptersオプションで明示的に無効化されていなければ、Matroska原ファイルから楽章を複製できます。全ての原ファイル(Matroskaファイル、Oggファイル、MP4ファイル、楽章文章ファイル)から読み取られた楽章は,通常は結合されず,別々のChapterEditionsが作成されます。楽章の読み取り元が,同じ編次UIDを共有するMatroskaあるいはXMLファイル郡であった場合のみ,楽章は一つのChapterEditionに結合されます。そのような場合以外で結合を行いたい場合は、利用者はまず全ての原ファイルからmkvextract(1)で楽章を抽出し、手動でXMLファイルを結合した後に多重化を行なわなければなりません。
標識¶
はじめに¶
Matroska's tag system is similar to that of other containers: a set of KEY=VALUE pairs. However, in Matroska these tags can also be nested, and both the KEY and the VALUE are elements of their own. The example file example-tags-2.xml shows how to use this system.
標識のスコープ¶
Matroska標識は自動的にはファイル全体に適用はされません。適用することもできますが、ファイルの異る部分々々に適用することもできます。一つ、もしくは複数のトラック、一つ、もしくは複数の楽章、さらにはその組み合わせにも適用することが可能です。Matroskaの仕様[6]に、このことの詳細が記述されています。
重要なことは、標識はTargetsMatroska標識要素によってトラック及び楽章に紐付けられますが、この際に使用されるUIDはmkvmerge(1)が色々な所で使用するトラックIDではないということです。その代わりに,(Matroska以外のファイル形式から取得されたトラックの場合は)自動的に計算したUIDあるいは(トラックの原ファイルがMatroskaファイルの場合は)原ファイルから複製されたUIDが用いられます。そのため,mkvmerge(1)がファイルを読み込む前に,標識ファイルで使用されるUIDはかなり難しくなります。
mkvmerge(1)はMatroskaファイルに標識を追加する二つのオプションを認識します。--global-tagsと--tagsオプションです。この二つの違いは、前者の--global-tagsは、上述のTargets要素を全て取り除くことで、標識がファイル全体に適用されるようにします。後者の--tagsオプションは、mkvmerge(1)が of the --tagsに指定したTIDの示すトラックに対して自動的に計算したUIDを挿入します。
例¶
あなたは、AVIから読み込まれる映像トラックに標識をつけたいと仮定しましょう。mkvmerge --identify file.aviを実行すると、映像トラックのトラックID(このIDをUIDと混同しないでください!)は0であると教えてくれます。よって、あなたは全てのTargets要素を記入しない標識ファイルを作成し、mkvmerge(1)を以下のように実行します。
$ mkvmerge -o file.mkv --tags 0:tags.xml file.avi
標識ファイル形式¶
mkvmerge(1)はXMLベースの標識ファイル形式をサポートします。この形式はMatroskaの仕様[6]に非常に近いデザインになっています。MKVToolNixのバイナリ、及びソースディストリビューションはどちらも、既知の標識をただリストしただけの、実際の標識ファイルのテンプ速度として使用できるexample-tags-2.xmlというサンプルファイルを含んでいます。
基本的には、以下の様な構成です。
データタイプ¶
新しいMatroska標識システムは、UTF-8文字列とバイナリの二つのデータタイプしか認識しません。前者は標識の名前と<String>要素に使用され、後者は<Binary>要素に使用されます。
バイナリデータは、そのままではXMLファイルに格納できません。mkvmerge(1)は二つのバイナリデータ格納方法に対応しています。XML要素の中身が「@」で始まる場合、そのあとの文字列をファイル名として解釈し,そのファイルの中身をMatroska要素に複製します。
もう一つの方法では、データはBase64エンコードされる必要があります。これは、バイナリデータをASCIIキャラクタの一部だけで表現するためのエンコードで、例えばEメールなどに使用されています。mkvextract(1)は、バイナリ要素をBase64エンコードされたデータとして出力します。
古い標識システムは、公式のMatroskaの仕様に示されているように、もっと多くのデータタイプを認識していました。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)
セグメント情報¶
区分情報を、Matroskaファイルの「区分情報」頭部欄にある特定の値として指定可能なXMLファイルに書き込みます。これらの値は全て他の命令行オプションを介しては設定できません。
他の「区分情報」頭部欄は命令行オプションを介して設定できますが、XMLファイルを介してはできません。例えば--titleや--timestamp-scaleオプションが該当します。
他にも命令行オプション経由でもXMLファイル経由でも設定できない要素があります。これらには以下のものが含まれます:DateUTC (別名"muxing date")、MuxingApp、WritingApp、そしてDurationです。それらは常にmkvmerge(1)自身によって設定されます。
以下にサポートされているXML標識、そのデータタイプ、そして適切な場所では、その値の有効な範囲を挙げます:
Info (母体)
SegmentUID (バイナリ、妥当な範囲: 16バイト長)
SegmentFilename (UTF-8文字列)
PreviousSegmentUID (バイナリ、妥当な範囲: 16バイト長)
PreviousSegmentFilename (UTF-8文字列)
NextSegmentUID (バイナリ、妥当な範囲: 16バイト長)
NextSegmentFilename (UTF-8文字列)
SegmentFamily (バイナリ、妥当な範囲: 16バイト長)
ChapterTranslate (母体)
ChapterTranslateEditionUID (符号無し整数)
ChapterTranslateCodec (符号無し整数)
ChapterTranslateID (バイナリ)
MATROSKAファイル割付け¶
Matroskaファイル割付けは非常に柔軟です。mkvmerge(1)はファイルを事前定義された方法で描画します。結果ファイルはこのようになります:
[EBML頭部] [区分 {高次送り出し#1} [区分情報] [トラック情報] {添付ファイル} {楽章} [群団 1] {群団 2} ... {群団 n} {演奏指令} {高次送り出し#2} {標識}]
波括弧でくくられた要素は省略可能で、コンテンツと指定されたオプションに依存します。いくつか注釈があります。
The shortest possible Matroska file would look like this:
[EBML頭部] [セグメント [セグメント情報] [トラック情報] [団体1]]
音声のみのファイルはこのようになるでしょう。
外部時刻印ファイル¶
利用者は、特定のトラックの時刻印を自分でmkvmerge(1)に指定することができます。これは可変こま速度映像を含むファイルを作成するときや、音声に無音を挿入するときに使用できます。この場合、こまはMatroska区画を作成する際の単位となります。映像では、これはちょうど1こまとなり、音声ではこれは各音声タイプの1パケットとなります。例えば、AC-3では、これは1536サンプルを含む1パケットとなります。
結合されたトラックに時刻印ファイルを指定する場合は、各結合されるトラックチェインの最初の部分にのみ指定してください。例えばv1.avi、v2.aviの二つのファイルを結合し、時刻印を使用したいときの命令行は次のようになります。
$ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi
mkvmerge(1)は、4つの形式を認識します。最初の1行は常にバージョン番号を含みます。空行、空白のみを含む行、及び'#'で始まる行は無視されます。
時刻印ファイル形式 v1¶
この形式はバージョン行から始まります。2行目は既定こま速度を宣言します。残りの全ての行は、コンマで区切られた3つの数字を含みます。開始こま(0が最初のこまです)、終了こま、そしてこの範囲で適用されるこま速度です。FPSは、ドット'.'を小数点として持つ小数です。こま範囲は既定FPSが使用されるギャップを含むこともあります。例を下に示します。
# timestamp format v1 assume 27.930 800,1000,25 1500,1700,30
時刻印ファイル形式 v2¶
この形式では、各行は対応するこまの時刻印を含みます。この時刻印はミリ秒単位の精度で指定しなければなりません。小数を指定することができますが、小数でなくてもかまいません。最低でも、トラックに含まれるこま数と同数の時刻印行を含まなければなりません。このファイル内の時刻印は整列されていなければなりません。例えば、25fpsでは以下のようになります。
# timestamp format v2 0 40 80
時刻印ファイル形式 v3¶
この形式では、各行は秒単位の持続時間と、省略可能なこま速度を含みます。この二つは両方とも小数を指定できます。もし、こま速度が指定されない場合は既定の値が使用されます。音声では符号器に時刻印を計算させるべきです。このためには、こま速度として0.0を指定してください。また、'gap'キーワードの後に持続時間を指定して、無音を指定することもできます。音声ファイル用の例を示します。
# timestamp format v3 assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
時刻印ファイル形式 v4¶
この形式はv2形式と同一です。唯一の違いは、時刻印が整列されていなくてもいいという点です。この形式が使われることはほぼ無いでしょう。
終了番号¶
mkvmerge(1)は下の3つの返り値を返します。
環境変数¶
mkvmerge(1)はシステムのロケールを決める既定の変数(例:LANGやLC_*系)を使用します。追加の変数は以下の通りです:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG and its short form MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE and its short form MTX_ENGAGE
関連項目¶
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
ウェブ¶
最新版は常にMKVToolNixの拠点[7]で入手できます。
著者¶
Bunkus Moritz[FAMILY Given] <moritz@bunkus.org>
注記¶
- 1.
- Matroskaの本拠地
- 2.
- IANAのホームページ
- 3.
- mkvmerge-identification-output-schema-v20.json
- 4.
- RFC 7159
- 5.
- Matroskaのウェブサイト
- 6.
- Matroskaの仕様
- 7.
- MKVToolNixの拠点
2024-09-07 | MKVToolNix 87.0 |