我编译并注册了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)(无法播放文件:不支持该格式。)有没有办法解决这个问题?
编辑:如果我删除了我的解密代码,则不会发生此问题。
答案 0 :(得分:1)
发现了这个问题。我必须从头开始构建图形,而不是在RenderFile上回复。我不得不手动连接我的自定义文件源阅读器。它返回-2147220891(VFW_E_UNSUPPORTED_STREAM)的原因是因为我加密了系统所依赖的头信息中包含的整个文件,以确定要连接的其余过滤器。
我的图表以FileSourceCustom结尾 - > GDCL解复用器 - > FFDShowDecoder - > VMR9