[PR]テレビ番組表
今夜の番組チェック


Recursiveの部屋

MplPatch

価格.comの「CANON iVIS HF10」の口コミで話題になっていたことですが...
Canon iVIS HF10/100で撮影した映像を、SDHCカード経由でPanasonic DIGA(DMR-BW700等)へ取り込むと、DIGAの編集メニューでタイトル名の変更ができないようです。
有志の方々の調査により、AVCHDフォルダ内のプレイリスト(.MPL)ファイルの、ある一箇所のデータを書き換える(パッチを当てる)と、DIGAでタイトル編集できるようになることが分かりました。

しかしバイナリエディタが使える人でないと、パッチを当てるのは難しいでしょうし、手作業だとパッチを当てる場所を間違えることもあるでしょう。
そこで、プレイリストへパッチを当てるプログラムを作ってみました。

詳しい経過は、以下のスレをご覧ください。
Delphi2007で書いてあります。またEXEはUPXで圧縮してあります。ソースコードも置いておきます。

実行プログラムMplPatch.zip
ソースコードMplPatch-Source.zip

MplPatch.exeを起動し、PCにAVCHDファイルの入ったSDHCカードを挿して「実行」ボタンをクリックします。(SDHCカードのライトプロテクトスイッチは、あらかじめ解除=書き込み許可にしておく必要があります)
すると、\PRIVATE\AVCHD\BDMV\PLAYLISTフォルダ内の.MPLファイルに対して、パッチ(0x90を0x03へ書き換える)を当てます。
ついでにタイトルとして、最初のシーンの記録日時と、プレイリストに含まれるシーン数を設定します。

どのドライブにSDHCカードが挿さっているのかを、直接的に知る方法が分からないので、とりあえず、種類が「リムーバブル ディスク」、かつファイルシステムが「FAT32」、かつボリューム名が「CANON」、かつ「\PRIVATE\AVCHD\BDMV\PLAYLISTフォルダが存在する」ドライブを処理対象としています。
もし複数見つかったら、それらすべてに対して順に処理します。

PLAYLISTフォルダ内に複数の.MPLファイルが見つかったら、それらすべてに対して順に処理します。

処理した.MPLファイルのタイムスタンプ(更新日時)は、元のままに保ちます。

パッチを当てる(0x90の)場所は、単なるデータ列検索ではなくて、いちおうデータ構造を解析して場所を決定するようにしてあります。詳しくはソースコードをご覧ください。そこに、参考にしたソースのURLも書いておきました。ただし、肝心のタイトルデータブロックの構造までは書かれていなかったので、もしかしたら解釈を間違っているところがあるかも知れませんが...(^^;)

すでに0x03だったり、0x90以外だったりした場合は、パッチは当てません。

なお、私はDIGAを持っていない!ので、DIGAでの動作確認は出来ません。(^^;)
うまく動かなかったら、ゴメンナサイ...


注意)

これは、あくまでも個人的な実験用のプログラムという位置づけであり、動作保証は一切しません。100%自己責任の上でお使いください。
あらかじめPLAYLISTフォルダ内の.MPLファイルをバックアップしてから、実行してください。
フリーソフトとしてご利用いただけますが、プログラムやソースコードそのものの二次配布(再配布)はご遠慮ください。ただしソースコードの改造等は、ご自由にどうぞ。


最終更新日 2008/05/07