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™ファイルセクション(セグメント情報または特定のトラックのヘッダ)を指定します。このオプションは、複数のエレメントを修正するために、複数回指定することができます。
デフォルトでは、mkvpropedit(1)はセグメント情報のセクションを編集します。
文法の完全な説明は、エディットセレクタのセクションを参照してください。
-a
, --add
name
=value
name
で指定された名前のプロパティをvalue
で指定した値で追加します。プロパティは、既にその名前のプロパティが存在する場合も追加されます。ほとんどのプロパティは一意的で、複数回追加できないことに注意してください。
-s
, --set
name
=value
見付けた全ての、プロパティ名がname
であるプロパティの値を、value
に設定します。そのようなプロパティが存在しないときは、プロパティは追加されます。
-d
, --delete
name
見付けた全ての、プロパティ名がname
であるプロパティを削除します。いくつかのプロパティは必須で、削除できないことに注意してください。
-t
, --tags
selector
:filename
ファイル名
からのタグを、このファイル中のタグに追加、あるいは置換します。もしファイル名
が空白なら、タグを削除します。mkvpropedit(1)は、mkvmerge(1)が読み込むのと同じXMLタグフォーマットを読み込みます。
セレクタ
は、all
、global
、またはtrack
のうちどれか一つを指定してください。all
を指定すると、mkvpropedit(1)はファイル中の全てのタグを置換あるいは削除します。global
を指定すると、グローバルタグだけが置換あるいは削除されます。
track
を指定すると、mkvpropedit(1)は特定のトラックのタグを置換します。また、filename
から読み込まれたタグは、同じトラックに割り当てられます。edit
selectorsが指定されるのと同じ様に(下を参照してください)、トラックは指定されます。(see below),
e.g. --tags track:a1:new-audio-tags.xml
.
その他のオプション:
--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
バージョン情報を出力して終了します。
--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
で指定されたファイルから追加のコマンドラインオプションを読み込みます。行で最初の空白文字でない文字がハッシュマーク('#
')である行はコメントとして扱われ、無視されます。行頭、及び行末の空白文字は取り除かれます。各行には一つずつしかオプションを指定できません。
エスケープすることのできる文字もあります。例えば、コメントではない行を'#'で始める必要のある場合です。そのルールは、エスケープ文字についてのセクションで説明されています。
'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
オプションが見付かるまでずっと有効です。このオプションへの引数はエディットセレクタと呼ばれます。
デフォルトでは、mkvpropedit(1)はセグメント情報のセクションを編集します。
セグメント情報は次の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
二番目の例は、最初の字幕トラックから'デフォルトトラックフラグ'を削除し二番目の字幕トラックに設定します。mkvpropedit(1)はmkvmerge(1)とは違い、'デフォルトトラックフラグ'が違うトラックで'1'に設定されているからといって自動的に他のトラックの'デフォルトトラックフラグ'を'0'に設定はしない、という点に注意してください。
$ mkvpropedit movie.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1
ファイル中で2番目の字幕トラックのタグを置換するには、以下のようにします:
$ mkvpropedit movie.mkv --tags track:s2:new-subtitle-tags.xml
タグを削除するには、ファイル名を空白にします
$ mkvpropedit movie.mkv --tags all:
mkvpropedit(1)は下の3つの返り値を返します。
0
-- この返り値は変更が成功したことを示します。
1
-- この返り値は、一つ以上の警告が出力されましたが、抽出が続行されたことを意味します。警告は
'警告:
'
という文字列を先頭につけて出力されます。出力ファイルが無事であるかどうかは、場合によります。出力ファイルを確認することを強く推奨します。
この返り値は、エラーが発生し、エラーメッセージを表示した直後にmkvpropedit(1)が終了したことを示します。エラーメッセージは不正なコマンドラインやファイルI/Oエラー、壊れたファイルなど様々です。