diff --git a/README.md b/README.md
index 99c4b89f8..ecca38f81 100755
--- a/README.md
+++ b/README.md
@@ -7,6 +7,7 @@
[![](https://codecov.io/gh/ossrs/srs/branch/develop/graph/badge.svg?token=Zx2LhdtA39)](https://app.codecov.io/gh/ossrs/srs/tree/develop)
[![](https://ossrs.net/wiki/images/wechat-badge4.svg)](https://ossrs.net/lts/zh-cn/contact#discussion)
[![](https://img.shields.io/twitter/follow/srs_server?style=social)](https://twitter.com/srs_server)
+[![](https://img.shields.io/badge/SRS-YouTube-red)](https://www.youtube.com/@srs_server)
[![](https://badgen.net/discord/members/yZ4BnPmHAd)](https://discord.gg/yZ4BnPmHAd)
[![](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fossrs%2Fsrs.svg?type=small)](https://app.fossa.com/projects/git%2Bgithub.com%2Fossrs%2Fsrs?ref=badge_small)
[![](https://ossrs.net/wiki/images/srs-faq.svg)](https://ossrs.net/lts/zh-cn/faq)
@@ -17,104 +18,113 @@
[![](https://api.securityscorecards.dev/projects/github.com/ossrs/srs/badge)](https://api.securityscorecards.dev/projects/github.com/ossrs/srs)
[![](https://bestpractices.coreinfrastructure.org/projects/5619/badge)](https://bestpractices.coreinfrastructure.org/projects/5619)
-SRS/6.0 ([Hang](https://ossrs.net/lts/zh-cn/product#release60)) is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/MPEG-DASH/GB28181, Linux/Windows/macOS, X86_64/ARMv7/AARCH64/M1/RISCV/LOONGARCH/MIPS, and essential [features](trunk/doc/Features.md#features).
+SRS/6.0 ([Hang](https://ossrs.net/lts/zh-cn/product#release60)) is a simple, high-efficiency, and real-time video server,
+supporting RTMP/WebRTC/HLS/HTTP-FLV/SRT/MPEG-DASH/GB28181, Linux/Windows/macOS, X86_64/ARMv7/AARCH64/M1/RISCV/LOONGARCH/MIPS,
+and essential [features](trunk/doc/Features.md#features).
[![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)
-> Note: The single node architecture for SRS, for detail please see [here](https://www.figma.com/file/333POxVznQ8Wz1Rxlppn36/SRS-4.0-Server-Arch).
+> Note: For more details on the single-node architecture for SRS, please visit the following [link](https://www.figma.com/file/333POxVznQ8Wz1Rxlppn36/SRS-4.0-Server-Arch).
-SRS is licenced under [MIT](https://github.com/ossrs/srs/blob/develop/LICENSE) or [MulanPSL-2.0](https://spdx.org/licenses/MulanPSL-2.0.html),
-and note that [MulanPSL-2.0 is compatible with Apache-2.0](https://www.apache.org/legal/resolved.html#category-a),
-but some third-party libraries are distributed using their [own licenses](https://ossrs.io/lts/en-us/license).
+SRS is licenced under [MIT](https://github.com/ossrs/srs/blob/develop/LICENSE) or [MulanPSL-2.0](https://spdx.org/licenses/MulanPSL-2.0.html).
+Please note that while [MulanPSL-2.0 is compatible with Apache-2.0](https://www.apache.org/legal/resolved.html#category-a),
+some third-party libraries are distributed under their [licenses](https://ossrs.io/lts/en-us/license).
## Usage
-Please read guide [Getting Started](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started) or [中文文档:起步](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started).
+Please refer to the [Getting Started](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started) or [中文文档:起步](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started) guide.
-To build SRS from source:
+To compile SRS from source:
```
git clone -b develop https://gitee.com/ossrs/srs.git &&
cd srs/trunk && ./configure && make && ./objs/srs -c conf/srs.conf
```
-Open [http://localhost:8080/](http://localhost:8080/) to check it, then publish
-by [FFmpeg](https://ffmpeg.org/download.html) or [OBS](https://obsproject.com/download) as:
+Open [http://localhost:8080/](http://localhost:8080/) to verify, and then stream using the following
+[FFmpeg](https://ffmpeg.org/download.html) command:
```bash
ffmpeg -re -i ./doc/source.flv -c copy -f flv -y rtmp://localhost/live/livestream
```
-Play the following streams by [players](https://ossrs.net):
+Alternatively, stream by [OBS](https://obsproject.com/download) using the following configuration:
-* RTMP (by [VLC](https://www.videolan.org/)): rtmp://localhost/live/livestream
-* H5(HTTP-FLV): [http://localhost:8080/live/livestream.flv](http://localhost:8080/players/srs_player.html?autostart=true&stream=livestream.flv&port=8080&schema=http)
-* H5(HLS): [http://localhost:8080/live/livestream.m3u8](http://localhost:8080/players/srs_player.html?autostart=true&stream=livestream.m3u8&port=8080&schema=http)
+* Service: `Custom`
+* Server: `rtmp://localhost/live`
+* Stream Key: `livestream`
-Note that if convert RTMP to WebRTC, please use [`rtmp2rtc.conf`](https://github.com/ossrs/srs/issues/2728#issuecomment-964686152):
+Play the following streams using media players:
-* H5(WebRTC): [webrtc://localhost/live/livestream](http://localhost:8080/players/rtc_player.html?autostart=true)
+* To play an RTMP stream with URL `rtmp://localhost/live/livestream` on [VLC player](https://www.videolan.org/), open the player, go to Media > Open Network Stream, enter the URL and click Play.
+* You can play HTTP-FLV stream URL [http://localhost:8080/live/livestream.flv](http://localhost:8080/players/srs_player.html?autostart=true&stream=livestream.flv) on a webpage using the srs-player, an HTML5-based player.
+* Use srs-player for playing HLS stream with URL [http://localhost:8080/live/livestream.m3u8](http://localhost:8080/players/srs_player.html?autostart=true&stream=livestream.m3u8).
-> Note: Besides of FFmpeg or OBS, it's also able to [publish by H5](http://localhost:8080/players/rtc_publisher.html?autostart=true)
-> if **WebRTC([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/webrtc#rtc-to-rtmp))** is enabled,
-> please remember to set the **CANDIDATE([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate) or [EN](https://ossrs.io/lts/en-us/docs/v4/doc/webrtc#config-candidate))** for WebRTC.
+Please note that to convert RTMP to WebRTC, you should use the file [rtmp2rtc.conf](https://github.com/ossrs/srs/issues/2728#issuecomment-964686152).
-> Highly recommend that directly run SRS by
-> **docker([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started))**,
-> **Cloud Virtual Machine([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started-cloud) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started-cloud))**,
-> or **K8s([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started-k8s) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started-k8s))**,
-> however it's also easy to build SRS from source code, for detail please see
-> **Getting Started([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started))**.
+* Use the srs-player to play the WebRTC stream with URL [http://localhost:1985/rtc/v1/whip-play/?app=live&stream=livestream](http://localhost:8080/players/whep.html?autostart=true) via WHEP.
-> Note: If need HTTPS, by which WebRTC and modern browsers require, please read
-> **HTTPS API([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/http-api#https-api) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/http-api#https-api))**
-> and **HTTPS Callback([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/http-callback#https-callback) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/http-callback#https-callback))**
-> and **HTTPS Live Streaming([CN](https://ossrs.io/lts/en-us/docs/v4/doc/delivery-http-flv#https-flv-live-stream) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/delivery-http-flv#https-flv-live-stream))**,
-> however HTTPS proxy also works perfect with SRS such as Nginx.
+> Note: In addition to FFmpeg or OBS, it is possible to [publish by H5](http://localhost:8080/players/whip.html) via WHIP as well.
+> To enable WebRTC to publish and convert it to RTMP, please refer to the wiki([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/webrtc#rtc-to-rtmp)) documentation.
+> It is essential to ensure the candidate([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate) or [EN](https://ossrs.io/lts/en-us/docs/v4/doc/webrtc#config-candidate))
+> is set correctly for WebRTC to avoid potential issues, as it can cause significant problems.
+
+> Note: It is highly recommended to run SRS directly with docker([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started)),
+> CVM([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started-cloud) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started-cloud)),
+> or K8s([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started-k8s) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started-k8s)).
+> However, compiling SRS from source code is also possible and easy. For detailed instructions, please refer to the
+> "Getting Started"([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/getting-started) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/getting-started)) guide.
+
+> Note: If you require HTTPS for WebRTC and modern browsers, please refer to the HTTPS API([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/http-api#https-api) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/http-api#https-api)),
+> HTTPS Callback([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/http-callback#https-callback) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/http-callback#https-callback)),
+> and HTTPS Live Streaming([CN](https://ossrs.io/lts/en-us/docs/v4/doc/delivery-http-flv#https-flv-live-stream) / [EN](https://ossrs.io/lts/en-us/docs/v4/doc/delivery-http-flv#https-flv-live-stream))
+> documentation. Additionally, SRS works perfectly with an HTTPS proxy like Nginx.
-From here, please read wikis:
-
-* How to deliver RTMP streaming?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-rtmp), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-rtmp))
-* How to deliver WebRTC streaming? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/webrtc))
-* How to covert RTMP to HTTP-FLV streaming?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http-flv), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-http-flv))
-* How to covert RTMP to HLS streaming?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls))
-* How to deliver low-latency streaming?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-realtime), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-realtime))
-* How to build RTMP Edge-Cluster?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-rtmp-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-rtmp-cluster))
-* How to build RTMP Origin-Cluster?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-origin-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-origin-cluster))
-* How to build HLS Edge-Cluster?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls-cluster))
-
-Other important wiki:
-
-* Usage: How to deliver DASH(Experimental)?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-dash), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-dash))
-* Usage: How to transode RTMP stream by FFMPEG?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ffmpeg), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-ffmpeg))
-* Usage: How to deliver HTTP FLV Live Streaming Cluster?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http-flvCluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-http-flvCluster))
-* Usage: How to deliver HLS by NGINX Cluster?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls-cluster))
-* Usage: How to ingest file/stream/device to RTMP?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ingest), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-ingest))
-* Usage: How to forward stream to other servers?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-forward), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-forward))
-* Usage: How to improve edge performance for multiple CPUs? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/reuse-port), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/reuse-port))
-* Usage: How to file a bug or contact us? ([CN](https://ossrs.net/lts/zh-cn/contact), [EN](https://ossrs.io/lts/en-us/contact))
+Please refer to the following wikis for more information:
+
+* What are the steps to deliver RTMP streaming? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-rtmp), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-rtmp))
+* What is the process for delivering WebRTC streaming? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/webrtc))
+* What are the steps to convert RTMP to HTTP-FLV streaming? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http-flv), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-http-flv))
+* How can RTMP be converted to HLS streaming? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls))
+* What is the best approach for delivering low-latency streaming? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-realtime), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-realtime))
+* How can an RTMP Edge-Cluster be constructed? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-rtmp-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-rtmp-cluster))
+* What is the process for building an RTMP Origin-Cluster? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-origin-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-origin-cluster))
+* How can an HLS Edge-Cluster be set up?([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls-cluster))
+
+Here are some other important wikis:
+
+* Usage: What is the method for delivering DASH (Experimental)? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-dash), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-dash))
+* Usage: How can an RTMP stream be transcoded using FFMPEG? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ffmpeg), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-ffmpeg))
+* Usage: What is the process for setting up an HTTP FLV Live Streaming Cluster? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http-flvCluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-http-flvCluster))
+* Usage: How can HLS be delivered using an NGINX Cluster? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls-cluster), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls-cluster))
+* Usage: What steps are to ingest a file, stream, or device to RTMP? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ingest), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-ingest))
+* Usage: How can a stream be forwarded to other servers? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-forward), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/sample-forward))
+* Usage: What are the strategies for improving edge performance on multiple CPUs? ([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/reuse-port), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/reuse-port))
+* Usage: How can bugs be reported or contact be made with us? ([CN](https://ossrs.net/lts/zh-cn/contact), [EN](https://ossrs.io/lts/en-us/contact))
## AUTHORS
-Thank you to all our contributors! 🙏
+We highly appreciate all our contributors for their significant contributions that have made a remarkable difference.
+Thank you! 🙏
-You may provide financial support for this project by donating [via Open Collective](https://opencollective.com/srs-server/contribute/backer-34941/checkout?interval=month&amount=5). Thank you for your support!
+If you wish to support this project financially, you can donate [through Open Collective](https://opencollective.com/srs-server).
+We appreciate your contribution!
[![](https://opencollective.com/srs-server/backers.svg?width=800&button=true)](https://opencollective.com/srs-server/contribute/backer-34941/checkout?interval=month&amount=5)
The [TOC(Technical Oversight Committee)](trunk/AUTHORS.md#toc) and [contributors](trunk/AUTHORS.md#contributors):
-* [Winlin](https://github.com/winlinvip): Focus on [ST](https://github.com/ossrs/state-threads) and [Issues/PR](https://github.com/ossrs/srs/issues).
-* [ZhaoWenjie](https://github.com/wenjiegit): Focus on [HDS](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_DeliveryHDS) and [Windows](https://github.com/ossrs/srs/issues/2532).
-* [ShiWei](https://github.com/runner365): Focus on [SRT](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_SRTWiki) and [H.265](https://github.com/ossrs/srs/issues/465).
-* [XiaoZhihong](https://github.com/xiaozhihong): Focus on [WebRTC/QUIC](https://github.com/ossrs/srs/issues/2091) and [SRT](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_SRTWiki).
-* [WuPengqiang](https://github.com/Bepartofyou): Focus on [H.265](https://github.com/ossrs/srs/issues/465).
-* [XiaLixin](https://github.com/xialixin): Focus on [GB28181](https://github.com/ossrs/srs/issues/1500).
-* [LiPeng](https://github.com/lipeng19811218): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC).
-* [ChenGuanghua](https://github.com/chen-guanghua): Focus on [WebRTC/QoS](https://github.com/ossrs/srs/issues/2051).
-* [ChenHaibo](https://github.com/duiniuluantanqin): Focus on [GB28181](https://github.com/ossrs/srs/issues/1500) and [API](https://github.com/ossrs/srs/issues/1657).
+* [Winlin](https://github.com/winlinvip): Founder of the project, focusing on ST and Issues/PR. Responsible for architecture and maintenance.
+* [ZhaoWenjie](https://github.com/wenjiegit): One of the earliest contributors, focusing on HDS and Windows. Has expertise in client technology.
+* [ShiWei](https://github.com/runner365): Specializes in SRT and H.265, maintaining SRT and FLV patches for FFmpeg. An expert in codecs and FFmpeg.
+* [XiaoZhihong](https://github.com/xiaozhihong): Concentrates on WebRTC/QUIC and SRT, with expertise in network QoS. Contributed to ARM on ST and was the original contributor for WebRTC.
+* [WuPengqiang](https://github.com/Bepartofyou): Focused on H.265, initially contributed to the FFmpeg module in SRS for transcoding AAC with OPUS for WebRTC.
+* [XiaLixin](https://github.com/xialixin): Specializes in GB28181, with expertise in live streaming and WebRTC.
+* [LiPeng](https://github.com/lipeng19811218): Concentrates on WebRTC and contributes to memory management and smart pointers.
+* [ChenGuanghua](https://github.com/chen-guanghua): Focused on WebRTC/QoS and introduced the Asan toolchain to SRS.
+* [ChenHaibo](https://github.com/duiniuluantanqin): Specializes in GB28181 and HTTP API, contributing to patches for FFmpeg with WHIP.
A big `THANK YOU` also goes to:
@@ -124,16 +134,16 @@ A big `THANK YOU` also goes to:
## Contributing
-We are grateful to the community for contributing bugfix and improvements, please follow the
-[guide](https://github.com/ossrs/srs/contribute).
+We extend our heartfelt gratitude to the community for their contributions in identifying bugs and enhancing the project.
+To stay connected with us and keep contributing to our community, please follow the [guide](https://github.com/ossrs/srs/contribute).
## LICENSE
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fossrs%2Fsrs.svg?type=small)](https://app.fossa.com/projects/git%2Bgithub.com%2Fossrs%2Fsrs?ref=badge_small)
-SRS is licenced under [MIT](https://github.com/ossrs/srs/blob/develop/LICENSE) or [MulanPSL-2.0](https://spdx.org/licenses/MulanPSL-2.0.html),
-and note that [MulanPSL-2.0 is compatible with Apache-2.0](https://www.apache.org/legal/resolved.html#category-a),
-but some third-party libraries are distributed using their [own licenses](https://ossrs.net/lts/zh-cn/license).
+SRS is licenced under [MIT](https://github.com/ossrs/srs/blob/develop/LICENSE) or [MulanPSL-2.0](https://spdx.org/licenses/MulanPSL-2.0.html).
+Please note that while [MulanPSL-2.0 is compatible with Apache-2.0](https://www.apache.org/legal/resolved.html#category-a),
+some third-party libraries are distributed under their [licenses](https://ossrs.io/lts/en-us/license).
[![](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fossrs%2Fsrs.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fossrs%2Fsrs?ref=badge_large)
diff --git a/trunk/auto/depends.sh b/trunk/auto/depends.sh
index 716e5dfd1..d93fae966 100755
--- a/trunk/auto/depends.sh
+++ b/trunk/auto/depends.sh
@@ -121,6 +121,18 @@ unzip -v >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
fi
exit $ret;
fi
+automake --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
+ if [[ $OS_IS_CENTOS == YES ]]; then
+ echo "Please install automake by:"
+ echo " yum install -y automake"
+ elif [[ $OS_IS_UBUNTU == YES ]]; then
+ echo "Please install automake by:"
+ echo " apt install -y automake"
+ else
+ echo "Please install automake"
+ fi
+ exit $ret;
+fi
if [[ $SRS_VALGRIND == YES ]]; then
valgrind --version >/dev/null 2>/dev/null; ret=$?; if [[ 0 -ne $ret ]]; then
echo "Please install valgrind"; exit $ret;
diff --git a/trunk/conf/srt2ts.conf b/trunk/conf/srt2ts.conf
new file mode 100644
index 000000000..0f2ef1918
--- /dev/null
+++ b/trunk/conf/srt2ts.conf
@@ -0,0 +1,55 @@
+
+listen 1935;
+max_connections 1000;
+daemon off;
+srs_log_tank console;
+
+http_api {
+ enabled on;
+ listen 1985;
+}
+
+http_server {
+ enabled on;
+ listen 8080;
+ dir ./objs/nginx/html;
+}
+
+srt_server {
+ enabled on;
+ listen 10080;
+ maxbw 1000000000;
+ connect_timeout 4000;
+ peerlatency 0;
+ recvlatency 0;
+}
+
+rtc_server {
+ enabled on;
+ # Listen at udp://8000
+ listen 8000;
+ #
+ # The $CANDIDATE means fetch from env, if not configed, use * as default.
+ #
+ # The * means retrieving server IP automatically, from all network interfaces,
+ # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
+ candidate $CANDIDATE;
+}
+
+# @doc https://github.com/ossrs/srs/issues/1147#issuecomment-577607026
+vhost __defaultVhost__ {
+ srt {
+ enabled on;
+ }
+ rtc {
+ enabled on;
+ # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
+ rtmp_to_rtc on;
+ # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
+ rtc_to_rtmp on;
+ }
+ http_remux {
+ enabled on;
+ mount [vhost]/[app]/[stream].ts;
+ }
+}
diff --git a/trunk/doc/CHANGELOG.md b/trunk/doc/CHANGELOG.md
index 48adf7e67..26a2581ae 100644
--- a/trunk/doc/CHANGELOG.md
+++ b/trunk/doc/CHANGELOG.md
@@ -8,6 +8,7 @@ The changelog for SRS.
## SRS 6.0 Changelog
+* v6.0, 2023-05-12, Merge [#3539](https://github.com/ossrs/srs/pull/3539): WHIP: Improve HTTP DELETE for notifying server unpublish event. v6.0.43 (#3539)
* v6.0, 2023-04-08, Merge [#3495](https://github.com/ossrs/srs/pull/3495): RTMP: Support enhanced RTMP specification for HEVC. v6.0.42 (#3495)
* v6.0, 2023-04-01, Merge [#3392](https://github.com/ossrs/srs/pull/3392): Support composited bridges for 1:N protocols converting. v6.0.41 (#3392)
* v6.0, 2023-04-01, Merge [#3458](https://github.com/ossrs/srs/pull/3450): API: Support HTTP basic authentication for API. v6.0.40 (#3458)
@@ -56,7 +57,7 @@ The changelog for SRS.
## SRS 5.0 Changelog
-* v5.0, 2023-04-01, Merge [#3458](https://github.com/ossrs/srs/pull/3450): API: Support HTTP basic authentication for API. v5.0.152 (#3458)
+* v5.0, 2023-05-12, Merge [#3539](https://github.com/ossrs/srs/pull/3539): WHIP: Improve HTTP DELETE for notifying server unpublish event. v5.0.153 (#3539)
* v5.0, 2023-03-27, Merge [#3450](https://github.com/ossrs/srs/pull/3450): WebRTC: Error message carries the SDP when failed. v5.0.151 (#3450)
* v5.0, 2023-03-25, Merge [#3477](https://github.com/ossrs/srs/pull/3477): Remove unneccessary NULL check in srs_freep. v5.0.150 (#3477)
* v5.0, 2023-03-25, Merge [#3455](https://github.com/ossrs/srs/pull/3455): RTC: Call on_play before create session, for it might be freed for timeout. v5.0.149 (#3455)
diff --git a/trunk/doc/PERFORMANCE.md b/trunk/doc/PERFORMANCE.md
index f66c5a637..8fb81d220 100644
--- a/trunk/doc/PERFORMANCE.md
+++ b/trunk/doc/PERFORMANCE.md
@@ -1,46 +1,41 @@
# Performance
-The performance benchmark data and corelative commits are listed here.
-
-* See also: [Performance for x86/x64 Test Guide][v4_CN_Performance].
-* See also: [Performance for RaspberryPi][v4_CN_RaspberryPi].
-* For multiple processes performance, read [#775: REUSEPORT][bug #775] or OriginCluster([CN][v4_EN_OriginCluster]/[EN][v4_EN_OriginCluster]).
-* For RTC benchmark, please use [srs-bench](https://github.com/ossrs/srs-bench/tree/feature/rtc#usage).
-
-
-**Play RTMP benchmark**
-
-The data for playing RTMP was benchmarked by [SB][srs-bench]:
-
-
-| Update | SRS | Clients | Type | CPU | Memory | Commit |
-| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
-| 2014-12-07 | 2.0.67 | 10k(10000) | players | 95% | 656MB | [code][p12] |
-| 2014-12-05 | 2.0.57 | 9.0k(9000) | players | 90% | 468MB | [code][p11] |
-| 2014-12-05 | 2.0.55 | 8.0k(8000) | players | 89% | 360MB | [code][p10] |
-| 2014-11-22 | 2.0.30 | 7.5k(7500) | players | 87% | 320MB | [code][p9] |
-| 2014-11-13 | 2.0.15 | 6.0k(6000) | players | 82% | 203MB | [code][p8] |
-| 2014-11-12 | 2.0.14 | 3.5k(3500) | players | 95% | 78MB | [code][p7] |
-| 2014-11-12 | 2.0.14 | 2.7k(2700) | players | 69% | 59MB | - |
-| 2014-11-11 | 2.0.12 | 2.7k(2700) | players | 85% | 66MB | - |
-| 2014-11-11 | 1.0.5 | 2.7k(2700) | players | 85% | 66MB | - |
-| 2014-07-12 | 0.9.156 | 2.7k(2700) | players | 89% | 61MB | [code][p6] |
-| 2014-07-12 | 0.9.156 | 1.8k(1800) | players | 68% | 38MB | - |
-| 2013-11-28 | 0.5.0 | 1.8k(1800) | players | 90% | 41M | - |
+Here are the listed performance benchmark data with corresponding commits for your reference.
+
+* [Performance Guide for x86/x64 Tests.](https://ossrs.net/lts/zh-cn/docs/v4/doc/performance)
+* [Performance Guide for RaspberryPi.](https://ossrs.net/lts/zh-cn/docs/v4/doc/raspberrypi)
+* If you are interested in multiple processes performance, please refer to [#775](https://github.com/ossrs/srs/issues/775): REUSEPORT or OriginCluster([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/origin-cluster)/[EN](https://ossrs.io/lts/en-us/docs/v4/doc/origin-cluster)).
+* For RTC benchmarking, you may use [srs-bench](https://github.com/ossrs/srs-bench/tree/feature/rtc#usage).
+
+## Play RTMP benchmark
+
+The following data reflects the performance of RTMP playback, as tested using the [srs-bench](https://github.com/ossrs/srs-bench) tool:
+
+| Update | SRS | Clients | Type | CPU | Memory | Commit |
+| ------------- | --------- | ------------- | ------------- | --------- | -------- |--------------------------------------------------------------------------------------|
+| 2014-12-07 | 2.0.67 | 10k(10000) | players | 95% | 656MB | [code](https://github.com/ossrs/srs/commit/1311b6fe6576fd7b9c6d299b0f8f2e8d202f4bf8) |
+| 2014-12-05 | 2.0.57 | 9.0k(9000) | players | 90% | 468MB | [code](https://github.com/ossrs/srs/commit/9ee138746f83adc26f0e236ec017f4d68a300004) |
+| 2014-12-05 | 2.0.55 | 8.0k(8000) | players | 89% | 360MB | [code](https://github.com/ossrs/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5) |
+| 2014-11-22 | 2.0.30 | 7.5k(7500) | players | 87% | 320MB | [code](https://github.com/ossrs/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5) |
+| 2014-11-13 | 2.0.15 | 6.0k(6000) | players | 82% | 203MB | [code](https://github.com/ossrs/srs/commit/cc6aca9ad55342a06440ce7f3b38453776b2b2d1) |
+| 2014-11-12 | 2.0.14 | 3.5k(3500) | players | 95% | 78MB | [code](https://github.com/ossrs/srs/commit/8acd143a7a152885b815999162660fd4e7a3f247) |
+| 2014-11-12 | 2.0.14 | 2.7k(2700) | players | 69% | 59MB | - |
+| 2014-11-11 | 2.0.12 | 2.7k(2700) | players | 85% | 66MB | - |
+| 2014-11-11 | 1.0.5 | 2.7k(2700) | players | 85% | 66MB | - |
+| 2014-07-12 | 0.9.156 | 2.7k(2700) | players | 89% | 61MB | [code](https://github.com/ossrs/srs/commit/1ae3e6c64cc5cee90e6050c26968ebc3c18281be) |
+| 2014-07-12 | 0.9.156 | 1.8k(1800) | players | 68% | 38MB | - |
+| 2013-11-28 | 0.5.0 | 1.8k(1800) | players | 90% | 41M | - |
| Update | SFU | Clients | Type | CPU | Memory | Threads | VM |
| ---------- | ---------------- | -------- | ------------- | --------- | -------- | ------- | ---- |
| 2021-05-11 | SRS/v4.0.105 | 4000 | players | ~94% x1 | 419MB | 1 | G5 8CPU |
| 2021-05-11 | NginxRTMP/v1.2.1 | 2400 | players | ~92% x1 | 173MB | 1 | G5 8CPU |
-> Note: CentOS7, 600Kbps, [ECS/G5-2.5GHZ(SkyLake)](https://help.aliyun.com/document_detail/25378.html),
-> [SRS/v4.0.105](https://github.com/ossrs/srs/commit/2ad24b2313e88a85801deaea370204f225555939),
-> [NginxRTMP/v1.2.1](https://github.com/arut/nginx-rtmp-module/releases/tag/v1.2.1).
+> Note: The test was conducted on CentOS7 with a video bitrate of 600Kbps and CPU of G5-2.5GHZ (SkyLake).
-
-**Publish RTMP benchmark**
+## Publish RTMP benchmark
-The data for publishing RTMP was benchmarked by [SB][srs-bench]:
+The following data reflects RTMP publishing performance, as tested using the [srs-bench](https://github.com/ossrs/srs-bench) tool:
| Update | SRS | Clients | Type | CPU | Memory | Commit |
| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
@@ -59,15 +54,11 @@ The data for publishing RTMP was benchmarked by [SB][srs-bench]:
| 2021-05-11 | SRS/v4.0.105 | 2300 | publishers | ~89% x1 | 1.1GB | 1 | G5 8CPU |
| 2021-05-11 | NginxRTMP/v1.2.1 | 1300 | publishers | ~84% x1 | 198MB | 1 | G5 8CPU |
-> Note: CentOS7, 600Kbps, [ECS/G5-2.5GHZ(SkyLake)](https://help.aliyun.com/document_detail/25378.html),
-> [SRS/v4.0.105](https://github.com/ossrs/srs/commit/2ad24b2313e88a85801deaea370204f225555939),
-> [NginxRTMP/v1.2.1](https://github.com/arut/nginx-rtmp-module/releases/tag/v1.2.1).
+> Note: The test was conducted on CentOS7 with a video bitrate of 600Kbps and CPU of G5-2.5GHZ (SkyLake).
-
-**Play HTTP FLV benchmark**
-
-The data for playing HTTP FLV was benchmarked by [SB][srs-bench]:
+##Play HTTP FLV benchmark
+Here is the data for HTTP-FLV playback, as tested using the [srs-bench](https://github.com/ossrs/srs-bench) tool:
| Update | SRS | Clients | Type | CPU | Memory | Commit |
| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
@@ -77,10 +68,9 @@ The data for playing HTTP FLV was benchmarked by [SB][srs-bench]:
| 2014-05-24 | 2.0.168 | 2.3k(2300) | players | 92% | 276MB | [code][p17] |
| 2014-05-24 | 2.0.167 | 1.0k(1000) | players | 82% | 86MB | - |
-
-**RTC benchmark**
+## RTC benchmark
-The RTC benchmark data, by [srs-bench](https://github.com/ossrs/srs-bench/tree/feature/rtc#usage):
+The following data reflects WebRTC playback performance, as tested using the [srs-bench](https://github.com/ossrs/srs-bench/tree/feature/rtc#usage) tool:
| Update | SFU | Clients | Type | CPU | Memory | Threads | VM |
| ---------- | ------------- | -------- | ------------- | --------- | -------- | ------- | ---- |
@@ -93,15 +83,12 @@ The RTC benchmark data, by [srs-bench](https://github.com/ossrs/srs-bench/tree/f
| 2021-03-31 | SRS/v4.0.87 | 550 | publishers | ~86% x1 | 1.3GB | 1 | G5 2CPU |
| 2021-05-10 | Janus/v0.11.1 | 350 | publishers | ~93% x2 | 405MB | 23 | G5 2CPU |
-> Note: CentOS7, 600Kbps, [ECS/G5-2.5GHZ(SkyLake)/G7-2.7GHZ(IceLake)](https://help.aliyun.com/document_detail/25378.html),
-> [SRS/v4.0.87](https://github.com/ossrs/srs/commit/d6c16a7e236e03eba754c763e865464ec82d4516),
-> [SRS/v4.0.105](https://github.com/ossrs/srs/commit/2ad24b2313e88a85801deaea370204f225555939),
-> [Janus/v0.11.1](https://github.com/meetecho/janus-gateway/releases/tag/v0.11.1).
+> Note: The test was conducted on CentOS7 with a video bitrate of 600Kbps and CPU of G5-2.5GHZ (SkyLake).
-
-**Latency benchmark**
+## Latency benchmark
-The latency between encoder and player with realtime config([CN][v4_CN_LowLatency], [EN][v4_EN_LowLatency]):
+The following benchmark data shows end-to-end latency tested using the srs-bench tool with SRS running in real-time
+configuration([CN](https://ossrs.net/lts/zh-cn/docs/v4/doc/low-latency), [EN](https://ossrs.io/lts/en-us/docs/v4/doc/low-latency)):
| Update | SRS | Protocol | VP6 | H.264 | VP6+MP3 | H.264+MP3 |
| ------------- | --------- | --------- | --------- | --------- | --------- | -------- |
@@ -112,275 +99,9 @@ The latency between encoder and player with realtime config([CN][v4_CN_LowLatenc
> 2018-08-05, [c45f72e](https://github.com/ossrs/srs/commit/c45f72ef7bac9c7cf85b9125fc9e3aafd53f396f), Refine HTTP-FLV latency, support realtime mode. 2.0.252
-We used FMLE as encoder for benchmark. The latency of server was 0.1s+,
-and the bottleneck was the encoder. For more information, read
-[bug #257][bug #257-c0].
+> Note: Multiple factors can impact end-to-end latency, such as the encoder, server, protocol, player, and network.
-Winlin 2021
+> Note: VLC player is not recommended for low latency use scenarios due to its large buffer, resulting in significant latency.
-
-[p1]: https://github.com/ossrs/srs/commit/787ab674e38734ea8e0678101614fdcd84645dc8
-[p2]: https://github.com/ossrs/srs/commit/f35ec2155b1408d528a9f37da7904c9625186bcf
-[p3]: https://github.com/ossrs/srs/commit/29324fab469e0f7cef9ad04ffdbce832ac7dd9ff
-[p4]: https://github.com/ossrs/srs/commit/f57801eb46c16755b173984b915a4166922df6a6
-[p5]: https://github.com/ossrs/srs/commit/5589b13d2e216b91f97afb78ee0c011b2fccf7da
-[p6]: https://github.com/ossrs/srs/commit/1ae3e6c64cc5cee90e6050c26968ebc3c18281be
-[p7]: https://github.com/ossrs/srs/commit/8acd143a7a152885b815999162660fd4e7a3f247
-[p8]: https://github.com/ossrs/srs/commit/cc6aca9ad55342a06440ce7f3b38453776b2b2d1
-[p9]: https://github.com/ossrs/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5
-[p10]: https://github.com/ossrs/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5
-[p11]: https://github.com/ossrs/srs/commit/9ee138746f83adc26f0e236ec017f4d68a300004
-[p12]: https://github.com/ossrs/srs/commit/1311b6fe6576fd7b9c6d299b0f8f2e8d202f4bf8
-[p13]: https://github.com/ossrs/srs/commit/10297fab519811845b549a8af40a6bcbd23411e8
-[p14]: https://github.com/ossrs/srs/commit/10297fab519811845b549a8af40a6bcbd23411e8
-[p15]: https://github.com/ossrs/srs/commit/0d6b91039d408328caab31a1077d56a809b6bebc
-[p16]: https://github.com/ossrs/srs/commit/0d6b91039d408328caab31a1077d56a809b6bebc
-[p17]: https://github.com/ossrs/srs/commit/fc995473eb02c7cf64b5b212b456e11f34aa7984
-[p18]: https://github.com/ossrs/srs/commit/960341b9b2b9646270ccfd113b4dd784d9826c73
-[p19]: https://github.com/ossrs/srs/commit/4df19ba99a4e4d80cd89b304f9298d343497bec9
-[p20]: https://github.com/ossrs/srs/commit/d12fc7fcc5b2e9e3c8ee5c7da01d0e41c8f8ca4a
-[p21]: https://github.com/ossrs/srs/commit/87519aaae835199e5adb60c0ae2c1cd24939448c
-[p22]: https://github.com/ossrs/srs/commit/5a4373d4835758188b9a1f03005cea0b6ddc62aa
-[p23]: https://github.com/ossrs/srs/pull/239
-
-[authors]: https://github.com/ossrs/srs/blob/develop/trunk/AUTHORS.txt
-[bigthanks]: https://ossrs.net/lts/zh-cn/product#release40
-[st]: https://github.com/ossrs/state-threads
-[st2]: https://github.com/ossrs/state-threads/tree/srs
-[state-threads]: https://github.com/ossrs/state-threads/tree/srs
-[nginx]: http://nginx.org/
-[srs]: https://github.com/ossrs/srs
-[gitee]: https://gitee.com/ossrs/srs
-[srs-bench]: https://github.com/ossrs/srs-bench
-[srs-ngb]: https://github.com/ossrs/srs-console
-[srs-librtmp]: https://github.com/ossrs/srs-librtmp
-[gitlab]: https://gitlab.com/winlinvip/srs-gitlab
-[console]: http://ossrs.net:8080/console
-[docker-srs3]: https://github.com/ossrs/srs-docker/tree/v3#usage
-[docker-srs4]: https://github.com/ossrs/srs-docker/tree/v4#usage
-[docker-dev]: https://github.com/ossrs/srs-docker/tree/dev#usage
-
-[v4_CN_Git]: https://ossrs.net/lts/zh-cn/docs/v4/doc/git
-[v4_EN_Git]: https://ossrs.io/lts/en-us/docs/v4/doc/git
-[v4_CN_SampleRTMP]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-rtmp
-[v4_EN_SampleRTMP]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-rtmp
-[v4_CN_SampleRTMPCluster]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-rtmp-cluster
-[v4_EN_SampleRTMPCluster]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-rtmp-cluster
-[v4_CN_SampleOriginCluster]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-origin-cluster
-[v4_EN_SampleOriginCluster]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-origin-cluster
-[v4_CN_SampleHLS]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-hls
-[v4_EN_SampleHLS]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-hls
-[v4_CN_SampleTranscode2HLS]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-transcode-to-hls
-[v4_EN_SampleTranscode2HLS]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-transcode-to-hls
-[v4_CN_SampleFFMPEG]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ffmpeg
-[v4_EN_SampleFFMPEG]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-ffmpeg
-[v4_CN_SampleForward]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-forward
-[v4_EN_SampleForward]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-forward
-[v4_CN_SampleRealtime]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-realtime
-[v4_EN_SampleRealtime]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-realtime
-[v4_CN_WebRTC]: https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc
-[v4_EN_WebRTC]: https://ossrs.io/lts/en-us/docs/v4/doc/webrtc
-[v4_CN_WebRTC#config-candidate]: https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
-[v4_EN_WebRTC#config-candidate]: https://ossrs.io/lts/en-us/docs/v4/doc/webrtc#config-candidate
-[v4_CN_SampleARM]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-arm
-[v4_EN_SampleARM]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-arm
-[v4_CN_SampleIngest]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-ingest
-[v4_EN_SampleIngest]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-ingest
-[v4_CN_SampleHTTP]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http
-[v4_EN_SampleHTTP]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-http
-[v4_CN_SampleDemo]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sampleDemo
-[v4_EN_SampleDemo]: https://ossrs.io/lts/en-us/docs/v4/doc/sampleDemo
-[v4_CN_OriginCluster]: https://ossrs.net/lts/zh-cn/docs/v4/doc/origin-cluster
-[v4_EN_OriginCluster]: https://ossrs.io/lts/en-us/docs/v4/doc/origin-cluster
-[v4_CN_REUSEPORT]: https://ossrs.net/lts/zh-cn/docs/v4/doc/reuse-port
-[v4_EN_REUSEPORT]: https://ossrs.io/lts/en-us/docs/v4/doc/reuse-port
-[v4_CN_Sample]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample
-[v4_EN_Sample]: https://ossrs.io/lts/en-us/docs/v4/doc/sample
-
-[v4_CN_Build]: https://ossrs.net/lts/zh-cn/docs/v4/doc/install
-[v4_EN_Build]: https://ossrs.io/lts/en-us/docs/v4/doc/install
-[v4_CN_Performance]: https://ossrs.net/lts/zh-cn/docs/v4/doc/performance
-[v4_EN_Performance]: https://ossrs.io/lts/en-us/docs/v4/doc/performance
-[v4_CN_DeliveryRTMP]: https://ossrs.net/lts/zh-cn/docs/v4/doc/delivery-rtmp
-[v4_EN_DeliveryRTMP]: https://ossrs.io/lts/en-us/docs/v4/doc/delivery-rtmp
-[v4_CN_Edge]: https://ossrs.net/lts/zh-cn/docs/v4/doc/edge
-[v4_EN_Edge]: https://ossrs.io/lts/en-us/docs/v4/doc/edge
-[v4_CN_RtmpUrlVhost]: https://ossrs.net/lts/zh-cn/docs/v4/doc/rtmp-url-vhost
-[v4_EN_RtmpUrlVhost]: https://ossrs.io/lts/en-us/docs/v4/doc/rtmp-url-vhost
-[v4_CN_RTMPHandshake]: https://ossrs.net/lts/zh-cn/docs/v4/doc/rtmp-handshake
-[v4_EN_RTMPHandshake]: https://ossrs.io/lts/en-us/docs/v4/doc/rtmp-handshake
-[v4_CN_HTTPServer]: https://ossrs.net/lts/zh-cn/docs/v4/doc/http-server
-[v4_EN_HTTPServer]: https://ossrs.io/lts/en-us/docs/v4/doc/http-server
-[v4_CN_DeliveryHLS]: https://ossrs.net/lts/zh-cn/docs/v4/doc/delivery-hls
-[v4_EN_DeliveryHLS]: https://ossrs.io/lts/en-us/docs/v4/doc/delivery-hls
-[v4_CN_DeliveryHLS2]: https://ossrs.net/lts/zh-cn/docs/v4/doc/delivery-hls#hlsaudioonly
-[v4_EN_DeliveryHLS2]: https://ossrs.io/lts/en-us/docs/v4/doc/delivery-hls#hlsaudioonly
-[v4_CN_Reload]: https://ossrs.net/lts/zh-cn/docs/v4/doc/reload
-[v4_EN_Reload]: https://ossrs.io/lts/en-us/docs/v4/doc/reload
-[v4_CN_LowLatency2]: https://ossrs.net/lts/zh-cn/docs/v4/doc/low-latency#gop-cache
-[v4_EN_LowLatency2]: https://ossrs.io/lts/en-us/docs/v4/doc/low-latency#gop-cache
-[v4_CN_Forward]: https://ossrs.net/lts/zh-cn/docs/v4/doc/forward
-[v4_EN_Forward]: https://ossrs.io/lts/en-us/docs/v4/doc/forward
-[v4_CN_FFMPEG]: https://ossrs.net/lts/zh-cn/docs/v4/doc/ffmpeg
-[v4_EN_FFMPEG]: https://ossrs.io/lts/en-us/docs/v4/doc/ffmpeg
-[v4_CN_HTTPCallback]: https://ossrs.net/lts/zh-cn/docs/v4/doc/http-callback
-[v4_EN_HTTPCallback]: https://ossrs.io/lts/en-us/docs/v4/doc/http-callback
-[v4_CN_SampleDemo]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sampleDemo
-[v4_EN_SampleDemo]: https://ossrs.io/lts/en-us/docs/v4/doc/sampleDemo
-[v4_CN_SrsLinuxArm]: https://ossrs.net/lts/zh-cn/docs/v4/doc/arm
-[v4_EN_SrsLinuxArm]: https://ossrs.io/lts/en-us/docs/v4/doc/arm
-[v4_CN_LinuxService]: https://ossrs.net/lts/zh-cn/docs/v4/doc/service
-[v4_EN_LinuxService]: https://ossrs.io/lts/en-us/docs/v4/doc/service
-[v4_CN_RTMP-ATC]: https://ossrs.net/lts/zh-cn/docs/v4/doc/rtmp-atc
-[v4_EN_RTMP-ATC]: https://ossrs.io/lts/en-us/docs/v4/doc/rtmp-atc
-[v4_CN_HTTPApi]: https://ossrs.net/lts/zh-cn/docs/v4/doc/http-api
-[v4_EN_HTTPApi]: https://ossrs.io/lts/en-us/docs/v4/doc/http-api
-[v4_CN_Ingest]: https://ossrs.net/lts/zh-cn/docs/v4/doc/ingest
-[v4_EN_Ingest]: https://ossrs.io/lts/en-us/docs/v4/doc/ingest
-[v4_CN_DVR]: https://ossrs.net/lts/zh-cn/docs/v4/doc/dvr
-[v4_EN_DVR]: https://ossrs.io/lts/en-us/docs/v4/doc/dvr
-[v4_CN_SrsLog]: https://ossrs.net/lts/zh-cn/docs/v4/doc/log
-[v4_EN_SrsLog]: https://ossrs.io/lts/en-us/docs/v4/doc/log
-[v4_CN_DRM2]: https://ossrs.net/lts/zh-cn/docs/v4/doc/drm#tokentraverse
-[v4_EN_DRM2]: https://ossrs.io/lts/en-us/docs/v4/doc/drm#tokentraverse
-[v4_CN_SampleHTTP]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http
-[v4_EN_SampleHTTP]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-http
-[v4_CN_FlvVodStream]: https://ossrs.net/lts/zh-cn/docs/v4/doc/flv-vod-stream
-[v4_EN_FlvVodStream]: https://ossrs.io/lts/en-us/docs/v4/doc/flv-vod-stream
-[v4_CN_Security]: https://ossrs.net/lts/zh-cn/docs/v4/doc/security
-[v4_EN_Security]: https://ossrs.io/lts/en-us/docs/v4/doc/security
-[v4_CN_DeliveryHttpStream]: https://ossrs.net/lts/zh-cn/docs/v4/doc/delivery-http-flv
-[v4_EN_DeliveryHttpStream]: https://ossrs.io/lts/en-us/docs/v4/doc/delivery-http-flv
-[v4_CN_DeliveryHDS]: https://ossrs.net/lts/zh-cn/docs/v4/doc/delivery-hds
-[v4_EN_DeliveryHDS]: https://ossrs.io/lts/en-us/docs/v4/doc/delivery-hds
-[v4_CN_Streamer]: https://ossrs.net/lts/zh-cn/docs/v4/doc/streamer
-[v4_EN_Streamer]: https://ossrs.io/lts/en-us/docs/v4/doc/streamer
-[v4_CN_Streamer2]: https://ossrs.net/lts/zh-cn/docs/v4/doc/streamer#push-http-flv-to-srs
-[v4_EN_Streamer2]: https://ossrs.io/lts/en-us/docs/v4/doc/streamer#push-http-flv-to-srs
-[v4_CN_SampleHttpFlv]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http-flv
-[v4_EN_SampleHttpFlv]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-http-flv
-[v4_CN_SampleHttpFlvCluster]: https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-http-flvCluster
-[v4_EN_SampleHttpFlvCluster]: https://ossrs.io/lts/en-us/docs/v4/doc/sample-http-flvCluster
-[v4_CN_LowLatency]: https://ossrs.net/lts/zh-cn/docs/v4/doc/low-latency
-[v4_EN_LowLatency]: https://ossrs.io/lts/en-us/docs/v4/doc/low-latency
-[v4_EN_LowLatency#merged-read]: https://ossrs.io/lts/en-us/docs/v4/doc/low-latency#merged-read
-[v4_CN_Performance#performancereport4k]: https://ossrs.net/lts/zh-cn/docs/v4/doc/performance#performancereport4k
-[v4_CN_DRM#tokentraverse]: https://ossrs.net/lts/zh-cn/docs/v4/doc/drm#tokentraverse
-[v4_CN_RaspberryPi]: https://ossrs.net/lts/zh-cn/docs/v4/doc/raspberrypi
-[v4_CN_Build]: https://ossrs.net/lts/zh-cn/docs/v4/doc/install
-[v4_CN_LowLatency]: https://ossrs.net/lts/zh-cn/docs/v4/doc/low-latency
-[v4_CN_Build]: https://ossrs.net/lts/zh-cn/docs/v4/doc/install
-[v4_CN_Performance]: https://ossrs.net/lts/zh-cn/docs/v4/doc/performance
-[v4_CN_RaspberryPi]: https://ossrs.net/lts/zh-cn/docs/v4/doc/raspberrypi
-[v4_CN_LowLatency#merged-read]: https://ossrs.net/lts/zh-cn/docs/v4/doc/low-latency#merged-read
-[v4_EN_LowLatency#merged-write]: https://ossrs.io/lts/en-us/docs/v4/doc/low-latency#merged-write
-[v4_CN_LowLatency#merged-write]: https://ossrs.net/lts/zh-cn/docs/v4/doc/low-latency#merged-write
-[v4_CN_NgExec]:https://ossrs.net/lts/zh-cn/docs/v4/doc/nginx-exec
-[v4_EN_NgExec]:https://ossrs.io/lts/en-us/docs/v4/doc/nginx-exec
-[v4_CN_SampleSRT]:https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-srt
-[v4_EN_SampleSRT]:https://ossrs.io/lts/en-us/docs/v4/doc/sample-srt
-[v4_CN_SampleDASH]:https://ossrs.net/lts/zh-cn/docs/v4/doc/sample-dash
-[v4_EN_SampleDASH]:https://ossrs.io/lts/en-us/docs/v4/doc/sample-dash
-
-[bug #547]: https://github.com/ossrs/srs/issues/547
-[bug #301]: https://github.com/ossrs/srs/issues/301
-[bug #459]: https://github.com/ossrs/srs/issues/459
-[bug #367]: https://github.com/ossrs/srs/issues/367
-[bug #257]: https://github.com/ossrs/srs/issues/257
-[bug #904]: https://github.com/ossrs/srs/issues/904
-[bug #913]: https://github.com/ossrs/srs/issues/913
-[bug #1059]: https://github.com/ossrs/srs/issues/1059
-[bug #92]: https://github.com/ossrs/srs/issues/92
-[bug #464]: https://github.com/ossrs/srs/issues/464
-[bug #460]: https://github.com/ossrs/srs/issues/460
-[bug #775]: https://github.com/ossrs/srs/issues/775
-[bug #307]: https://github.com/ossrs/srs/issues/307
-[bug #2324]: https://github.com/ossrs/srs/issues/2324
-[bug #1657]: https://github.com/ossrs/srs/issues/1657
-[bug #1500]: https://github.com/ossrs/srs/issues/1500
-[bug #738]: https://github.com/ossrs/srs/issues/738
-[bug #299]: https://github.com/ossrs/srs/issues/299
-[bug #250]: https://github.com/ossrs/srs/issues/250
-[bug #459]: https://github.com/ossrs/srs/issues/459
-[bug #470]: https://github.com/ossrs/srs/issues/470
-[bug #319]: https://github.com/ossrs/srs/issues/319
-[bug #1147]: https://github.com/ossrs/srs/issues/1147
-[bug #2304]: https://github.com/ossrs/srs/issues/2304
-[bug #1535]: https://github.com/ossrs/srs/issues/1535
-[bug #1342]: https://github.com/ossrs/srs/issues/1342
-[bug #1193]: https://github.com/ossrs/srs/issues/1193
-[bug #2093]: https://github.com/ossrs/srs/issues/2093
-[bug #465]: https://github.com/ossrs/srs/issues/465
-[bug #2091]: https://github.com/ossrs/srs/issues/2091
-[bug #2188]: https://github.com/ossrs/srs/issues/2188
-[bug #413]: https://github.com/ossrs/srs/issues/413
-[bug #1111]: https://github.com/ossrs/srs/issues/1111
-[bug #463]: https://github.com/ossrs/srs/issues/463
-[bug #775]: https://github.com/ossrs/srs/issues/775
-[bug #257-c0]: https://github.com/ossrs/srs/issues/257#issuecomment-66864413
-
-[r3.0r5]: https://github.com/ossrs/srs/releases/tag/v3.0-r5
-[r3.0r4]: https://github.com/ossrs/srs/releases/tag/v3.0-r4
-[r3.0r3]: https://github.com/ossrs/srs/releases/tag/v3.0-r3
-[r3.0r2]: https://github.com/ossrs/srs/releases/tag/v3.0-r2
-[r3.0r1]: https://github.com/ossrs/srs/releases/tag/v3.0-r1
-[r3.0r0]: https://github.com/ossrs/srs/releases/tag/v3.0-r0
-[r3.0b4]: https://github.com/ossrs/srs/releases/tag/v3.0-b4
-[r3.0b3]: https://github.com/ossrs/srs/releases/tag/v3.0-b3
-[r3.0b2]: https://github.com/ossrs/srs/releases/tag/v3.0-b2
-[r3.0b1]: https://github.com/ossrs/srs/releases/tag/v3.0-b1
-[r3.0b0]: https://github.com/ossrs/srs/releases/tag/v3.0-b0
-[r3.0a9]: https://github.com/ossrs/srs/releases/tag/v3.0-a9
-[r3.0a8]: https://github.com/ossrs/srs/releases/tag/v3.0-a8
-[r3.0a7]: https://github.com/ossrs/srs/releases/tag/v3.0-a7
-[r3.0a6]: https://github.com/ossrs/srs/releases/tag/v3.0-a6
-[r3.0a5]: https://github.com/ossrs/srs/releases/tag/v3.0-a5
-[r3.0a4]: https://github.com/ossrs/srs/releases/tag/v3.0-a4
-[r3.0a3]: https://github.com/ossrs/srs/releases/tag/v3.0-a3
-[r3.0a2]: https://github.com/ossrs/srs/releases/tag/v3.0-a2
-[r3.0a1]: https://github.com/ossrs/srs/releases/tag/v3.0-a1
-[r3.0a0]: https://github.com/ossrs/srs/releases/tag/v3.0-a0
-[r2.0r8]: https://github.com/ossrs/srs/releases/tag/v2.0-r8
-[r2.0r7]: https://github.com/ossrs/srs/releases/tag/v2.0-r7
-[r2.0r6]: https://github.com/ossrs/srs/releases/tag/v2.0-r6
-[r2.0r5]: https://github.com/ossrs/srs/releases/tag/v2.0-r5
-[r2.0r4]: https://github.com/ossrs/srs/releases/tag/v2.0-r4
-[r2.0r3]: https://github.com/ossrs/srs/releases/tag/v2.0-r3
-[r2.0r2]: https://github.com/ossrs/srs/releases/tag/v2.0-r2
-[r2.0r1]: https://github.com/ossrs/srs/releases/tag/v2.0-r1
-[r2.0r0]: https://github.com/ossrs/srs/releases/tag/v2.0-r0
-[r2.0b4]: https://github.com/ossrs/srs/releases/tag/v2.0-b4
-[r2.0b3]: https://github.com/ossrs/srs/releases/tag/v2.0-b3
-[r2.0b2]: https://github.com/ossrs/srs/releases/tag/v2.0-b2
-[r2.0b1]: https://github.com/ossrs/srs/releases/tag/v2.0-b1
-[r2.0b0]: https://github.com/ossrs/srs/releases/tag/v2.0-b0
-[r2.0a3]: https://github.com/ossrs/srs/releases/tag/v2.0-a3
-[r2.0a2]: https://github.com/ossrs/srs/releases/tag/v2.0-a2
-[r2.0a1]: https://github.com/ossrs/srs/releases/tag/v2.0-a1
-[r2.0a0]: https://github.com/ossrs/srs/releases/tag/v2.0-a0
-[r1.0r4]: https://github.com/ossrs/srs/releases/tag/v1.0-r4
-[r1.0r3]: https://github.com/ossrs/srs/releases/tag/v1.0-r3
-[r1.0r2]: https://github.com/ossrs/srs/releases/tag/v1.0-r2
-[r1.0r1]: https://github.com/ossrs/srs/releases/tag/v1.0-r1
-[r1.0r0]: https://github.com/ossrs/srs/releases/tag/v1.0-r0
-[r1.0b0]: https://github.com/ossrs/srs/releases/tag/v0.9.8
-[r1.0a7]: https://github.com/ossrs/srs/releases/tag/v0.9.7
-[r1.0a6]: https://github.com/ossrs/srs/releases/tag/v0.9.6
-[r1.0a5]: https://github.com/ossrs/srs/releases/tag/v0.9.5
-[r1.0a4]: https://github.com/ossrs/srs/releases/tag/v0.9.4
-[r1.0a3]: https://github.com/ossrs/srs/releases/tag/v0.9.3
-[r1.0a2]: https://github.com/ossrs/srs/releases/tag/v0.9.2
-[r1.0a0]: https://github.com/ossrs/srs/releases/tag/v0.9.1
-[r0.9]: https://github.com/ossrs/srs/releases/tag/v0.9.0
-[r0.8]: https://github.com/ossrs/srs/releases/tag/v0.8.0
-[r0.7]: https://github.com/ossrs/srs/releases/tag/v0.7.0
-[r0.6]: https://github.com/ossrs/srs/releases/tag/v0.6.0
-[r0.5]: https://github.com/ossrs/srs/releases/tag/v0.5.0
-[r0.4]: https://github.com/ossrs/srs/releases/tag/v0.4.0
-[r0.3]: https://github.com/ossrs/srs/releases/tag/v0.3.0
-[r0.2]: https://github.com/ossrs/srs/releases/tag/v0.2.0
-[r0.1]: https://github.com/ossrs/srs/releases/tag/v0.1.0
-
-[LICENSE]: https://github.com/ossrs/srs/blob/4.0release/LICENSE
-[LicenseMixing]: https://ossrs.net/lts/zh-cn/license
+Winlin 2021
diff --git a/trunk/src/app/srs_app_rtc_api.cpp b/trunk/src/app/srs_app_rtc_api.cpp
index 346592043..f552e10f5 100644
--- a/trunk/src/app/srs_app_rtc_api.cpp
+++ b/trunk/src/app/srs_app_rtc_api.cpp
@@ -685,15 +685,26 @@ srs_error_t SrsGoApiRtcWhip::do_serve_http(ISrsHttpResponseWriter* w, ISrsHttpMe
ruc->req_->vhost = parsed_vhost->arg0();
}
- srs_trace("RTC whip %s %s, clientip=%s, app=%s, stream=%s, offer=%dB, eip=%s, codec=%s, param=%s",
+ // For client to specifies whether encrypt by SRTP.
+ string srtp = r->query_get("encrypt");
+ string dtls = r->query_get("dtls");
+
+ srs_trace("RTC whip %s %s, clientip=%s, app=%s, stream=%s, offer=%dB, eip=%s, codec=%s, srtp=%s, dtls=%s, param=%s",
action.c_str(), ruc->req_->get_stream_url().c_str(), clientip.c_str(), ruc->req_->app.c_str(), ruc->req_->stream.c_str(),
- remote_sdp_str.length(), eip.c_str(), codec.c_str(), ruc->req_->param.c_str()
+ remote_sdp_str.length(), eip.c_str(), codec.c_str(), srtp.c_str(), dtls.c_str(), ruc->req_->param.c_str()
);
ruc->eip_ = eip;
ruc->codec_ = codec;
ruc->publish_ = (action == "publish");
- ruc->dtls_ = ruc->srtp_ = true;
+
+ // For client to specifies whether encrypt by SRTP.
+ ruc->dtls_ = (dtls != "false");
+ if (srtp.empty()) {
+ ruc->srtp_ = _srs_config->get_rtc_server_encrypt();
+ } else {
+ ruc->srtp_ = (srtp != "false");
+ }
// TODO: FIXME: It seems remote_sdp doesn't represents the full SDP information.
ruc->remote_sdp_str_ = remote_sdp_str;
diff --git a/trunk/src/core/srs_core_version5.hpp b/trunk/src/core/srs_core_version5.hpp
index 97bfe7db5..5fff03db0 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 152
+#define VERSION_REVISION 153
#endif
diff --git a/trunk/src/core/srs_core_version6.hpp b/trunk/src/core/srs_core_version6.hpp
index 5de6bf17f..490f2ded2 100644
--- a/trunk/src/core/srs_core_version6.hpp
+++ b/trunk/src/core/srs_core_version6.hpp
@@ -9,6 +9,6 @@
#define VERSION_MAJOR 6
#define VERSION_MINOR 0
-#define VERSION_REVISION 42
+#define VERSION_REVISION 43
#endif