2009年3月28日土曜日

AviSynth プラグインフィルタ自作(2)

 ほぼ移植完了.AviUtl と AviSynth の差分は,画像データに点を打つ関数と,画像のプロパティ (縦横サイズとか) 取得部分のみなので割とすんなりと実装は済んだ.

 …と思ったら,MediaPlayerClassic で映像と音声とメーターがズレてるよ_| ̄|○ MediaPlayerClassic で動画のプロパティ見るとなぜか 25fps になってた.ffdshow のオンスリーンディスプレイでは 29.970fps になってるのに,いみがわからん.
 調べてみたら,.mp4 が 25fps になってしまうのは ffdshow のけっこう有名な問題らしい.そういや,AviUtl で ffdshow 経由で .MP4 開いたときもおかしくて,mp4input.aui 経由で読むように変えた過去があったし.でも ffdshow の新しいバージョンでは改善されたとかの記述もあるし,よくわからん.
 でとりあえず Haali Media Splitter 入れたら直ったヽ(´ー`)ノ そういや昔はこれ入れてた気もするが,ffdshow が新しくなってから入れなくても .mp4 見れるようになった(?) ので,入れてなかった.Haali Media Splitter 入れてない状態で,ffdshow 再インストしたら .mp4 見れなくなったので,何らかの .mp4 スプリッタが入ってたらしく,25fps 化はこの謎スプリッタが原因みたい.

 で,いろいろ使ってみたのだが,AviSynth 対応は自分ですら予想しなかったほど便利であること発覚.例えば 320*240 で撮影した動画は,640*480 に拡大してからメーターを重ねるなんてことが簡単にできるし,↓のようなスクリプトで 2つの車載動画を並べて同時再生とかもできるし.

c1 = DirectShowSource("SANY0001.MP4").ConvertToYUY2(). \
VSDFilter( \
"vsd20090123_095934.log", \
video_start=8324, \
video_end=68034, \
log_start=4522, \
log_end=34980, \
map_length=240, \
map_size=460, \
map_angle=3406, \
lap_time=1, \
g_snake=1 \
). \
BilinearResize( 320, 240 )

c2 = DirectShowSource("SANY0002.MP4").ConvertToYUY2(). \
VSDFilter( \
"vsd20090123_111455.log", \
video_start=221, \
video_end=52536, \
log_start=8611, \
log_end=35296, \
map_length=240, \
map_size=460, \
map_angle=3406, \
lap_time=1, \
g_snake=1 \
). \
BilinearResize( 320, 240 )

StackHorizontal(c1, c2)

こりゃ便利だわヽ(´ー`)ノ

0 件のコメント:

コメントを投稿