Add network traffic statistics (#4239)

Co-authored-by: xiongguangjie <xiong_panda@163.com>
Co-authored-by: xia-chu <771730766@qq.com>
This commit is contained in:
PioLing
2025-05-02 16:23:25 +08:00
committed by GitHub
parent ab14adb94d
commit 7b1f8fedac
35 changed files with 325 additions and 19 deletions

View File

@@ -282,6 +282,7 @@ void HlsPlayer::onResponseHeader(const string &status, const HttpClient::HttpHea
void HlsPlayer::onResponseBody(const char *buf, size_t size) {
_m3u8.append(buf, size);
_recvtotalbytes += getRecvTotalBytes();
}
void HlsPlayer::onResponseCompleted(const SockException &ex) {
@@ -357,6 +358,13 @@ void HlsPlayer::playDelay(float delay_sec) {
}, getPoller()));
}
size_t HlsPlayer::getRecvSpeed() {
return TcpClient::getRecvSpeed() + (_http_ts_player ? _http_ts_player->getRecvSpeed() : 0);
}
size_t HlsPlayer::getRecvTotalBytes() {
return TcpClient::getRecvTotalBytes() + (_http_ts_player ? _http_ts_player->getRecvTotalBytes() : 0);
}
//////////////////////////////////////////////////////////////////////////
void HlsDemuxer::start(const EventPoller::Ptr &poller, TrackListener *listener) {
@@ -480,6 +488,7 @@ void HlsPlayerImp::onPacket(const char *data, size_t len) {
if (_decoder && _demuxer) {
_decoder->input((uint8_t *) data, len);
}
_recvtotalbytes += HlsPlayer::getRecvTotalBytes();
}
void HlsPlayerImp::addTrackCompleted() {
@@ -531,4 +540,11 @@ vector<Track::Ptr> HlsPlayerImp::getTracks(bool ready) const {
return static_pointer_cast<HlsDemuxer>(_demuxer)->getTracks(ready);
}
size_t HlsPlayerImp::getRecvSpeed() {
return PlayerImp<HlsPlayer, PlayerBase>::getRecvSpeed();
}
size_t HlsPlayerImp::getRecvTotalBytes() {
return _recvtotalbytes;
}
}//namespace mediakit

View File

@@ -49,7 +49,7 @@ private:
std::deque<std::pair<int64_t, std::function<void()> > > _frame_cache;
};
class HlsPlayer : public HttpClientImp , public PlayerBase , public HlsParser{
class HlsPlayer: public HttpClientImp, public PlayerBase, public HlsParser {
public:
HlsPlayer(const toolkit::EventPoller::Ptr &poller);
@@ -73,6 +73,9 @@ public:
*/
void teardown() override;
size_t getRecvSpeed() override;
size_t getRecvTotalBytes() override;
protected:
/**
* 收到ts包
@@ -127,12 +130,17 @@ private:
int _timeout_multiple = MIN_TIMEOUT_MULTIPLE;
int _try_fetch_index_times = 0;
int _ts_download_failed_count = 0;
protected:
size_t _recvtotalbytes = 0;
};
class HlsPlayerImp : public PlayerImp<HlsPlayer, PlayerBase>, private TrackListener {
class HlsPlayerImp final: public PlayerImp<HlsPlayer, PlayerBase>, private TrackListener {
public:
using Ptr = std::shared_ptr<HlsPlayerImp>;
HlsPlayerImp(const toolkit::EventPoller::Ptr &poller = nullptr);
size_t getRecvSpeed() override;
size_t getRecvTotalBytes() override;
private:
//// HlsPlayer override////

View File

@@ -57,4 +57,11 @@ void TsPlayer::onResponseBody(const char *buf, size_t size) {
}
}
size_t TsPlayer::getRecvSpeed() {
return TcpClient::getRecvSpeed();
}
size_t TsPlayer::getRecvTotalBytes() {
return TcpClient::getRecvTotalBytes();
}
} // namespace mediakit

View File

@@ -28,6 +28,9 @@ public:
*/
void play(const std::string &url) override;
size_t getRecvSpeed() override;
size_t getRecvTotalBytes() override;
/**
* 停止播放
* Stop playing

View File

@@ -21,6 +21,8 @@ public:
using Ptr = std::shared_ptr<TsPlayerImp>;
TsPlayerImp(const toolkit::EventPoller::Ptr &poller = nullptr);
size_t getRecvSpeed() override;
size_t getRecvTotalBytes() override;
private:
//// TsPlayer override////

View File

@@ -77,4 +77,11 @@ vector<Track::Ptr> TsPlayerImp::getTracks(bool ready) const {
return static_pointer_cast<HlsDemuxer>(_demuxer)->getTracks(ready);
}
size_t TsPlayerImp::getRecvSpeed() {
return TcpClient::getRecvSpeed();
}
size_t TsPlayerImp::getRecvTotalBytes() {
return TcpClient::getRecvTotalBytes();
}
}//namespace mediakit