From 90afd06c85fb76e81f6a9d9931649fffde1713b0 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 25 Feb 2020 13:22:44 +0800 Subject: [PATCH] For #1615, support default app(live) for vmix SRT. 4.0.9 --- README.md | 2 ++ trunk/conf/full.conf | 3 +++ trunk/src/app/srs_app_config.cpp | 17 ++++++++++++++++- trunk/src/app/srs_app_config.hpp | 2 ++ trunk/src/core/srs_core_version4.hpp | 2 +- trunk/src/srt/srt_conn.cpp | 4 +++- 6 files changed, 27 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 56658c3dcf..bec6c8de60 100755 --- a/README.md +++ b/README.md @@ -153,6 +153,7 @@ For previous versions, please read: ## V4 changes +* v4.0, 2020-02-25, For [#1615][bug #1615], support default app(live) for vmix SRT. 4.0.9 * v4.0, 2020-02-21, For [#1598][bug #1598], support SLB health checking by TCP. 4.0.8 * v4.0, 2020-02-19, For [#1579][bug #1579], support rolling update of k8s. 4.0.7 * v4.0, 2020-02-18, For [#1579][bug #1579], support start/final wait for gracefully quit. 4.0.6 @@ -1685,6 +1686,7 @@ Winlin [bug #1601]: https://github.com/ossrs/srs/issues/1601 [bug #1579]: https://github.com/ossrs/srs/issues/1579 [bug #1598]: https://github.com/ossrs/srs/issues/1598 +[bug #1615]: https://github.com/ossrs/srs/issues/1615 [bug #xxxxxxxxxxxxx]: https://github.com/ossrs/srs/issues/xxxxxxxxxxxxx [exo #828]: https://github.com/google/ExoPlayer/pull/828 diff --git a/trunk/conf/full.conf b/trunk/conf/full.conf index 3352538b6a..928925e00a 100644 --- a/trunk/conf/full.conf +++ b/trunk/conf/full.conf @@ -290,6 +290,9 @@ srt_server { connect_timeout 4000; peerlatency 300; recvlatency 300; + # Default app for vmix, see https://github.com/ossrs/srs/pull/1615 + # default: live + default_app live; } ############################################################################################# diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 89f3da8b55..0eaabb4c9b 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -3529,7 +3529,8 @@ srs_error_t SrsConfig::check_normal_config() if (n != "enabled" && n != "listen" && n != "maxbw" && n != "mss" && n != "latency" && n != "recvlatency" && n != "peerlatency" && n != "tlpkdrop" && n != "connect_timeout" - && n != "sendbuf" && n != "recvbuf" && n != "payloadsize") { + && n != "sendbuf" && n != "recvbuf" && n != "payloadsize" + && n != "default_app") { return srs_error_new(ERROR_SYSTEM_CONFIG_INVALID, "illegal srt_stream.%s", n.c_str()); } } @@ -6893,6 +6894,20 @@ int SrsConfig::get_srto_payloadsize() { return atoi(conf->arg0().c_str()); } +string SrsConfig::get_default_app_name() { + static string DEFAULT = "live"; + SrsConfDirective* conf = root->get("srt_server"); + if (!conf) { + return DEFAULT; + } + + conf = conf->get("default_app"); + if (!conf || conf->arg0().empty()) { + return DEFAULT; + } + return conf->arg0(); +} + bool SrsConfig::get_http_stream_enabled() { SrsConfDirective* conf = root->get("http_server"); diff --git a/trunk/src/app/srs_app_config.hpp b/trunk/src/app/srs_app_config.hpp index 17bcd49639..dde708f8e1 100644 --- a/trunk/src/app/srs_app_config.hpp +++ b/trunk/src/app/srs_app_config.hpp @@ -623,6 +623,8 @@ class SrsConfig virtual int get_srto_recvbuf(); // SRTO_PAYLOADSIZE virtual int get_srto_payloadsize(); + // Get the default app. + virtual std::string get_default_app_name(); // http_hooks section private: diff --git a/trunk/src/core/srs_core_version4.hpp b/trunk/src/core/srs_core_version4.hpp index f5d2ad53cb..da3e2b8043 100644 --- a/trunk/src/core/srs_core_version4.hpp +++ b/trunk/src/core/srs_core_version4.hpp @@ -24,6 +24,6 @@ #ifndef SRS_CORE_VERSION4_HPP #define SRS_CORE_VERSION4_HPP -#define SRS_VERSION4_REVISION 8 +#define SRS_VERSION4_REVISION 9 #endif diff --git a/trunk/src/srt/srt_conn.cpp b/trunk/src/srt/srt_conn.cpp index 4ea90bda15..e2f18af276 100644 --- a/trunk/src/srt/srt_conn.cpp +++ b/trunk/src/srt/srt_conn.cpp @@ -3,6 +3,8 @@ #include "stringex.hpp" #include +#include + bool is_streamid_valid(const std::string& streamid) { if (streamid.empty()) { return false; @@ -71,7 +73,7 @@ bool get_streamid_info(const std::string& streamid, int& mode, std::string& url_ if (pos != 0) { pos = streamid.find("/"); if (pos == streamid.npos) { - url_subpath = "live/" + streamid; + url_subpath = _srs_config->get_default_app_name() + "/" + streamid; return true; } url_subpath = streamid;