C# DirectShow在我用来解密缓冲区流的源筛选器(不支持的\u流)上抛出错误

C# DirectShow在我用来解密缓冲区流的源筛选器(不支持的\u流)上抛出错误,c#,directshow,directshow.net,C#,Directshow,Directshow.net,我编译并注册了DirectShow示例(Microsoft SDK\Windows\v7.1\samples\multimedia\DirectShow\filters\async)中包含的DLL,并对其进行了修改,以便在收到缓冲区时对其进行解密(因为我收到的文件是加密的。我可以在GraphStudionText上运行该示例,但每当我尝试使用DirectShowLib在C#上构建图形时,它总是给我错误 IBaseFilter xAsync = CreateFilter("C553F2C0-152

我编译并注册了DirectShow示例(Microsoft SDK\Windows\v7.1\samples\multimedia\DirectShow\filters\async)中包含的DLL,并对其进行了修改,以便在收到缓冲区时对其进行解密(因为我收到的文件是加密的。我可以在GraphStudionText上运行该示例,但每当我尝试使用DirectShowLib在C#上构建图形时,它总是给我错误

IBaseFilter xAsync = CreateFilter("C553F2C0-1529-11D0-B4D1-00805F6CBBEA");
hr = graphBuilder.AddFilter(xAsync, "xAsync");

hr = this.graphBuilder.RenderFile(filename, null);
它返回-2147220891(VFW_E_UNSUPPORTED_流)(无法播放文件:格式不受支持)。有办法解决这个问题吗


编辑:如果删除解密代码,则不会发生此问题。

发现了此问题。我必须从头开始构建图形,而不是在RenderFile上回复。我必须手动连接自定义文件源读取器。它返回-2147220891(VFW_E_UNSUPPORTED_STREAM)的原因是因为我加密了头信息中包含的整个文件,系统依赖该文件来确定要连接的其余过滤器


我的图形以FileSourceCustom->GDCL解复用器->FFDShowDecoder->VMR9结束。可能您运行的是32位Graph studio和64位C#app。或者其他方式。对于C#,如果您构建的是“任意CPU”配置,位数取决于“首选32位”在项目设置中。在这种情况下,使用这个答案来收集失败的更多信息:另外,如果你选择了更新的技术堆栈,你会得到一个很好的GUI工具,google“MFTrace”这是你需要调试它的地方。显然你的解密并没有像你期望的那样工作。