Commit 83387737 by ziyue

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

parent 91c0a563
...@@ -76,15 +76,17 @@ void HlsPlayer::fetchSegment() { ...@@ -76,15 +76,17 @@ void HlsPlayer::fetchSegment() {
} }
return Socket::createSocket(poller, true); return Socket::createSocket(poller, true);
}); });
auto benchmark_mode = (*this)[Client::kBenchmarkMode].as<int>();
_http_ts_player->setOnPacket([weak_self](const char *data, size_t len) { if (!benchmark_mode) {
auto strong_self = weak_self.lock(); _http_ts_player->setOnPacket([weak_self](const char *data, size_t len) {
if (!strong_self) { auto strong_self = weak_self.lock();
return; if (!strong_self) {
} return;
//收到ts包 }
strong_self->onPacket_l(data, len); //收到ts包
}); 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() { ...@@ -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) { ...@@ -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);
} }
......
...@@ -20,6 +20,7 @@ TsPlayer::TsPlayer(const EventPoller::Ptr &poller) : HttpTSPlayer(poller, true) ...@@ -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) { ...@@ -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"));
} }
HttpTSPlayer::onResponseBody(buf, size); if (!_benchmark_mode) {
HttpTSPlayer::onResponseBody(buf, size);
}
} }
} // namespace mediakit } // namespace mediakit
\ No newline at end of file
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace mediakit { namespace mediakit {
class TsPlayer : public HttpTSPlayer , public PlayerBase { class TsPlayer : public HttpTSPlayer, public PlayerBase {
public: public:
TsPlayer(const toolkit::EventPoller::Ptr &poller); TsPlayer(const toolkit::EventPoller::Ptr &poller);
~TsPlayer() override = default; ~TsPlayer() override = default;
...@@ -37,6 +37,7 @@ protected: ...@@ -37,6 +37,7 @@ protected:
private: private:
bool _play_result = true; bool _play_result = true;
bool _benchmark_mode = false;
}; };
} // namespace mediakit } // namespace mediakit
......
...@@ -33,7 +33,8 @@ void TsPlayerImp::addTrackCompleted() { ...@@ -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>();
...@@ -47,7 +48,10 @@ void TsPlayerImp::onShutdown(const SockException &ex) { ...@@ -47,7 +48,10 @@ void TsPlayerImp::onShutdown(const SockException &ex) {
_demuxer = nullptr; _demuxer = nullptr;
} }
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);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论