Commit 3917b645 by xiongziliang

完善获取媒体读取器个数方法

parent 0fa24526
Subproject commit 8f656dfdff2d7c83583a609212716ae8db921fbf
Subproject commit 079fae2798687300ff55cfd53b6f80010abe6b81
......@@ -54,10 +54,13 @@ public:
//拖动进度条
return false;
}
virtual bool close() {
//通知其停止推流
return false;
}
virtual void onReaderChanged(const EventPoller::Ptr &poller,int size,bool add_flag){}
};
class MediaInfo
{
......@@ -166,6 +169,7 @@ public:
}
}
virtual int readerCount() = 0;
protected:
void regist() ;
bool unregist() ;
......
......@@ -64,6 +64,10 @@ public:
return _pRing;
}
int readerCount() override {
return _pRing->readerCount();
}
const AMFValue &getMetaData() const {
lock_guard<recursive_mutex> lock(_mtxMap);
return _metadata;
......@@ -87,7 +91,7 @@ public:
_mapCfgFrame[pkt->typeId] = pkt;
} else{
if(!_bRegisted){
MediaSource::regist();
regist();
_bRegisted = true;
}
_mapStamp[pkt->typeId] = pkt->timeStamp;
......
......@@ -89,6 +89,10 @@ public:
_rtspMuxer->setListener(listener);
}
}
int readerCount() override {
return RtmpMediaSource::readerCount() + _rtspMuxer->readerCount();
}
private:
RtmpDemuxer::Ptr _rtmpDemuxer;
RtspMediaSourceMuxer::Ptr _rtspMuxer;
......
......@@ -65,6 +65,11 @@ public:
//获取媒体源的rtp环形缓冲
return _pRing;
}
int readerCount() override {
return _pRing->readerCount();
}
const string& getSdp() const {
//获取该源的媒体描述信息
return _strSdp;
......
......@@ -716,7 +716,7 @@ bool RtspSession::handleReq_Play(const Parser &parser) {
auto iStartTime = 1000 * atof(strStart.data());
InfoL << "rtsp seekTo(ms):" << iStartTime;
useBuf = !pMediaSrc->seekTo(iStartTime);
}else if(pMediaSrc->getRing()->readerCount() == 0){
}else if(pMediaSrc->readerCount() == 0){
//第一个消费者
pMediaSrc->seekTo(0);
}
......
......@@ -85,6 +85,9 @@ public:
_rtmpMuxer->setListener(listener);
}
}
int readerCount() override {
return RtspMediaSource::readerCount() + _rtmpMuxer->readerCount();
}
private:
RtspDemuxer::Ptr _rtspDemuxer;
RtmpMediaSourceMuxer::Ptr _rtmpMuxer;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论