|
|
|
@ -9,8 +9,8 @@ Download from github.io: [Centos6-x86_64][centos0], [more...][more0]<br/>
|
|
|
|
|
Download from ossrs.net: [Centos6-x86_64][centos1], [more...][more1]<br/>
|
|
|
|
|
Website for SRS/2.0, read SRS 2.0 [Chinese][srs2_CN] or [English][srs2_EN].
|
|
|
|
|
|
|
|
|
|
[![Donation](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_92x26.png)](http://www.ossrs.net/srs.release/donation/index.html)
|
|
|
|
|
[![Paypal](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_pp_142x27.png)](http://www.ossrs.net/srs.release/donation/paypal.html)
|
|
|
|
|
[![Donation](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_92x26.png)][donation1]
|
|
|
|
|
[![Paypal](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_pp_142x27.png)][donation2]
|
|
|
|
|
|
|
|
|
|
## About
|
|
|
|
|
|
|
|
|
@ -23,7 +23,7 @@ session-oriented log, exports client srs-librtmp,
|
|
|
|
|
with stream caster to push MPEGTS-over-UDP/RTSP to SRS,
|
|
|
|
|
provides EN/CN wiki and the most simple architecture.
|
|
|
|
|
|
|
|
|
|
<strong>Why SRS?</strong>
|
|
|
|
|
### Why SRS?
|
|
|
|
|
|
|
|
|
|
1. <strong>Completely Rewrite HLS:</strong> following m3u8/ts spec, and HLS support h.264+aac/mp3.
|
|
|
|
|
1. <strong>High Efficient RTMP:</strong> deliverying support 7k+ concurrency, vhost based, both origin and edge.
|
|
|
|
@ -46,7 +46,7 @@ and session based log, linux service script and install script.
|
|
|
|
|
|
|
|
|
|
Enjoy it!
|
|
|
|
|
|
|
|
|
|
## AUTHORS
|
|
|
|
|
### AUTHORS
|
|
|
|
|
|
|
|
|
|
There are two types of people that have contributed to the SRS project:
|
|
|
|
|
* AUTHORS: Contribute important features. Names of all
|
|
|
|
@ -66,53 +66,37 @@ A big THANK YOU goes to:
|
|
|
|
|
* [FFMPEG][FFMPEG] and [libx264][libx264] group for SRS to use to transcode.
|
|
|
|
|
* Guido van Rossum for creating Python for api-server for SRS.
|
|
|
|
|
|
|
|
|
|
## Mirrors
|
|
|
|
|
### Donation
|
|
|
|
|
|
|
|
|
|
Github: [https://github.com/simple-rtmp-server/srs][srs], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
git clone https://github.com/simple-rtmp-server/srs.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
CSDN: [https://code.csdn.net/winlinvip/srs-csdn][csdn], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
git clone https://code.csdn.net/winlinvip/srs-csdn.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
OSChina: [http://git.oschina.net/winlinvip/srs.oschina][oschina], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
git clone https://git.oschina.net/winlinvip/srs.oschina.git
|
|
|
|
|
```
|
|
|
|
|
[![Donation](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_92x26.png)][donation1]
|
|
|
|
|
[![Paypal](https://www.paypalobjects.com/webstatic/en_US/btn/btn_donate_pp_142x27.png)][donation2]
|
|
|
|
|
|
|
|
|
|
Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
Donation: [http://www.ossrs.net/srs.release/donation/index.html][donation1]
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
git clone https://gitlab.com/winlinvip/srs-gitlab.git
|
|
|
|
|
```
|
|
|
|
|
Donations: [https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt][donations]
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
|
|
<strong>Step 1:</strong> get SRS
|
|
|
|
|
<strong>Download slow? Please use [mirrors][mirrors] for SRS.</strong>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
```
|
|
|
|
|
git clone https://github.com/simple-rtmp-server/srs &&
|
|
|
|
|
cd srs/trunk
|
|
|
|
|
</pre>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
<strong>Step 2:</strong> build SRS,
|
|
|
|
|
<strong>Requires Centos6.x/Ubuntu12 32/64bits, others see Build([CN][v2_CN_Build],[EN][v2_EN_Build]).</strong>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
```
|
|
|
|
|
./configure && make
|
|
|
|
|
</pre>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
<strong>Step 3:</strong> start SRS
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
```
|
|
|
|
|
./objs/srs -c conf/srs.conf
|
|
|
|
|
</pre>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
<strong>See also:</strong>
|
|
|
|
|
* Usage: How to delivery RTMP?([CN][v1_CN_SampleRTMP], [EN][v1_EN_SampleRTMP])
|
|
|
|
@ -132,34 +116,56 @@ cd srs/trunk
|
|
|
|
|
* Usage: Solution using SRS?([CN][v1_CN_Sample], [EN][v1_EN_Sample])
|
|
|
|
|
* Usage: Why SRS?([CN][v1_CN_Product], [EN][v1_EN_Product])
|
|
|
|
|
|
|
|
|
|
## Wiki
|
|
|
|
|
### Mirrors
|
|
|
|
|
|
|
|
|
|
SRS 1.0 wiki
|
|
|
|
|
Github: [https://github.com/simple-rtmp-server/srs][srs], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
Please select your language:
|
|
|
|
|
* [SRS 1.0 English][v1_EN_Home]
|
|
|
|
|
* [SRS 1.0 Chinese][v1_CN_Home]
|
|
|
|
|
```
|
|
|
|
|
git clone https://github.com/simple-rtmp-server/srs.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
SRS 2.0 wiki
|
|
|
|
|
CSDN: [https://code.csdn.net/winlinvip/srs-csdn][csdn], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
Please select your language:
|
|
|
|
|
* [SRS 2.0 English][v2_EN_Home]
|
|
|
|
|
* [SRS 2.0 Chinese][v2_CN_Home]
|
|
|
|
|
```
|
|
|
|
|
git clone https://code.csdn.net/winlinvip/srs-csdn.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Donation
|
|
|
|
|
OSChina: [http://git.oschina.net/winlinvip/srs.oschina][oschina], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
Donation: [http://www.ossrs.net/srs.release/donation/index.html][donation1]
|
|
|
|
|
```
|
|
|
|
|
git clone https://git.oschina.net/winlinvip/srs.oschina.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Donations: [https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt][donations]
|
|
|
|
|
Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
|
|
|
|
|
|
|
|
|
|
## System Requirements
|
|
|
|
|
```
|
|
|
|
|
git clone https://gitlab.com/winlinvip/srs-gitlab.git
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### System Requirements
|
|
|
|
|
|
|
|
|
|
Supported operating systems and hardware:
|
|
|
|
|
* All Linux , both 32 and 64 bits
|
|
|
|
|
* Apple OSX(Darwin), both 32 and 64bits.
|
|
|
|
|
* All hardware with x86/x86_64/arm/mips cpu.
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
### Wiki
|
|
|
|
|
|
|
|
|
|
SRS 1.0 wiki
|
|
|
|
|
|
|
|
|
|
Please select your language:
|
|
|
|
|
* [SRS 1.0 English][v1_EN_Home]
|
|
|
|
|
* [SRS 1.0 Chinese][v1_CN_Home]
|
|
|
|
|
|
|
|
|
|
SRS 2.0 wiki
|
|
|
|
|
|
|
|
|
|
Please select your language:
|
|
|
|
|
* [SRS 2.0 English][v2_EN_Home]
|
|
|
|
|
* [SRS 2.0 Chinese][v2_CN_Home]
|
|
|
|
|
|
|
|
|
|
## Product
|
|
|
|
|
|
|
|
|
|
### Features
|
|
|
|
|
|
|
|
|
|
1. Simple, also stable enough.
|
|
|
|
|
1. High-performance([CN][v1_CN_Performance], [EN][v1_EN_Performance]): single-thread, async socket, event/st-thread driven.
|
|
|
|
@ -228,11 +234,11 @@ Supported operating systems and hardware:
|
|
|
|
|
1. [plan]Support HLS edge server, read [#466][bug #466].
|
|
|
|
|
1. [plan]Support HLS realtime latency mode, read [#468][bug #468].
|
|
|
|
|
|
|
|
|
|
## Compare
|
|
|
|
|
### Compare
|
|
|
|
|
|
|
|
|
|
Compare SRS with other media server.
|
|
|
|
|
|
|
|
|
|
### Stream Delivery
|
|
|
|
|
#### Stream Delivery
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
@ -243,7 +249,7 @@ Compare SRS with other media server.
|
|
|
|
|
| HLS(aonly) | Stable | X | X | Stable | Stable |
|
|
|
|
|
| HTTP Server | Stable | Stable | X | X | Stable |
|
|
|
|
|
|
|
|
|
|
### Cluster
|
|
|
|
|
#### Cluster
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
@ -254,7 +260,7 @@ Compare SRS with other media server.
|
|
|
|
|
| Forward | Stable | X | X | X | X |
|
|
|
|
|
| ATC | Stable | X | X | X | X |
|
|
|
|
|
|
|
|
|
|
### Stream Service
|
|
|
|
|
#### Stream Service
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
@ -269,7 +275,7 @@ Compare SRS with other media server.
|
|
|
|
|
| Security | Stable | Stable | X | X | Stable |
|
|
|
|
|
| Token Traverse| Stable | X | X | Stable | X |
|
|
|
|
|
|
|
|
|
|
### Efficiency
|
|
|
|
|
#### Efficiency
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
@ -278,7 +284,7 @@ Compare SRS with other media server.
|
|
|
|
|
| RTMP Latency| 0.1s | 3s | 3s | 3s | 3s |
|
|
|
|
|
| HLS Latency | 10s | 30s | X | 30s | 30s |
|
|
|
|
|
|
|
|
|
|
### Stream Caster
|
|
|
|
|
#### Stream Caster
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
@ -287,21 +293,21 @@ Compare SRS with other media server.
|
|
|
|
|
| Push RTSP | Experiment| X | Stable | X | Stable |
|
|
|
|
|
| Push HTTP FLV | Experiment| X | X | X | X |
|
|
|
|
|
|
|
|
|
|
### Debug System
|
|
|
|
|
#### Debug System
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
|
| BW check | Stable | X | X | X | X |
|
|
|
|
|
| Tracable Log | Stable | X | X | X | X |
|
|
|
|
|
|
|
|
|
|
### Docs
|
|
|
|
|
#### Docs
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
|
| Demos | Stable | X | X | X | X |
|
|
|
|
|
| WIKI(EN+CN) | Stable | EN only | X | X | Stable |
|
|
|
|
|
|
|
|
|
|
### Others
|
|
|
|
|
#### Others
|
|
|
|
|
|
|
|
|
|
| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
|
|
|
|
|
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
|
|
@ -317,7 +323,7 @@ Remark:
|
|
|
|
|
1. Security: To allow or deny stream publish or play.
|
|
|
|
|
1. Reload: Nginx supports reload, but not nginx-rtmp.
|
|
|
|
|
|
|
|
|
|
## Releases
|
|
|
|
|
### Releases
|
|
|
|
|
|
|
|
|
|
* 2015-09-14, [Release v2.0a1][r2.0a1], 2.0 alpha1, 2.0.189, 89269 lines.<br/>
|
|
|
|
|
* 2015-08-23, [Release v2.0a0][r2.0a0], 2.0 alpha0, 2.0.185, 89022 lines.<br/>
|
|
|
|
@ -345,7 +351,7 @@ Remark:
|
|
|
|
|
* 2013-10-23, [Release v0.1][r0.1], support [rtmp FMLE/FFMPEG publish][v1_CN_DeliveryRTMP], vp6. 8287 lines.<br/>
|
|
|
|
|
* 2013-10-17, Created.<br/>
|
|
|
|
|
|
|
|
|
|
## History
|
|
|
|
|
### History
|
|
|
|
|
|
|
|
|
|
* v3.0, 2015-09-19, support amf0 and json to convert with each other.
|
|
|
|
|
* v3.0, 2015-09-19, json objects support dumps to string.
|
|
|
|
@ -676,7 +682,7 @@ Remark:
|
|
|
|
|
* v0.1, 2013-10-18, support rtmp message2chunk protocol(send\_message).
|
|
|
|
|
* v0.1, 2013-10-17, support rtmp chunk2message protocol(recv\_message).
|
|
|
|
|
|
|
|
|
|
## Performance
|
|
|
|
|
### Performance
|
|
|
|
|
|
|
|
|
|
Performance benchmark history, on virtual box.
|
|
|
|
|
|
|
|
|
@ -684,7 +690,7 @@ Performance benchmark history, on virtual box.
|
|
|
|
|
* See also: [Performance for RaspberryPi][v1_CN_RaspberryPi]
|
|
|
|
|
* About multiple-process performance, read [srs-dolphin][srs-dolphin].
|
|
|
|
|
|
|
|
|
|
### Play RTMP benchmark
|
|
|
|
|
#### Play RTMP benchmark
|
|
|
|
|
|
|
|
|
|
The play RTMP benchmark by [SB][srs-bench]:
|
|
|
|
|
|
|
|
|
@ -704,7 +710,7 @@ The play RTMP benchmark by [SB][srs-bench]:
|
|
|
|
|
| 2014-12-05 | 2.0.57 | 9.0k(9000) | players | 90% | 468MB | [code][p11] |
|
|
|
|
|
| 2014-12-07 | 2.0.67 | 10k(10000) | players | 95% | 656MB | [code][p12] |
|
|
|
|
|
|
|
|
|
|
### Publish RTMP benchmark
|
|
|
|
|
#### Publish RTMP benchmark
|
|
|
|
|
|
|
|
|
|
The publish RTMP benchmark by [SB][srs-bench]:
|
|
|
|
|
|
|
|
|
@ -720,7 +726,7 @@ The publish RTMP benchmark by [SB][srs-bench]:
|
|
|
|
|
| 2014-12-04 | 2.0.51 | 2.5k(2500) | publishers | 91% | 259MB | [code][p4] |
|
|
|
|
|
| 2014-12-04 | 2.0.52 | 4.0k(4000) | publishers | 80% | 331MB | [code][p5] |
|
|
|
|
|
|
|
|
|
|
### Play HTTP FLV benchmark
|
|
|
|
|
#### Play HTTP FLV benchmark
|
|
|
|
|
|
|
|
|
|
The play HTTP FLV benchmark by [SB][srs-bench]:
|
|
|
|
|
|
|
|
|
@ -733,7 +739,7 @@ The play HTTP FLV benchmark by [SB][srs-bench]:
|
|
|
|
|
| 2014-05-24 | 2.0.170 | 3.0k(3000) | players | 89% | 96MB | [code][p19] |
|
|
|
|
|
| 2014-05-25 | 2.0.171 | 6.0k(6000) | players | 84% | 297MB | [code][p20] |
|
|
|
|
|
|
|
|
|
|
### Latency benchmark
|
|
|
|
|
#### Latency benchmark
|
|
|
|
|
|
|
|
|
|
The latency between encoder and player with realtime config([CN][v2_CN_LowLatency], [EN][v2_EN_LowLatency]):
|
|
|
|
|
|
|
|
|
|
@ -748,7 +754,7 @@ We use FMLE as encoder for benchmark. The latency of server is 0.1s+,
|
|
|
|
|
and the bottleneck is the encoder. For more information, read
|
|
|
|
|
[bug #257][bug #257-c0].
|
|
|
|
|
|
|
|
|
|
### HLS overhead
|
|
|
|
|
#### HLS overhead
|
|
|
|
|
|
|
|
|
|
About the HLS overhead of SRS, we compare the overhead to FLV by remux the HLS to FLV by ffmpeg.
|
|
|
|
|
|
|
|
|
@ -783,7 +789,7 @@ SRS always use the most simple architecture to support complex transaction.
|
|
|
|
|
|
|
|
|
|
### System Architecture
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
```
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
| Application |
|
|
|
|
|
| Origin/Edge/HTTP-FLV/StreamCaster |
|
|
|
|
@ -797,11 +803,11 @@ SRS always use the most simple architecture to support complex transaction.
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
| All Linux/Unix(RHEL,CentOS,Ubuntu,Fedora...) |
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
</pre>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Modularity Architecture
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
```
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
| Main(srs/ingest-hls/librtmp) |
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
@ -815,7 +821,7 @@ SRS always use the most simple architecture to support complex transaction.
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
| Core(depends only on system apis) |
|
|
|
|
|
+------------------------------------------------------+
|
|
|
|
|
</pre>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Remark:
|
|
|
|
|
|
|
|
|
@ -823,7 +829,7 @@ Remark:
|
|
|
|
|
|
|
|
|
|
### Stream Architecture
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
```
|
|
|
|
|
+---------+ +----------+
|
|
|
|
|
| Publish | | Deliver |
|
|
|
|
|
+---|-----+ +----|-----+
|
|
|
|
@ -852,7 +858,7 @@ Remark:
|
|
|
|
|
| ......) | | |
|
|
|
|
|
+----------------------+-------------------------+----------------+
|
|
|
|
|
|
|
|
|
|
</pre>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Remark:
|
|
|
|
|
|
|
|
|
@ -865,6 +871,7 @@ Remark:
|
|
|
|
|
Beijing, 2013.10<br/>
|
|
|
|
|
Winlin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[p1]: https://github.com/simple-rtmp-server/srs/commit/787ab674e38734ea8e0678101614fdcd84645dc8
|
|
|
|
|
[p2]: https://github.com/simple-rtmp-server/srs/commit/f35ec2155b1408d528a9f37da7904c9625186bcf
|
|
|
|
|
[p3]: https://github.com/simple-rtmp-server/srs/commit/29324fab469e0f7cef9ad04ffdbce832ac7dd9ff
|
|
|
|
@ -947,6 +954,7 @@ Winlin
|
|
|
|
|
[v2_EN_Home]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_Home
|
|
|
|
|
[donation0]: http://winlinvip.github.io/srs.release/donation/index.html
|
|
|
|
|
[donation1]: http://www.ossrs.net/srs.release/donation/index.html
|
|
|
|
|
[donation2]: http://www.ossrs.net/srs.release/donation/paypal.html
|
|
|
|
|
[donations]: https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt
|
|
|
|
|
|
|
|
|
|
[v2_CN_Build]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Build
|
|
|
|
@ -1261,6 +1269,7 @@ Winlin
|
|
|
|
|
[more0]: http://winlinvip.github.io/srs.release/releases/
|
|
|
|
|
[more1]: http://www.ossrs.net/srs.release/releases/
|
|
|
|
|
|
|
|
|
|
[mirrors]: https://github.com/simple-rtmp-server/srs/tree/develop#mirrors
|
|
|
|
|
[branch1]: https://github.com/simple-rtmp-server/srs/tree/1.0release
|
|
|
|
|
[branch2]: https://github.com/simple-rtmp-server/srs/tree/2.0release
|
|
|
|
|
[release2]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#release20
|
|
|
|
|