1

我正在尝试使用 directshow SDK 构建图表。当我调用 GraphBuilder.AddSourceFilter 时,我收到错误 0x800C000D

private IGraphBuilder graphBuilder = null;
private IBaseFilter sourceFilter = null;

int hr = 0;
graphBuilder = (IGraphBuilder)new FilterGraph();

hr = graphBuilder.AddSourceFilter(filename, @"Source1", out sourceFilter);

之后 hr 返回上面提到的错误代码并抛出异常。担心我的文件名不正确,我尝试了这些:

udp://224.1.1.13:9005/10.10.1.3
udp://224.1.1.13:9005/0.0.0.0
udp://224.1.1.13:9005

流可用并且正在传输,我已经使用地址 udp://224.1.1.13:9005 使用 VLC 确认了这一点

我对 DirectShow 图形构建非常缺乏经验,所以我想知道我是否缺少一些基本的东西。我已经查看了用于图形构建的 msdn 文档,但我听说这个过程比 ms 所允许的要微妙得多。

4

1 回答 1

1

0x800C000DPST_E_UNKNOWN_EXCEPTION,并且是一个罕见的弃用 PStore 故障代码。问题是过滤器查找/实例化失败的地方太深了。没有股票 DirectShow 过滤器来处理udp://流(据说是 RTP/RTSP)。VLC 使用自己的代码处理它们。

您通常需要特定的第三方过滤器来呈现这些 URL,并且此过滤器可能还需要直接添加,AddFilter而不是依赖于AddSourceFilter通过公共协议注册来获取它。

于 2013-06-27T15:55:28.997 回答