2012年7月1日日曜日

Win7 の avisynth DirectShowSource() でハマる

昔入れた WindowsServer2008R2,どうもマルチメディア系の動作が変で使いにくかったので,放置状態だった.で,ひょんなことから Win7 Ultimate を \4,600 で購入www 中国からの通販でもなんか平気になってきた自分…恐ろしい子!

んで,Win7 に本格的に乗り換えようといろいろ設定してたら,avisynth の DirectShowSource() で mp4 を読もうとすると,「Media Player Classic はグラフ中のピンのいくつかを再生できませんでした (云々かんぬん)」で怒られる.
avisynth は 1.5 倍再生とか VSD for GPS とかで多用しているので,これが動かないと痛すぎる.(;´Д⊂)
こういう時はたいてい必要なコーデックが足りてないと怒られるけど,ffdshow + MP4 splitter ちゃんと入れてるけどなぁ.

でいろいろもがいているうちに,なぜか avs 再生した時は ffdshow が使われてなさそうなことがわかった.
Win7 では OS 標準で mp4 デコーダとかを持ってるはずだけど,インストールされている DirectShowFilter のどれを使うかっていう優先度はどこで決めてるんだろ? と思ってたどり着いたのがここ
なるほど,メリット値ってので優先度が決まるのね.で DirectShow Filter Tool で ffdshow の優先度見てみたら,ほぼ最優先じゃん orz

んーと思って,さらにググって見つけたのがここ
ここをみると,Win7 からはメリット値を無視して (!!!) マイクロソフト謹製のデコーダしか使わず,ffdshow とかは使わないらしい.
そう聞くと,MPC で mp4 は問題なく再生できたこと (MPC はメリット値を無視しない) も,avisynth の DirectShowSource() で問題がでたことも,WinServer2008R2 ではこの問題が起こらなかったこと (2008R2 には MS 謹製コーデックは入ってない) も,全てに合点がいく.

で,Win7DSFilterTweaker というツールで Win7 でもデコーダの優先順位を設定できて,avisynth の DirectShowSource() でも無事 ffdshow が使用された.

てか,中途半端なウンコデコーダを強制的に使わせてエラー吐くとか,ヤメテクレ(;´Д⊂)

0 件のコメント:

コメントを投稿