使用mINI方式设置http proxy url

This commit is contained in:
xiongziliang 2023-11-20 19:36:40 +08:00
parent 98f7c37cd5
commit c1f7908c9c
13 changed files with 17 additions and 24 deletions

View File

@ -199,8 +199,6 @@ public:
// 支持通过on_publish返回值替换stream_id // 支持通过on_publish返回值替换stream_id
std::string stream_replace; std::string stream_replace;
// http proxy url
std::string proxy_url;
template <typename MAP> template <typename MAP>
ProtocolOption(const MAP &allArgs) : ProtocolOption() { ProtocolOption(const MAP &allArgs) : ProtocolOption() {
@ -231,8 +229,6 @@ public:
GET_OPT_VALUE(hls_save_path); GET_OPT_VALUE(hls_save_path);
GET_OPT_VALUE(stream_replace); GET_OPT_VALUE(stream_replace);
GET_OPT_VALUE(proxy_url);
} }
private: private:

View File

@ -353,6 +353,7 @@ const string kBeatIntervalMS = "beat_interval_ms";
const string kBenchmarkMode = "benchmark_mode"; const string kBenchmarkMode = "benchmark_mode";
const string kWaitTrackReady = "wait_track_ready"; const string kWaitTrackReady = "wait_track_ready";
const string kPlayTrack = "play_track"; const string kPlayTrack = "play_track";
const string kProxyUrl = "proxy_url";
} // namespace Client } // namespace Client
} // namespace mediakit } // namespace mediakit

View File

@ -403,6 +403,8 @@ extern const std::string kWaitTrackReady;
// rtsp播放指定track可选项有0(不指定,默认)、1(视频)、2(音频) // rtsp播放指定track可选项有0(不指定,默认)、1(视频)、2(音频)
// 设置方法:player[Client::kPlayTrack] = 0/1/2; // 设置方法:player[Client::kPlayTrack] = 0/1/2;
extern const std::string kPlayTrack; extern const std::string kPlayTrack;
//设置代理url目前只支持http协议
extern const std::string kProxyUrl;
} // namespace Client } // namespace Client
} // namespace mediakit } // namespace mediakit

View File

