hls/http-ts播放器新增性能测试模式

This commit is contained in:
ziyue 2022-02-11 11:04:16 +08:00
parent 91c0a563c3
commit 8338773767
4 changed files with 28 additions and 14 deletions

View File

@ -76,7 +76,8 @@ void HlsPlayer::fetchSegment() {
} }
return Socket::createSocket(poller, true); return Socket::createSocket(poller, true);
}); });
auto benchmark_mode = (*this)[Client::kBenchmarkMode].as<int>();
if (!benchmark_mode) {
_http_ts_player->setOnPacket([weak_self](const char *data, size_t len) { _http_ts_player->setOnPacket([weak_self](const char *data, size_t len) {
auto strong_self = weak_self.lock(); auto strong_self = weak_self.lock();
if (!strong_self) { if (!strong_self) {
@ -85,6 +86,7 @@ void HlsPlayer::fetchSegment() {
//收到ts包 //收到ts包
strong_self->onPacket_l(data, len); strong_self->onPacket_l(data, len);
}); });
}
if (!(*this)[Client::kNetAdapter].empty()) { if (!(*this)[Client::kNetAdapter].empty()) {
_http_ts_player->setNetAdapter((*this)[Client::kNetAdapter]); _http_ts_player->setNetAdapter((*this)[Client::kNetAdapter]);
@ -349,7 +351,8 @@ void HlsPlayerImp::addTrackCompleted() {
} }
void HlsPlayerImp::onPlayResult(const SockException &ex) { void HlsPlayerImp::onPlayResult(const SockException &ex) {
if (ex) { auto benchmark_mode = (*this)[Client::kBenchmarkMode].as<int>();
if (ex || benchmark_mode) {
PlayerImp<HlsPlayer, PlayerBase>::onPlayResult(ex); PlayerImp<HlsPlayer, PlayerBase>::onPlayResult(ex);
} else { } else {
auto demuxer = std::make_shared<HlsDemuxer>(); auto demuxer = std::make_shared<HlsDemuxer>();
@ -364,6 +367,9 @@ void HlsPlayerImp::onShutdown(const SockException &ex) {
} }
vector<Track::Ptr> HlsPlayerImp::getTracks(bool ready) const { vector<Track::Ptr> HlsPlayerImp::getTracks(bool ready) const {
if (!_demuxer) {
return vector<Track::Ptr>();
}
return static_pointer_cast<HlsDemuxer>(_demuxer)->getTracks(ready); return static_pointer_cast<HlsDemuxer>(_demuxer)->getTracks(ready);
} }

View File

@ -20,6 +20,7 @@ TsPlayer::TsPlayer(const EventPoller::Ptr &poller) : HttpTSPlayer(poller, true)
void TsPlayer::play(const string &url) { void TsPlayer::play(const string &url) {
TraceL << "play http-ts: " << url; TraceL << "play http-ts: " << url;
_play_result = false; _play_result = false;
_benchmark_mode = (*this)[Client::kBenchmarkMode].as<int>();
setHeaderTimeout((*this)[Client::kTimeoutMS].as<int>()); setHeaderTimeout((*this)[Client::kTimeoutMS].as<int>());
setBodyTimeout((*this)[Client::kMediaTimeoutMS].as<int>()); setBodyTimeout((*this)[Client::kMediaTimeoutMS].as<int>());
setMethod("GET"); setMethod("GET");
@ -45,7 +46,9 @@ void TsPlayer::onResponseBody(const char *buf, size_t size) {
_play_result = true; _play_result = true;
onPlayResult(SockException(Err_success, "play http-ts success")); onPlayResult(SockException(Err_success, "play http-ts success"));
} }
if (!_benchmark_mode) {
HttpTSPlayer::onResponseBody(buf, size); HttpTSPlayer::onResponseBody(buf, size);
} }
}
} // namespace mediakit } // namespace mediakit

View File

@ -37,6 +37,7 @@ protected:
private: private:
bool _play_result = true; bool _play_result = true;
bool _benchmark_mode = false;
}; };
} // namespace mediakit } // namespace mediakit

View File

@ -33,7 +33,8 @@ void TsPlayerImp::addTrackCompleted() {
} }
void TsPlayerImp::onPlayResult(const SockException &ex) { void TsPlayerImp::onPlayResult(const SockException &ex) {
if (ex) { auto benchmark_mode = (*this)[Client::kBenchmarkMode].as<int>();
if (ex || benchmark_mode) {
PlayerImp<TsPlayer, PlayerBase>::onPlayResult(ex); PlayerImp<TsPlayer, PlayerBase>::onPlayResult(ex);
} else { } else {
auto demuxer = std::make_shared<HlsDemuxer>(); auto demuxer = std::make_shared<HlsDemuxer>();
@ -48,6 +49,9 @@ void TsPlayerImp::onShutdown(const SockException &ex) {
} }
vector<Track::Ptr> TsPlayerImp::getTracks(bool ready) const { vector<Track::Ptr> TsPlayerImp::getTracks(bool ready) const {
if (!_demuxer) {
return vector<Track::Ptr>();
}
return static_pointer_cast<HlsDemuxer>(_demuxer)->getTracks(ready); return static_pointer_cast<HlsDemuxer>(_demuxer)->getTracks(ready);
} }