在directshow SDK中使用AddSourceFilter时出现0x800C000D错误

本文关键字:0x800C000D 错误 AddSourceFilter directshow SDK | 更新日期: 2023-09-27 18:20:19

我正试图使用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

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

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

在directshow SDK中使用AddSourceFilter时出现0x800C000D错误

0x800C000DPST_E_UNKNOWN_EXCEPTION,是一种罕见的不推荐使用的PStore故障代码。问题是过滤器查找/实例化失败的地方太深了。没有库存DirectShow过滤器来处理udp://流(假定为RTP/RTP)。VLC使用自己的代码来处理它们。

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