「 http://directshownet.sourceforge.net/」の DirectShot.Net ラッパーを使用して、多数のビデオ ファイルからフレームを抽出しようとしています。
DxScan サンプル アプリを実行するたびに。「接続を確立するための中間フィルターの組み合わせが見つかりませんでした」というメッセージが表示されます。これは、WMV ファイル、MP4 ファイル、AVI ファイルで発生します。サンプル アプリで指定したメディア。
GSpot コーデック ツールを使用してビデオを開き、グラフをレンダリングするように依頼すると、問題なくレンダリングされます。したがって、マシンは間違いなくコンテンツを再生できます。
私はWin 7 64ビットを使用しています。x64、x86、または Auto を対象として、同じエラーがスローされます。管理者として Visual Studio を実行することを含みます。
以下の Romain R が提案するように、サンプル コードを修正して、ビデオ メディア タイプを含む正しいピンを見つけようとしました。
私は使用しています:
IEnumPins epins;
capFilter.EnumPins(out epins);
IntPtr fetched = Marshal.AllocCoTaskMem(4);
IPin[] pins = new IPin[1];
while (epins.Next(1, pins, fetched) == 0)
{
PinInfo pinfo;
pins[0].QueryPinInfo(out pinfo);
IEnumMediaTypes mtypes;
pins[0].EnumMediaTypes(out mtypes);
AMMediaType[] types = new AMMediaType[1];
while(mtypes.Next(1, types, new IntPtr()) == 0){
var majorType = types[0].majorType;
if (majorType == MediaType.Video)
{
//This is never reached
}
}
}
MP4 ファイルの場合、上記のコメント行にヒットすることはありません。ただし、WMV ファイルの場合、デモは正しく実行されるようになりました。
おそらく、これは適切な MP4 ファイル フィルタが見つからないためです。コンテンツは Windows Media Player で正常に再生されるため、これは不明瞭です。
これは考えられる原因ですか?