avisynth

2009年8月28日 (金)

dvinfo

2年前までminiDVのビデオカメラを使っていました。
それを1394経由でPCにAVI2として取り込み、
avisynthとpluginのdvinfoを使って日時を表示させ
mpegに変換するようなことをし、DVDにしようとしてました。
しかし、忙しくなったため、ほとんどやらずに作業中断。
それからすっかり忘れていたわけですが、
いい加減やらないとまずいと思い立ち、再開。

でもdvinfoに問題点があることは覚えてました。
私の環境の場合(なのか?)、ファイルサイズが大きいと
日時が出ずerrorが表示されてしまいます。
それがAVIStdIndex構造体のaIndex[ ]のサイズのせいと
いうところまではわかってました。

でしょうがなく、dvinfoのソースを修正することに。
最近フリーのMS VC++をインストール、
コンパイル環境を作りました。
しかし、warningをうまくとることができず、
結局VC++6を探してインストールしました。
これで何とか環境は整い、aIndex[]のサイズを私の環境?では
問題ないサイズに設定してdvinfo.dllを再作成できました。
せっかくなので、AVSファイルを再生するときに
先頭のタイムレコードをOutputDebugString()で出すようにしました。
DebugViewを使えば、「dvinfo:」の横に
AVSファイルに書いたDVInfoのフォーマットで出力するように。
dvinfoのパッチをここにおいてます。
dvinfo.dllはavisynthプラグインフォルダへ。

後はAVSファイルを

AVISource("000.avi")
DVInfo("000.avi", "rec_time", 400, 440, "MS ゴシック", 30, 255*65536+255*256+255, 0*65536+0*256+0)
return last

のように記述して、AVSファイルをmedia player classicなどで再生すれば
日時表示が付きます。

しかしこの後が実は大変で。
mpegエンコードのときに真っ暗になったり音が消えたり。
でもこのソフトしか持ってないので成功するまで何度もやるしかない…。

| | コメント (0) | トラックバック (0)