diff --git a/src/Common/MediaSource.h b/src/Common/MediaSource.h index 51991c35..73306385 100644 --- a/src/Common/MediaSource.h +++ b/src/Common/MediaSource.h @@ -199,8 +199,6 @@ public: // 支持通过on_publish返回值替换stream_id std::string stream_replace; - // http proxy url - std::string proxy_url; template ProtocolOption(const MAP &allArgs) : ProtocolOption() { @@ -231,8 +229,6 @@ public: GET_OPT_VALUE(hls_save_path); GET_OPT_VALUE(stream_replace); - - GET_OPT_VALUE(proxy_url); } private: diff --git a/src/Common/config.cpp b/src/Common/config.cpp index 603c434c..1009f1e6 100644 --- a/src/Common/config.cpp +++ b/src/Common/config.cpp @@ -353,6 +353,7 @@ const string kBeatIntervalMS = "beat_interval_ms"; const string kBenchmarkMode = "benchmark_mode"; const string kWaitTrackReady = "wait_track_ready"; const string kPlayTrack = "play_track"; +const string kProxyUrl = "proxy_url"; } // namespace Client } // namespace mediakit diff --git a/src/Common/config.h b/src/Common/config.h index 25f36271..dcbc5514 100644 --- a/src/Common/config.h +++ b/src/Common/config.h @@ -403,6 +403,8 @@ extern const std::string kWaitTrackReady; // rtsp播放指定track,可选项有0(不指定,默认)、1(视频)、2(音频) // 设置方法:player[Client::kPlayTrack] = 0/1/2; extern const std::string kPlayTrack; +//设置代理url,目前只支持http协议 +extern const std::string kProxyUrl; } // namespace Client } // namespace mediakit diff --git a/src/Http/HlsPlayer.cpp b/src/Http/HlsPlayer.cpp index 7ae2a038..3e27a012 100644 --- a/src/Http/HlsPlayer.cpp +++ b/src/Http/HlsPlayer.cpp @@ -22,7 +22,7 @@ HlsPlayer::HlsPlayer(const EventPoller::Ptr &poller) { void HlsPlayer::play(const string &url) { _play_result = false; _play_url = url; - setProxyUrl(_option.proxy_url); + setProxyUrl((*this)[Client::kProxyUrl]); fetchIndexFile(); } @@ -89,7 +89,7 @@ void HlsPlayer::fetchSegment() { weak_ptr weak_self = static_pointer_cast(shared_from_this()); if (!_http_ts_player) { _http_ts_player = std::make_shared(getPoller()); - _http_ts_player->setProxyUrl(_option.proxy_url); + _http_ts_player->setProxyUrl((*this)[Client::kProxyUrl]); _http_ts_player->setOnCreateSocket([weak_self](const EventPoller::Ptr &poller) { auto strong_self = weak_self.lock(); if (strong_self) { diff --git a/src/Http/HttpClient.cpp b/src/Http/HttpClient.cpp index 94466b99..793e9ca1 100644 --- a/src/Http/HttpClient.cpp +++ b/src/Http/HttpClient.cpp @@ -420,8 +420,8 @@ bool HttpClient::isProxyConnected() const { return _proxy_connected; } -void HttpClient::setProxyUrl(const string &proxyUrl) { - _proxy_url = proxyUrl; +void HttpClient::setProxyUrl(string proxy_url) { + _proxy_url = std::move(proxy_url); if (!_proxy_url.empty()) { parseProxyUrl(_proxy_url, _proxy_host, _proxy_port, _proxy_auth); _used_proxy = true; diff --git a/src/Http/HttpClient.h b/src/Http/HttpClient.h index 88bb1dd2..55a1f1e2 100644 --- a/src/Http/HttpClient.h +++ b/src/Http/HttpClient.h @@ -141,7 +141,10 @@ public: */ void setCompleteTimeout(size_t timeout_ms); - void setProxyUrl(const std::string &proxyUrl); + /** + * 设置htpp代理url + */ + void setProxyUrl(std::string proxy_url); protected: /** diff --git a/src/Http/HttpClientImp.h b/src/Http/HttpClientImp.h index 8c1da91b..2d32f065 100644 --- a/src/Http/HttpClientImp.h +++ b/src/Http/HttpClientImp.h @@ -24,7 +24,7 @@ public: protected: void onConnect(const toolkit::SockException &ex) override; - virtual ssize_t onRecvHeader(const char *data, size_t len) override; + ssize_t onRecvHeader(const char *data, size_t len) override; }; } /* namespace mediakit */ diff --git a/src/Http/TsPlayer.cpp b/src/Http/TsPlayer.cpp index ca023e64..66a7a687 100644 --- a/src/Http/TsPlayer.cpp +++ b/src/Http/TsPlayer.cpp @@ -21,7 +21,7 @@ void TsPlayer::play(const string &url) { TraceL << "play http-ts: " << url; _play_result = false; _benchmark_mode = (*this)[Client::kBenchmarkMode].as(); - setProxyUrl(_option.proxy_url); + setProxyUrl((*this)[Client::kProxyUrl]); setHeaderTimeout((*this)[Client::kTimeoutMS].as()); setBodyTimeout((*this)[Client::kMediaTimeoutMS].as()); setMethod("GET"); diff --git a/src/Player/MediaPlayer.cpp b/src/Player/MediaPlayer.cpp index 889a5097..1eb5f449 100644 --- a/src/Player/MediaPlayer.cpp +++ b/src/Player/MediaPlayer.cpp @@ -16,9 +16,8 @@ using namespace toolkit; namespace mediakit { -MediaPlayer::MediaPlayer(const EventPoller::Ptr &poller, const ProtocolOption &option) { +MediaPlayer::MediaPlayer(const EventPoller::Ptr &poller) { _poller = poller ? poller : EventPollerPool::Instance().getPoller(); - _option = option; } static void setOnCreateSocket_l(const std::shared_ptr &delegate, const Socket::onCreateSocket &cb){ @@ -38,7 +37,6 @@ static void setOnCreateSocket_l(const std::shared_ptr &delegate, con void MediaPlayer::play(const string &url) { _delegate = PlayerBase::createPlayer(_poller, url); assert(_delegate); - _delegate->setOption(_option); setOnCreateSocket_l(_delegate, _on_create_socket); _delegate->setOnShutdown(_on_shutdown); _delegate->setOnPlayResult(_on_play_result); diff --git a/src/Player/MediaPlayer.h b/src/Player/MediaPlayer.h index 7978e594..a425f956 100644 --- a/src/Player/MediaPlayer.h +++ b/src/Player/MediaPlayer.h @@ -21,7 +21,7 @@ class MediaPlayer : public PlayerImp { public: using Ptr = std::shared_ptr; - MediaPlayer(const toolkit::EventPoller::Ptr &poller = nullptr, const ProtocolOption &option=ProtocolOption()); + MediaPlayer(const toolkit::EventPoller::Ptr &poller = nullptr); ~MediaPlayer() override = default; void play(const std::string &url) override; @@ -29,7 +29,6 @@ public: void setOnCreateSocket(toolkit::Socket::onCreateSocket cb); private: - ProtocolOption _option; toolkit::EventPoller::Ptr _poller; toolkit::Socket::onCreateSocket _on_create_socket; }; diff --git a/src/Player/PlayerBase.h b/src/Player/PlayerBase.h index 72d3cadf..73c9d3ee 100644 --- a/src/Player/PlayerBase.h +++ b/src/Player/PlayerBase.h @@ -115,16 +115,10 @@ public: */ virtual void setOnResume(const std::function &cb) = 0; - void setOption(const ProtocolOption &option){ - _option = option; - } - protected: virtual void onResume() = 0; virtual void onShutdown(const toolkit::SockException &ex) = 0; virtual void onPlayResult(const toolkit::SockException &ex) = 0; -protected: - ProtocolOption _option; }; template diff --git a/src/Player/PlayerProxy.cpp b/src/Player/PlayerProxy.cpp index a2dd095b..73e46b71 100644 --- a/src/Player/PlayerProxy.cpp +++ b/src/Player/PlayerProxy.cpp @@ -27,7 +27,7 @@ namespace mediakit { PlayerProxy::PlayerProxy( const string &vhost, const string &app, const string &stream_id, const ProtocolOption &option, int retry_count, const EventPoller::Ptr &poller, int reconnect_delay_min, int reconnect_delay_max, int reconnect_delay_step) - : MediaPlayer(poller, option) + : MediaPlayer(poller) , _option(option) { _tuple.vhost = vhost; _tuple.app = app; diff --git a/src/Rtmp/FlvPlayer.cpp b/src/Rtmp/FlvPlayer.cpp index df8b28af..3724a219 100644 --- a/src/Rtmp/FlvPlayer.cpp +++ b/src/Rtmp/FlvPlayer.cpp @@ -22,7 +22,7 @@ FlvPlayer::FlvPlayer(const EventPoller::Ptr &poller) { void FlvPlayer::play(const string &url) { TraceL << "play http-flv: " << url; _play_result = false; - setProxyUrl(_option.proxy_url); + setProxyUrl((*this)[Client::kProxyUrl]); setHeaderTimeout((*this)[Client::kTimeoutMS].as()); setBodyTimeout((*this)[Client::kMediaTimeoutMS].as()); setMethod("GET");