mkvinfo -- Matroska(tm)ファイルの要素についての情報を表示します。

# 1. 書式

mkvinfo [options] {source-filename}

# 2. 説明

このプログラムは、Matroska(tm) ファイルに格納されている全ての要素の一覧を表示します。出力は、使用されているコーデックを含む、トラックのリストのみに制限することもできます。

Option | Description
--- | ---
-g, --gui | GUIを起動します。このオプションは、mkvinfoがGUIをサポートするようにコンパイルされていなければ無効です。
-c, --checksums | フレームごとにAdler32チェックサムを計算し、表示します。デバッグのためにのみ有用です。
-s, --summary | 全てのエレメントについて表示するのではなく、mkvinfo(1)の見つけたものの簡潔なサマリを表示します。
-t, --track-info | 各トラックの統計情報を冗長モードで表示します。また、冗長レベルが0だった場合は1に設定します。
-x, --hexdump | 各フレームの最初の16バイトを16進数のダンプとして表示します。
-X, --full-hexdump | 各フレームの全てのバイトを16進数のダンプとして表示します。
-z, --size | ヘッダも含めた各要素のサイズを表示します。
--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と指定すると、指定できる言語コードの一覧を出力します。
--debug topic | 特定の機能のデバッグをオンにします。このオプションは開発者にのみ有用です。
--engage feature | 実験的機能をオンにします。利用可能な機能のリストはmkvinfo --engage listで得られます。これらの機能は通常の状況で使用されることを意図されていません。
-v, --verbose | 冗長モードになります。冗長レベルセクションに、どの冗長レベルでどの情報が出力されるかの説明があります。
-h, --help | コマンド書式情報を出力して終了します。
-V, --version | バージョン情報を出力して終了します。
--check-for-updates | http://mkvtoolnix-releases.bunkus.org/latest-release.xmlをダウンロードすることで、新しいリリースがないかオンラインでチェックします。key=valueという書式で、4行が出力されます：どこから情報を取得したか (key version_check_url)、現在実行中のバージョン (key running_version)、最新のリリースのバージョン (key available_version) 及びそのダウンロードURL (key download_url)。 その後プログラムは、新しいリリースが入手可能ではなかった場合は終了コード0で、新しいリリースが入手可能であった場合は終了コード1で、エラーが発生した場合（例：アップデート情報を取得できなかった場合）は終了コード2で、それぞれ終了します。 このオプションは、プログラムがlibcurlのサポートつきでビルドされた場合のみ使用できます。
@options-file | options-fileで指定されたファイルから追加のコマンドラインオプションを読み込みます。行で最初の空白文字でない文字がハッシュマーク('#')である行はコメントとして扱われ、無視されます。行頭、及び行末の空白文字は取り除かれます。各行には一つずつしかオプションを指定できません。 エスケープすることのできる文字もあります。例えば、コメントではない行を'#'で始める必要のある場合です。そのルールは、エスケープ文字についてのセクションで説明されています。 'mkvinfo -v -v input.mkv --redirect-output info.txtというコマンドラインと同じことは、次のようなオプションファイルで指定できます。
    # 冗長モード
    -v
    -v
    # input.mkvを解析する
    input.mkv
    # info.txtに出力を書き込む
    --redirect-output
    info.txt

# 3. 冗長レベル

-vオプションにより、mkvinfo(1)の冗長レベルを上げ、入力ファイルについてのより詳しい情報を出力させることができます。

レベル0では、トラックヘッダとトラックの種類のみを出力します。mkvinfo(1)は、ヘッダを完全に解析し終るとすぐに(より技術的には、最初のクラスタを検出した直後に)終了します。このレベルでは、シークヘッドエントリ及びCUEがトラック情報の前に格納されていたとしても表示されません。

レベル1では、ファイル全体にあるシークヘッドエントリとCUE以外のMatroska(tm)エレメントを表示します。もし、サマリモードが有効の場合、フレーム位置も出力します。

レベル2では、シークヘッドエントリ、CUE、及び各Matroska(tm)エレメントのファイル内位置も表示します。

レベル3以上では、Matroska(tm)エレメントに直接関係ない情報も表示します。他のエレメントについては、見付かったものだけを表示します。レベル3はデバッグ用にメタ情報を追加します(開発者向け)。レベル3で追加された行は、全て角括弧で囲われています。

# 4. 返り値

mkvinfo(1)は下の3つの返り値を返します。

- 0 -- この返り値は正常に終了したことを示します。

- 1 -- この返り値は、少なくとも一つの警告が表示されましたが、処理が続行されたことを意味します。警告は '警告:' という文字列を先頭につけて出力されます。

- この返り値は、エラーが発生し、エラーメッセージを表示した直後にmkvinfo(1)が終了したことを示します。エラーメッセージは不正なコマンドラインやファイルI/Oエラー、壊れたファイルなど様々です。

# 5. テキスト中の特殊文字をエスケープする

特殊文字をエスケープしなければならない、あるいはすべき場所が少しだけあります。エスケープのルールは単純です：エスケープする必要のある各文字を、バックスラッシュ（Windows上の日本語フォントでは\記号）の後ろに違う文字が1つついたものと入れ替えます。

ルール：' '（半角スペース）は'\s'に、'"'（ダブルクォーテーション）は'\2'に、':'は'\c'に、'#'は'\h'に、そして'\'それ自体は'\\'になります。

# 6. 環境変数

mkvinfo(1)はシステムのロケールを決めるデフォルトの変数（例：LANGやLC_*系）を使用します。追加の変数は以下の通りです：

Option | Description
--- | ---
MKVTOOLNIX_DEBUGとその短縮形MTX_DEBUG | その内容は、あたかも--debugオプション経由で渡されたかのように扱われます。
MKVTOOLNIX_ENGAGEとその短縮形MTX_ENGAGE | その内容は、あたかも--debugオプション経由で渡されたかのように扱われます。
MKVTOOLNIX_OPTIONSとその短縮形MTX_OPTIONS | その内容は空白で分割されます。得られた一部の文字列は、あたかもそれがコマンドラインオプションとして渡されたかのように扱われます。もし特殊な文字（例：空白）を渡す必要があるなら、それらをエスケープする必要があります（テキスト中の特殊文字のエスケープについてのセクションをご覧ください）。

# 7. 関連項目

mkvmerge(1), mkvextract(1), mkvpropedit(1), mmg(1)

# 8. ウェブ

最新のバージョンは、常時MKVToolNixのホームページから取得できます。