使用mINI方式设置http proxy url
This commit is contained in:
parent
98f7c37cd5
commit
c1f7908c9c
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -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 */
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue