diff --git a/conf/config.ini b/conf/config.ini index c2d4613f..2c36c22b 100644 --- a/conf/config.ini +++ b/conf/config.ini @@ -171,6 +171,8 @@ origin_url= #溯源总超时时长,单位秒,float型;假如源站有3个,那么单次溯源超时时间为timeout_sec除以3 #单次溯源超时时间不要超过general.maxStreamWaitMS配置 timeout_sec=15 +#溯源失败尝试次数,-1时永久尝试 +retry_count=3 [http] #http服务器字符编码,windows上默认gb2312 diff --git a/server/WebHook.cpp b/server/WebHook.cpp index 86e7c592..7aecf38f 100755 --- a/server/WebHook.cpp +++ b/server/WebHook.cpp @@ -75,10 +75,12 @@ namespace Cluster { #define CLUSTER_FIELD "cluster." const string kOriginUrl = CLUSTER_FIELD "origin_url"; const string kTimeoutSec = CLUSTER_FIELD "timeout_sec"; +const string kRetryCount = CLUSTER_FIELD "retry_count"; static onceToken token([]() { mINI::Instance()[kOriginUrl] = ""; mINI::Instance()[kTimeoutSec] = 15; + mINI::Instance()[kTimeoutSec] = 3; }); }//namespace Cluster @@ -240,6 +242,8 @@ static void pullStreamFromOrigin(const vector& urls, size_t index, size_ const function &closePlayer) { GET_CONFIG(float, cluster_timeout_sec, Cluster::kTimeoutSec); + GET_CONFIG(int, retry_count, Cluster::kRetryCount); + auto url = getPullUrl(urls[index % urls.size()], args); auto timeout_sec = cluster_timeout_sec / urls.size(); InfoL << "pull stream from origin, failed_cnt: " << failed_cnt << ", timeout_sec: " << timeout_sec << ", url: " << url; @@ -248,7 +252,7 @@ static void pullStreamFromOrigin(const vector& urls, size_t index, size_ option.enable_hls = option.enable_hls || (args._schema == HLS_SCHEMA); option.enable_mp4 = false; - addStreamProxy(args._vhost, args._app, args._streamid, url, -1, option, Rtsp::RTP_TCP, timeout_sec, + addStreamProxy(args._vhost, args._app, args._streamid, url, retry_count, option, Rtsp::RTP_TCP, timeout_sec, [=](const SockException &ex, const string &key) mutable { if (!ex) { return;