C#+DirectShow+ffdshowでFLV再生

ニコニコのコメント取得はできた(id:tomoemon:20070619)けどやっぱりいろいろやるにはFLVの再生とかもできた方が良いだろうと思って再生方法を探してみる。とりあえず調べてみるとDirectShowのフィルタがたくさん集まったffdshowにFLVのコーデックであるFLV1やFLV4が入っているのでこれを使えばよいことがわかった。


ffdshowを入れてDirectShowでプログラミングすれば勝手にDirectShowが必要なフィルタをとってきて再生してくれるようなのでC#でDirectShowをいじっているサンプルを探す。どうやらDirectShowには本家Microsoftの.net版がないらしく有志のものがいくつかあるらしいことがわかったが、サンプルが豊富なDirectShowNetを使うことにした。
DirectShowNet library


確かにサンプルが豊富でPlayersフォルダの中のを動かすと簡単に動画が再生できた。しかし、FLVファイルを指定しても例外が発生して再生できない。なにが足りないのかと思ったらFLVをffdshowに渡すために音楽と動画のパーツに分けてやるためのFLV Splitterが必要らしい。
FLV Splitterを用いてFLVの再生


grapheditに突っ込んでみるとなるほどという感じ。


とりあえず再生できたけど、なぜか70〜100フレームで止まってしまう。
きっと解決できるだろう。今日はここまで。