diff --git a/src/Record/HlsMediaSource.cpp b/src/Record/HlsMediaSource.cpp index 4f1933b2..8dd0a702 100644 --- a/src/Record/HlsMediaSource.cpp +++ b/src/Record/HlsMediaSource.cpp @@ -30,20 +30,31 @@ namespace mediakit{ HlsCookieData::HlsCookieData(const MediaInfo &info) { _info = info; - auto src = dynamic_pointer_cast(MediaSource::find(HLS_SCHEMA,_info._vhost,_info._app,_info._streamid)); - if(src){ - src->modifyCount(true); + addReaderCount(); +} + +void HlsCookieData::addReaderCount(){ + if(!_added){ + auto src = dynamic_pointer_cast(MediaSource::find(HLS_SCHEMA,_info._vhost,_info._app,_info._streamid)); + if(src){ + src->modifyReaderCount(true); + _added = true; + } } + } HlsCookieData::~HlsCookieData() { - auto src = dynamic_pointer_cast(MediaSource::find(HLS_SCHEMA,_info._vhost,_info._app,_info._streamid)); - if(src){ - src->modifyCount(false); + if(_added){ + auto src = dynamic_pointer_cast(MediaSource::find(HLS_SCHEMA,_info._vhost,_info._app,_info._streamid)); + if(src){ + src->modifyReaderCount(false); + } } } void HlsCookieData::addByteUsage(uint64_t bytes) { + addReaderCount(); _bytes += bytes; } diff --git a/src/Record/HlsMediaSource.h b/src/Record/HlsMediaSource.h index 98390108..89a96772 100644 --- a/src/Record/HlsMediaSource.h +++ b/src/Record/HlsMediaSource.h @@ -35,9 +35,12 @@ public: HlsCookieData(const MediaInfo &info); ~HlsCookieData(); void addByteUsage(uint64_t bytes); +private: + void addReaderCount(); private: uint64_t _bytes = 0; MediaInfo _info; + bool _added = false; }; class HlsMediaSource : public MediaSource { @@ -73,7 +76,7 @@ private: * 修改观看者个数 * @param add 添加海思删除 */ - void modifyCount(bool add) { + void modifyReaderCount(bool add) { if (add) { ++_readerCount; return;