add conf directive forward_append_stream_name,to support add ?vhost=xxxx to stre…
…am name when forward to cdn
正在显示
5 个修改的文件
包含
33 行增加
和
3 行删除
| 1 | -# the config for srs to forward | 1 | +# the cwrd_stream_name_appendnfig for srs to forward |
| 2 | # @see https://github.com/ossrs/srs/wiki/v1_CN_SampleForward | 2 | # @see https://github.com/ossrs/srs/wiki/v1_CN_SampleForward |
| 3 | # @see full.conf for detail config. | 3 | # @see full.conf for detail config. |
| 4 | 4 | ||
| @@ -16,4 +16,6 @@ vhost __defaultVhost__ { | @@ -16,4 +16,6 @@ vhost __defaultVhost__ { | ||
| 16 | #if the forward server is same as this server , a origin,try use forward_peer, | 16 | #if the forward server is same as this server , a origin,try use forward_peer, |
| 17 | #the stream pushed from other forward peer will not forward any more in this server | 17 | #the stream pushed from other forward peer will not forward any more in this server |
| 18 | forward_peer 127.0.0.1:1936; | 18 | forward_peer 127.0.0.1:1936; |
| 19 | +#append the string after start with ? to the stream name when forward to the server | ||
| 20 | + forward_append_stream_name 127.0.0.1:19350?vhost=newrtmp.xuedianyun.com | ||
| 19 | } | 21 | } |
| @@ -1832,7 +1832,8 @@ int SrsConfig::check_config() | @@ -1832,7 +1832,8 @@ int SrsConfig::check_config() | ||
| 1832 | && n != "dvr" && n != "ingest" && n != "hls" && n != "http_hooks" | 1832 | && n != "dvr" && n != "ingest" && n != "hls" && n != "http_hooks" |
| 1833 | && n != "gop_cache" && n != "queue_length" | 1833 | && n != "gop_cache" && n != "queue_length" |
| 1834 | && n != "refer" && n != "refer_publish" && n != "refer_play" | 1834 | && n != "refer" && n != "refer_publish" && n != "refer_play" |
| 1835 | - && n != "forward" && n != "forward_server_other" && n != "forward_in_turn" && n != "forward_peer" && n != "transcode" && n != "bandcheck" | 1835 | + && n != "forward" && n != "transcode" && n != "bandcheck" |
| 1836 | + && n != "forward_server_other" && n != "forward_in_turn" && n != "forward_peer" && n != "forward_append_stream_name" | ||
| 1836 | && n != "time_jitter" && n != "mix_correct" | 1837 | && n != "time_jitter" && n != "mix_correct" |
| 1837 | && n != "atc" && n != "atc_auto" | 1838 | && n != "atc" && n != "atc_auto" |
| 1838 | && n != "debug_srs_upnode" | 1839 | && n != "debug_srs_upnode" |
| @@ -2816,6 +2817,17 @@ SrsConfDirective* SrsConfig::get_forward_in_turn(string vhost) | @@ -2816,6 +2817,17 @@ SrsConfDirective* SrsConfig::get_forward_in_turn(string vhost) | ||
| 2816 | return conf->get("forward_in_turn"); | 2817 | return conf->get("forward_in_turn"); |
| 2817 | } | 2818 | } |
| 2818 | 2819 | ||
| 2820 | +SrsConfDirective* SrsConfig::get_forward_append_stream_name(string vhost) | ||
| 2821 | +{ | ||
| 2822 | + SrsConfDirective* conf = get_vhost(vhost); | ||
| 2823 | + | ||
| 2824 | + if (!conf) { | ||
| 2825 | + return NULL; | ||
| 2826 | + } | ||
| 2827 | + | ||
| 2828 | + return conf->get("forward_append_stream_name"); | ||
| 2829 | +} | ||
| 2830 | + | ||
| 2819 | SrsConfDirective* SrsConfig::get_forward_peer(string vhost) | 2831 | SrsConfDirective* SrsConfig::get_forward_peer(string vhost) |
| 2820 | { | 2832 | { |
| 2821 | SrsConfDirective* conf = get_vhost(vhost); | 2833 | SrsConfDirective* conf = get_vhost(vhost); |
| @@ -581,6 +581,10 @@ public: | @@ -581,6 +581,10 @@ public: | ||
| 581 | * get the forward_peer directive of vhost. | 581 | * get the forward_peer directive of vhost. |
| 582 | */ | 582 | */ |
| 583 | virtual SrsConfDirective* get_forward_peer(std::string vhost); | 583 | virtual SrsConfDirective* get_forward_peer(std::string vhost); |
| 584 | + /** | ||
| 585 | + * get the forward_append_stream_name directive of vhost. | ||
| 586 | + */ | ||
| 587 | + virtual SrsConfDirective* get_forward_append_stream_name(std::string vhost); | ||
| 584 | // http_hooks section | 588 | // http_hooks section |
| 585 | private: | 589 | private: |
| 586 | /** | 590 | /** |
| @@ -138,6 +138,16 @@ int SrsForwarder::initialize(SrsRequest* req, string ep_forward) | @@ -138,6 +138,16 @@ int SrsForwarder::initialize(SrsRequest* req, string ep_forward) | ||
| 138 | } | 138 | } |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | + size_t ep_len = ep_forward.length(); | ||
| 142 | + conf = _srs_config->get_forward_append_stream_name(_req->vhost); | ||
| 143 | + for (int i = 0; conf && i < (int)conf->args.size(); i++) { | ||
| 144 | + std::string forward_append_stream_name = conf->args.at(i); | ||
| 145 | + if(forward_append_stream_name.length() > ep_len && forward_append_stream_name.at(ep_len)=='?' && !strncmp(ep_forward.c_str(),forward_append_stream_name.c_str(),ep_len)){ | ||
| 146 | + _steam_name_appender = forward_append_stream_name.substr(ep_len, forward_append_stream_name.length()); | ||
| 147 | + break; | ||
| 148 | + } | ||
| 149 | + } | ||
| 150 | + | ||
| 141 | return ret; | 151 | return ret; |
| 142 | } | 152 | } |
| 143 | 153 | ||
| @@ -300,7 +310,7 @@ int SrsForwarder::cycle() | @@ -300,7 +310,7 @@ int SrsForwarder::cycle() | ||
| 300 | return ret; | 310 | return ret; |
| 301 | } | 311 | } |
| 302 | 312 | ||
| 303 | - if ((ret = client->publish(_req->stream, stream_id)) != ERROR_SUCCESS) { | 313 | + if ((ret = client->publish(_req->stream + _steam_name_appender, stream_id)) != ERROR_SUCCESS) { |
| 304 | srs_error("connect with server failed, stream_name=%s, stream_id=%d. ret=%d", | 314 | srs_error("connect with server failed, stream_name=%s, stream_id=%d. ret=%d", |
| 305 | _req->stream.c_str(), stream_id, ret); | 315 | _req->stream.c_str(), stream_id, ret); |
| 306 | return ret; | 316 | return ret; |
| @@ -55,6 +55,8 @@ private: | @@ -55,6 +55,8 @@ private: | ||
| 55 | std::string _ep_forward; | 55 | std::string _ep_forward; |
| 56 | SrsRequest* _req; | 56 | SrsRequest* _req; |
| 57 | int stream_id; | 57 | int stream_id; |
| 58 | + // the string append to stream name ,such as "?vhost=newrtmp.xuedianyun.com" for rtmp://video-center.alivecdn.com/live/test?vhost=newrtmp.xuedianyun.com | ||
| 59 | + std::string _steam_name_appender; | ||
| 58 | private: | 60 | private: |
| 59 | st_netfd_t stfd; | 61 | st_netfd_t stfd; |
| 60 | SrsReusableThread2* pthread; | 62 | SrsReusableThread2* pthread; |
-
请 注册 或 登录 后发表评论