From bbe333d3ca719d7cbe5bbccd2ad6cc08427bed38 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 9 Dec 2022 08:01:12 +0800 Subject: [PATCH 1/2] SRT: Support SRT to RTMP to WebRTC. v5.0.107 (#3296) * SRT: Support SRT to RTMP to WebRTC. v5.0.107 Co-authored-by: winlin --- trunk/doc/CHANGELOG.md | 1 + trunk/src/app/srs_app_srt_conn.cpp | 34 ++++++++++++++++++++++++++++ trunk/src/core/srs_core_version5.hpp | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md index cd363edd1..c457b9d4b 100644 --- a/trunk/doc/CHANGELOG.md +++ b/trunk/doc/CHANGELOG.md @@ -8,6 +8,7 @@ The changelog for SRS. ## SRS 5.0 Changelog +* v5.0, 2022-12-09, Merge [#3296](https://github.com/ossrs/srs/pull/3296): SRT: Support SRT to RTMP to WebRTC. v5.0.107 * v5.0, 2022-12-08, Merge [#3295](https://github.com/ossrs/srs/pull/3295): API: Parse fragment of URI. v5.0.106 * v5.0, 2022-12-04, Cygwin: Enable gb28181 for Windows. v5.0.105 * v5.0, 2022-12-04, Asan: Set asan loging callback. v5.0.104 diff --git a/trunk/src/app/srs_app_srt_conn.cpp b/trunk/src/app/srs_app_srt_conn.cpp index a67ad9258..2d1817330 100644 --- a/trunk/src/app/srs_app_srt_conn.cpp +++ b/trunk/src/app/srs_app_srt_conn.cpp @@ -19,6 +19,7 @@ using namespace std; #include #include #include +#include #include #include #include @@ -374,6 +375,39 @@ srs_error_t SrsMpegtsSrtConn::acquire_publish() live_source->set_cache(enabled_cache); live_source->set_gop_cache_max_frames(gcmf); + // srt->rtmp->rtc + // TODO: FIXME: the code below is repeat in srs_app_rtmp_conn.cpp, refactor it later, use function instead. + + // Check whether RTC stream is busy. +#ifdef SRS_RTC + SrsRtcSource *rtc = NULL; + bool rtc_server_enabled = _srs_config->get_rtc_server_enabled(); + bool rtc_enabled = _srs_config->get_rtc_enabled(req_->vhost); + bool edge = _srs_config->get_vhost_is_edge(req_->vhost); + if (rtc_server_enabled && rtc_enabled && ! edge) { + if ((err = _srs_rtc_sources->fetch_or_create(req_, &rtc)) != srs_success) { + return srs_error_wrap(err, "create source"); + } + + if (!rtc->can_publish()) { + return srs_error_new(ERROR_SYSTEM_STREAM_BUSY, "rtc stream %s busy", req_->get_stream_url().c_str()); + } + } +#endif + + // Bridge to RTC streaming. +#if defined(SRS_RTC) && defined(SRS_FFMPEG_FIT) + if (rtc) { + SrsRtcFromRtmpBridge *bridge = new SrsRtcFromRtmpBridge(rtc); + if ((err = bridge->initialize(req_)) != srs_success) { + srs_freep(bridge); + return srs_error_wrap(err, "bridge init"); + } + + live_source->set_bridge(bridge); + } +#endif + SrsRtmpFromSrtBridge *bridger = new SrsRtmpFromSrtBridge(live_source); if ((err = bridger->initialize(req_)) != srs_success) { srs_freep(bridger); diff --git a/trunk/src/core/srs_core_version5.hpp b/trunk/src/core/srs_core_version5.hpp index 00a875889..248311493 100644 --- a/trunk/src/core/srs_core_version5.hpp +++ b/trunk/src/core/srs_core_version5.hpp @@ -9,6 +9,6 @@ #define VERSION_MAJOR 5 #define VERSION_MINOR 0 -#define VERSION_REVISION 106 +#define VERSION_REVISION 107 #endif From 56be854f362177629227e14fde7575228d0ecca0 Mon Sep 17 00:00:00 2001 From: winlin Date: Fri, 9 Dec 2022 08:04:58 +0800 Subject: [PATCH 2/2] Update README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f7f364a7b..d7551009e 100755 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ [![](https://img.shields.io/docker/pulls/ossrs/srs)](https://hub.docker.com/r/ossrs/srs/tags) [![](https://ossrs.net/wiki/images/do-btn-srs-125x20.svg)](https://cloud.digitalocean.com/droplets/new?appId=104916642&size=s-1vcpu-1gb®ion=sgp1&image=ossrs-srs&type=applications) -SRS/5.0(Bee) is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181. +SRS/5.0(Bee) is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. [![SRS Overview](https://ossrs.net/wiki/images/SRS-SingleNode-4.0-sd.png?v=114)](https://ossrs.net/wiki/images/SRS-SingleNode-4.0-hd.png)