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

DirectShow throws error on my Source Filter (UNSUPPORTED_STREAM) that i use to decrypted the buffer stream

我编译并注册了包含在 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);

it returns -2147220891 (VFW_E_UNSUPPORTED_STREAM) (无法播放文件:不支持该格式。)有没有办法解决这个问题?

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

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

我的图形以 FileSourceCustom -> GDCL 解复用器 -> FFDShowDecoder -> VMR9 结束