@ -22,7 +22,7 @@ HlsPlayer::HlsPlayer(const EventPoller::Ptr &poller) {
void HlsPlayer::play(const string &url) { void HlsPlayer::play(const string &url) {
_play_result = false; _play_result = false;
_play_url = url; _play_url = url;
setProxyUrl(_option.proxy_url); setProxyUrl((*this)[Client::kProxyUrl]);
fetchIndexFile(); fetchIndexFile();
} }
@ -89,7 +89,7 @@ void HlsPlayer::fetchSegment() {
weak_ptr<HlsPlayer> weak_self = static_pointer_cast<HlsPlayer>(shared_from_this()); weak_ptr<HlsPlayer> weak_self = static_pointer_cast<HlsPlayer>(shared_from_this());
if (!_http_ts_player) { if (!_http_ts_player) {
_http_ts_player = std::make_shared<HttpTSPlayer>(getPoller()); _http_ts_player = std::make_shared<HttpTSPlayer>(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) { _http_ts_player->setOnCreateSocket([weak_self](const EventPoller::Ptr &poller) {
auto strong_self = weak_self.lock(); auto strong_self = weak_self.lock();
if (strong_self) { if (strong_self) {

View File

@ -420,8 +420,8 @@ bool HttpClient::isProxyConnected() const {
return _proxy_connected; return _proxy_connected;
} }
void HttpClient::setProxyUrl(const string &proxyUrl) { void HttpClient::setProxyUrl(string proxy_url) {
_proxy_url = proxyUrl; _proxy_url = std::move(proxy_url);
if (!_proxy_url.empty()) { if (!_proxy_url.empty()) {
parseProxyUrl(_proxy_url, _proxy_host, _proxy_port, _proxy_auth); parseProxyUrl(_proxy_url, _proxy_host, _proxy_port, _proxy_auth);
_used_proxy = true; _used_proxy = true;

View File

@ -141,7 +141,10 @@ public:
*/ */
void setCompleteTimeout(size_t timeout_ms); void setCompleteTimeout(size_t timeout_ms);
void setProxyUrl(const std::string &proxyUrl); /**
* htpp代理url
*/
void setProxyUrl(std::string proxy_url);
protected: protected:
/** /**

View File

@ -24,7 +24,7 @@ public:
protected: protected:
void onConnect(const toolkit::SockException &ex) override; 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 */ } /* namespace mediakit */

View File

@ -21,7 +21,7 @@ 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>(); _benchmark_mode = (*this)[Client::kBenchmarkMode].as<int>();
setProxyUrl(_option.proxy_url); setProxyUrl((*this)[Client::kProxyUrl]);
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");

View File

@ -16,9 +16,8 @@ using namespace toolkit;
namespace mediakit { namespace mediakit {
MediaPlayer::MediaPlayer(const EventPoller::Ptr &poller, const ProtocolOption &option) { MediaPlayer::MediaPlayer(const EventPoller::Ptr &poller) {
_poller = poller ? poller : EventPollerPool::Instance().getPoller(); _poller = poller ? poller : EventPollerPool::Instance().getPoller();
_option = option;
} }
static void setOnCreateSocket_l(const std::shared_ptr<PlayerBase> &delegate, const Socket::onCreateSocket &cb){ static void setOnCreateSocket_l(const std::shared_ptr<PlayerBase> &delegate, const Socket::onCreateSocket &cb){
@ -38,7 +37,6 @@ static void setOnCreateSocket_l(const std::shared_ptr<PlayerBase> &delegate, con
void MediaPlayer::play(const string &url) { void MediaPlayer::play(const string &url) {
_delegate = PlayerBase::createPlayer(_poller, url); _delegate = PlayerBase::createPlayer(_poller, url);
assert(_delegate); assert(_delegate);
_delegate->setOption(_option);
setOnCreateSocket_l(_delegate, _on_create_socket); setOnCreateSocket_l(_delegate, _on_create_socket);
_delegate->setOnShutdown(_on_shutdown); _delegate->setOnShutdown(_on_shutdown);
_delegate->setOnPlayResult(_on_play_result); _delegate->setOnPlayResult(_on_play_result);

View File

@ -21,7 +21,7 @@ class MediaPlayer : public PlayerImp<PlayerBase, PlayerBase> {
public: public:
using Ptr = std::shared_ptr<MediaPlayer>; using Ptr = std::shared_ptr<MediaPlayer>;
MediaPlayer(const toolkit::EventPoller::Ptr &poller = nullptr, const ProtocolOption &option=ProtocolOption()); MediaPlayer(const toolkit::EventPoller::Ptr &poller = nullptr);
~MediaPlayer() override = default; ~MediaPlayer() override = default;
void play(const std::string &url) override; void play(const std::string &url) override;
@ -29,7 +29,6 @@ public:
void setOnCreateSocket(toolkit::Socket::onCreateSocket cb); void setOnCreateSocket(toolkit::Socket::onCreateSocket cb);
private: private:
ProtocolOption _option;
toolkit::EventPoller::Ptr _poller; toolkit::EventPoller::Ptr _poller;
toolkit::Socket::onCreateSocket _on_create_socket; toolkit::Socket::onCreateSocket _on_create_socket;
}; };

View File

@ -115,16 +115,10 @@ public:
*/ */
virtual void setOnResume(const std::function<void()> &cb) = 0; virtual void setOnResume(const std::function<void()> &cb) = 0;
void setOption(const ProtocolOption &option){
_option = option;
}
protected: protected:
virtual void onResume() = 0; virtual void onResume() = 0;
virtual void onShutdown(const toolkit::SockException &ex) = 0; virtual void onShutdown(const toolkit::SockException &ex) = 0;
virtual void onPlayResult(const toolkit::SockException &ex) = 0; virtual void onPlayResult(const toolkit::SockException &ex) = 0;
protected:
ProtocolOption _option;
}; };
template<typename Parent, typename Delegate> template<typename Parent, typename Delegate>

View File

@ -27,7 +27,7 @@ namespace mediakit {
PlayerProxy::PlayerProxy( PlayerProxy::PlayerProxy(
const string &vhost, const string &app, const string &stream_id, const ProtocolOption &option, int retry_count, 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) const EventPoller::Ptr &poller, int reconnect_delay_min, int reconnect_delay_max, int reconnect_delay_step)
: MediaPlayer(poller, option) : MediaPlayer(poller)
, _option(option) { , _option(option) {
_tuple.vhost = vhost; _tuple.vhost = vhost;
_tuple.app = app; _tuple.app = app;

View File

@ -22,7 +22,7 @@ FlvPlayer::FlvPlayer(const EventPoller::Ptr &poller) {
void FlvPlayer::play(const string &url) { void FlvPlayer::play(const string &url) {
TraceL << "play http-flv: " << url; TraceL << "play http-flv: " << url;
_play_result = false; _play_result = false;
setProxyUrl(_option.proxy_url); setProxyUrl((*this)[Client::kProxyUrl]);
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");