DirectShow在我用来解密缓冲流的源过滤器(UNSUPPORTED_STREAM)上抛出错误

时间:2016-05-11 17:05:15

标签: c# directshow directshow.net

我编译并注册了DirectShow示例中包含的DLL(Microsoft SDKs \ Windows \ v7.1 \ Samples \ multimedia \ directshow \ filters \ async)我修改它以在收到缓冲区时对其进行解密(因为我收到的文件是加密的。我可以在GraphStudioNext上运行示例,但每当我尝试使用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_STREAM)(无法播放文件:不支持该格式。)有没有办法解决这个问题?

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

1 个答案:

答案 0 :(得分:1)

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

我的图表以FileSourceCustom结尾 - > GDCL解复用器 - > FFDShowDecoder - > VMR9