我正在尝试使用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允许的更加微妙。
答案 0 :(得分:1)
0x800C000D
是PST_E_UNKNOWN_EXCEPTION
,是一个罕见的弃用PStore失败代码。问题是过滤器查找/实例化在某个地方失败太深。没有库存DirectShow过滤器来处理udp://
流(据称是RTP / RTSP)。 VLC使用自己的代码处理它们。
您通常需要特定的第三方过滤器来呈现这些网址,此过滤器可能还需要通过AddFilter
直接添加,而不是依靠AddSourceFilter
通过公共协议注册来提取。 / p>