我已经为rtsp流编写了一个directshow源过滤器。通过图形编辑进行测试。当网络正常时,rtsp流可以正常播放。其他情况下,网络不好或rtsp流文件特殊,播放可能有误,无视频,无音频。按照时间线继续下去。我找到了原因,对于流的情况,有时Fillbuffer(),队列没有缓冲区,所以输出没有样本发送。DoBufferProcessingLoop()只是一次又一次地执行NULL,直到rtsp接收到来自网络的数据。所以我认为在这种情况下,源过滤器可能会为graphpath发送事件,比如Pause事件,但我不知道该怎么做。
谢谢你的帮助。
像这样的事件,"hr“的值是什么?
P过滤器->通知事件(EC_ERRORABORT,hr,0);
发布于 2014-08-27 02:49:47
您可以通过IMediaEventSink::Notify发送事件,但这些都是信息性的,这意味着上面有一个人,通常是图形所有者responding to the events。暂停图形基本上不是过滤器的任务。过滤器应该在数据匮乏时发出通知,例如在断开连接和尝试恢复的情况下。或者,彻底失败。
然后图形所有者接收事件并决定做什么,暂停图形或通知用户。
https://stackoverflow.com/questions/25419269
复制相似问题