mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-21 08:22:21 +08:00
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:
@@ -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
|
||||
|
||||
@@ -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////
|
||||
|
||||
@@ -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
|
||||
@@ -28,6 +28,9 @@ public:
|
||||
*/
|
||||
void play(const std::string &url) override;
|
||||
|
||||
size_t getRecvSpeed() override;
|
||||
size_t getRecvTotalBytes() override;
|
||||
|
||||
/**
|
||||
* 停止播放
|
||||
* Stop playing
|
||||
|
||||
@@ -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////
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user