用于rtsp流的dshow源过滤器

时间:2014-08-21 06:04:56

标签: http directshow rtsp

我为rtsp流写了一个directshow源过滤器。通过graphedit测试。当网络良好时,rtsp流可以正常播放。其他情况下,网络不好或rtsp流媒体文件特殊,播放可能是hanld,没有视频,没有音频。按时间表继续。 我找到原因,对于流式传输的情况,有时Fillbuffer(),队列没有缓冲区,所以outputpin没有样本发送。 DoBufferProcessingLoop()只是一次又一次地执行NULL,直到rtsp从网络接收数据。所以我认为这种情况下,源过滤器可能会发送graphpath事件,如Pause事件,但我不知道该怎么做。

感谢您的帮助。

像这样的事件," hr"的价值是什么 pFilter-> NotifyEvent(EC_ERRORABORT,hr,0);

1 个答案:

答案 0 :(得分:0)

您可以通过IMediaEventSink::Notify发送活动,但这些信息具有信息性,这意味着有人在顶层,通常是图表所有者responding to the events。暂停图表基本上不是过滤器的任务。过滤器应该在数据不足时通知,例如在断开连接并尝试恢复的情况下。或者,完全失败。

然后图表所有者收到事件并决定要做什么,暂停图表或通知用户。