質問

I'm attempting to build a graph using the directshow SDK. When I call GraphBuilder.AddSourceFilter, I get the error 0x800C000D

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

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

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

After which hr returns the error code mentioned above and an exception is thrown. Fearing I had an incorrect filename, I tried these:

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

The stream is available and transmitting and I have confirmed so with VLC using the address udp://224.1.1.13:9005

I am pretty inexperienced with DirectShow graph building, so I'm wondering if I'm missing something basic. I'v gone over the msdn documentation for graphbuilding, but I've heard that the process is a lot more nuanced than ms lets on.

役に立ちましたか?

解決

0x800C000D is PST_E_UNKNOWN_EXCEPTION, and is a rare deprecated PStore failure code. The problem is that filter lookup/instantiation fails somewhere too deep. There is no stock DirectShow filter to handle udp:// streams (supposedly RTP/RTSP). VLC handles them using its own code.

You typically need specific third party filter to render these URLs, and this filter might also need to be added directly via AddFilter rather then relying on AddSourceFilter to pick it up through public protocol registrations.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top