mkvpropedit — 再MUXすることなく、既存のMatroska™ファイルのプロパティを修正する
このプログラムは、既存のMatroska™ファイルを解析し、そのプロパティのいくつかを修正します。そして、それらの修正を既存のファイルに書き込みます。プロパティの中で変更可能なのは、セグメント情報エレメント(例えばタイトル)と、トラックヘッダ(例えば言語コードや'デフォルトトラック'フラグ、トラック名)です。
オプション:
-l
, --list-property-names
既知の編集可能なプロパティの名前、型(文字列、整数、真偽値等)、短い説明を一覧表示します。その後、プログラムは終了します。よって、source-filename
パラメータを指定する必要はありません。
-p
, --parse-mode
mode
解析モードを設定します。'mode
'パラメータは'fast
'(デフォルト)と'full
'のどちらかを指定できます。'fast
'モードはファイル全体を解析するのではなく、メタシークエレメントを使ってソースファイル内の必要なエレメントを探します。99%の場合これで十分です。しかし、メタシークエレメントを含まないファイルや破損したファイルに対しては'full
'解析モードを指定する必要があるかもしれません。'full
'スキャンには数分かかることがありますが、'fast
'スキャンには数秒しかかかりません。
アクション:
-e
, --edit
selector
このオプション以降のadd、set、deleteアクションが適用されるMatroska™ファイルセクション(セグメント情報または特定のトラックのヘッダ)を指定します。このオプションは、複数のエレメントを修正するために、複数回指定することができます。
文法の完全な説明は、エディットセレクタのセクションを参照してください。
-a
, --add
name
=value
name
で指定された名前のプロパティをvalue
で指定した値で追加します。プロパティは、既にその名前のプロパティが存在する場合も追加されます。ほとんどのプロパティは一意的で、複数回追加できないことに注意してください。
-s
, --set
name
=value
見付けた全ての、プロパティ名がname
であるプロパティの値を、value
に設定します。そのようなプロパティが存在しないときは、プロパティは追加されます。
-d
, --delete
name
見付けた全ての、プロパティ名がname
であるプロパティを削除します。いくつかのプロパティは必須で、削除できないことに注意してください。
その他のオプション:
--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
で指定されたファイルから追加のコマンドラインオプションを読み込みます。行で最初の空白文字でない文字がハッシュマーク('#
')である行はコメントとして扱われ、無視されます。行頭、及び行末の空白文字は取り除かれます。各行には一つずつしかオプションを指定できません。メタキャラクタのエスケープは必要ありません。
'mkvpropedit source.mkv --edit trach:a2 --set name=Comments'というコマンドラインと同じことは、次のようなオプションファイルによって指定できます。
# Modify source.mkv source.mkv # Edit the second audio track --edit track:a2 # and set the title to 'Comments' --set title=Comments
--edit
オプションは、以降のadd、set及びdeleteアクションが適用されるMatroska™ファイルセクション(セグメント情報または特定のトラックヘッダ)を設定します。これは次の--edit
オプションが見付かるまでずっと有効です。このオプションへの引数はエディットセレクタと呼ばれます。
セグメント情報は次の3つの単語によって選択されます。'info
'、'segment_info
'または'segmentinfo
'です。これはセグメントタイトルやセグメントUIDなどのプロパティを格納しています。
トラックヘッダはもうちょっとだけ複雑なセレクタで選択されます。全ての場合でセレクタは'track:
'で始まります。トラックヘッダプロパティには、言語コード、'デフォルトトラック'フラグやトラック名のようなエレメントがあります。
track:
n
パラメータn
が数字であれば、n
番目のトラックが選択されます。トラックの順番は、mkvmerge(1)に--identify
オプションを指定すると出力されるものと同じです。
track:
t
n
パラメータが一文字の英字t
で始まり、次にn
が続く場合、あるトラックタイプでn
番目のトラックが選択されます。トラックタイプパラメータt
は、オーディオトラックを示す'a
'、ボタントラックを示す'b
'、字幕トラックを示す's
'、ビデオトラックを示す'v
'の四つのうちの一つでなければなりません。トラックの順番はmkvmerge(1)の--identify
オプションで出力される順番と同じです。
track:
=uid
パラメータが'=
'で始まり、次にuid
が続く場合は、トラックUIDエレメントがuid
のトラックが選択されます。トラックUIDはmkvinfo(1)で取得できます。
track:
@number
パラメータが'@
'で始まり、次にnumber
が続く場合は、トラックナンバーエレメントがnumber
と等しいトラックが選択されます。トラックナンバーはmkvinfo(1)で取得できます。
下に'movie.mkv
'というファイルを編集する例を示します。この例では、セグメントタイトルを設定し、オーディオトラックと字幕トラックの言語コードを修正します。この例は、最初の--edit
オプションが見付かる前の全てのオプションはデフォルトで結局セグメント情報エレメントを編集するので、最初の--edit
オプションを省略して短縮できることに注意してください。
$ mkvpropedit movie.mkv --edit info --set "title=The movie" --edit track:a1 --set language=fre --edit track:a2 --set language=ita
The second example removes the 'default track flag' from the first subtitle track and sets it for the second one. Note that mkvpropedit(1), unlike mkvmerge(1), does not set the 'default track flag' of other flags to '0' if it is set to '1' for a different track automatically.
$ mkvpropedit movie.mkv --edit tracks:s1 --set flag-default=0 --edit tracks:s2 --set flag-default=1