From 236dc46b82fda3bd72c3960f45b12815bb1bac19 Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Sun, 29 Dec 2019 12:10:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90HLS=E6=8C=89=E9=9C=80?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Record/HlsMediaSource.cpp | 23 +++++++++++++++++------ src/Record/HlsMediaSource.h | 5 ++++- 2 files changed, 21 insertions(+), 7 deletions(-) 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;