mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Refine README
This commit is contained in:
parent
dfb0887e1d
commit
d51d1f7d8f
1 changed files with 16 additions and 179 deletions
195
README.md
195
README.md
|
@ -180,7 +180,7 @@ For external services to work with SRS:
|
||||||
|
|
||||||
## Chnagelogs
|
## Chnagelogs
|
||||||
|
|
||||||
Please read [CHANGELOG](CHANGELOG).
|
Please read [CHANGELOG](CHANGELOG.md#chnagelog).
|
||||||
|
|
||||||
## Releases
|
## Releases
|
||||||
|
|
||||||
|
@ -240,104 +240,8 @@ Please read [CHANGELOG](CHANGELOG).
|
||||||
|
|
||||||
## Compare
|
## Compare
|
||||||
|
|
||||||
Comparing with other media servers, SRS is much better and stronger, for details please read Product([CN][v4_CN_Compare]/[EN][v4_EN_Compare]).
|
Comparing with other media servers, SRS is much better and stronger, for details please
|
||||||
|
read Product([CN][v4_CN_Compare]/[EN][v4_EN_Compare]).
|
||||||
<a name="stream-delivery"></a>
|
|
||||||
**Stream Delivery**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| RTMP | Stable | Stable | Stable | Stable | Stable |
|
|
||||||
| HLS | Stable | Stable | X | Stable | Stable |
|
|
||||||
| HTTP FLV | Stable | X | X | X | X |
|
|
||||||
| HLS(aonly) | Stable | X | X | Stable | Stable |
|
|
||||||
| HDS | Experiment| X | X | Stable | Stable |
|
|
||||||
| MPEG-DASH | Experiment| X | X | X | X |
|
|
||||||
| SRT | Experiment| X | X | X | Stable |
|
|
||||||
| HTTP Server | Stable | Stable | X | X | Stable |
|
|
||||||
|
|
||||||
<a name="cluster"></a>
|
|
||||||
**Cluster**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| RTMP Edge | Stable | X | X | Stable | X |
|
|
||||||
| RTMP Backup | Stable | X | X | X | X |
|
|
||||||
| VHOST | Stable | X | X | Stable | Stable |
|
|
||||||
| Reload | Stable | X | X | X | X |
|
|
||||||
| Forward | Stable | X | X | X | X |
|
|
||||||
| ATC | Stable | X | X | X | X |
|
|
||||||
| Docker | Stable | X | X | X | X |
|
|
||||||
|
|
||||||
<a name="stream-service"></a>
|
|
||||||
**Stream Service**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| DVR | Stable | Stable | X | X | Stable |
|
|
||||||
| DVR API | Stable | Stable | X | X | X |
|
|
||||||
| DVR MP4 | Stable | X | X | X | X |
|
|
||||||
| EXEC | Stable | Stable | X | X | X |
|
|
||||||
| Transcode | Stable | X | X | X | Stable |
|
|
||||||
| HTTP API | Stable | Stable | X | X | Stable |
|
|
||||||
| HTTP RAW API | Stable | X | X | X | X |
|
|
||||||
| HTTP hooks | Stable | X | X | X | X |
|
|
||||||
| GopCache | Stable | X | X | Stable | X |
|
|
||||||
| Security | Stable | Stable | X | X | Stable |
|
|
||||||
| Token Traverse| Stable | X | X | Stable | X |
|
|
||||||
|
|
||||||
<a name="efficiency"></a>
|
|
||||||
**Efficiency**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| Concurrency | 7.5k | 3k | 2k | 2k | 3k |
|
|
||||||
|MultipleProcess| [Stable][v4_CN_ReusePort] | Stable | X | X | X |
|
|
||||||
| RTMP Latency| 0.1s | 3s | 3s | 3s | 3s |
|
|
||||||
| HLS Latency | 10s | 30s | X | 30s | 30s |
|
|
||||||
|
|
||||||
<a name="stream-caster"></a>
|
|
||||||
**Stream Caster**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| Ingest | Stable | X | X | X | X |
|
|
||||||
| Push MPEGTS | Experiment| X | X | X | Stable |
|
|
||||||
| Push RTSP | Experiment| X | Stable | X | Stable |
|
|
||||||
| Push HTTP FLV | Experiment| X | X | X | X |
|
|
||||||
|
|
||||||
<a name="debug-system"></a>
|
|
||||||
**Debug System**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| BW check | Stable | X | X | X | X |
|
|
||||||
| Tracable Log | Stable | X | X | X | X |
|
|
||||||
|
|
||||||
<a name="docs"></a>
|
|
||||||
**Docs**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| Demos | Stable | X | X | X | X |
|
|
||||||
| WIKI(EN+CN) | Stable | EN only | X | X | Stable |
|
|
||||||
|
|
||||||
<a name="others"></a>
|
|
||||||
**Others**
|
|
||||||
|
|
||||||
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|
|
||||||
| ----------- | ------- | ----- | --------- | -------- | ------ |
|
|
||||||
| ARM/MIPS | Stable | Stable | X | X | X |
|
|
||||||
| Client Library| Stable | X | X | X | X |
|
|
||||||
|
|
||||||
Remark:
|
|
||||||
|
|
||||||
1. Concurrency: We only benchmark the concurrency of single process.
|
|
||||||
1. MultipleProcess: SRS supports multiple processes by [go-oryx][oryx].
|
|
||||||
1. HLS aonly: HLS supports audio only mode without video stream.
|
|
||||||
1. BW check: The bandwidth check feature is used to detect the bandwidth between server and client.
|
|
||||||
1. Security: The security includes access control, token authentication and referer check.
|
|
||||||
1. Reload: SRS and Nginx supports reload, but nginx-rtmp doesn't.
|
|
||||||
|
|
||||||
## Performance
|
## Performance
|
||||||
|
|
||||||
|
@ -457,99 +361,30 @@ We used FMLE as encoder for benchmark. The latency of server was 0.1s+,
|
||||||
and the bottleneck was the encoder. For more information, read
|
and the bottleneck was the encoder. For more information, read
|
||||||
[bug #257][bug #257-c0].
|
[bug #257][bug #257-c0].
|
||||||
|
|
||||||
<a name="hls-overhead"></a>
|
|
||||||
**HLS overhead**
|
|
||||||
|
|
||||||
About the overhead of HLS overhead, we compared FFMPEG and SRS.
|
|
||||||
|
|
||||||
| Bitrate | Duration | FLV(KB) | HLS(KB) | Overhead |
|
|
||||||
| ------- | -------- | ------- | -------- | --------- |
|
|
||||||
| 275kbps | 600s | 11144 | 12756 | 14.46% |
|
|
||||||
| 260kbps | 1860s | 59344 | 68004 | 14.59% |
|
|
||||||
| 697kbps | 60s | 5116 | 5476 | 7.03% |
|
|
||||||
| 565kbps | 453s | 31316 | 33544 | 7.11% |
|
|
||||||
| 565kbps | 1813s | 125224 | 134140 | 7.12% |
|
|
||||||
| 861kbps | 497s | 52316 | 54924 | 4.98% |
|
|
||||||
| 857kbps | 1862s | 195008 | 204768 | 5.00% |
|
|
||||||
| 1301kbps | 505s | 80320 | 83676 | 4.17% |
|
|
||||||
| 1312kbps | 1915s | 306920 | 319680 | 4.15% |
|
|
||||||
| 2707kbps | 600s | 198356 | 204560 | 3.12% |
|
|
||||||
| 2814kbps | 1800s | 618456 | 637660 | 3.10% |
|
|
||||||
| 2828kbps | 60s | 20716 | 21356 | 3.08% |
|
|
||||||
| 2599kbps | 307s | 97580 | 100672 | 3.16% |
|
|
||||||
| 2640kbps | 1283s | 413880 | 426912 | 3.14% |
|
|
||||||
| 5254kbps | 71s | 45832 | 47056 | 2.67% |
|
|
||||||
| 5147kbps | 370s | 195040 | 200280 | 2.68% |
|
|
||||||
| 5158kbps | 1327s | 835664 | 858092 | 2.68% |
|
|
||||||
|
|
||||||
The HLS overhead is calc by: (HLS - FLV) / FLV * 100%.
|
|
||||||
|
|
||||||
The overhead should be larger than this benchmark(48kbps audio is best overhead), for we fix the [#512][bug #512].
|
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
SRS always use the simplest architecture to solve complex domain problems.
|
The stream architecture of SRS.
|
||||||
|
|
||||||
* System arch: the system structure and arch.
|
|
||||||
* Modularity arch: the main modularity of SRS.
|
|
||||||
* Stream arch: the stream dispatch arch of SRS.
|
|
||||||
|
|
||||||
## System Architecture
|
|
||||||
|
|
||||||
```
|
```
|
||||||
+------------------------------------------------------+
|
+----------+ +----------+
|
||||||
| Application |
|
| Upstream | | Deliver |
|
||||||
| Origin/Edge/HTTP-FLV/StreamCaster |
|
+---|------+ +----|-----+
|
||||||
+---------------+---------------+-----------+----------+
|
+---+------------------+------+---------------------+----------------+
|
||||||
| RAW API/ | EXEC/ | DVR/HLS | FLV/TS/ |
|
|
||||||
| API/hook | Transcoder | HDS/DASH | AMF0/JSON|
|
|
||||||
+---------------+---------------+-----------+ RTMP/RTSP|
|
|
||||||
| http-parser | FFMPEG/x264 | NGINX/ts | protocol |
|
|
||||||
+---------------+---------------+-----------+----------+
|
|
||||||
| Network(state-threads) |
|
|
||||||
+------------------------------------------------------+
|
|
||||||
| All Linux/Unix(RHEL,CentOS,Ubuntu,Fedora...) |
|
|
||||||
+------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
## Modularity Architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
+--------------------+---------------------------------+
|
|
||||||
| SRS/SRT server | Programs in Main |
|
|
||||||
+--------------------+-------+-------------------------+
|
|
||||||
| App(For SRS) | Modules(1) |
|
|
||||||
+----------------------------+-------------------------+
|
|
||||||
| Protocol Stack(RTMP/HTTP/RTSP/JSON/AMF/Service) |
|
|
||||||
+------------------------------------------------------+
|
|
||||||
| Kernel(File, Codec, Stream, LB services) |
|
|
||||||
+------------------------------------------------------+
|
|
||||||
| Core(Macros and very low-level APIs) |
|
|
||||||
+------------------------------------------------------+
|
|
||||||
```
|
|
||||||
|
|
||||||
Remark:
|
|
||||||
|
|
||||||
1. Modules: SRS supports code-level modularity, read [modules][modules].
|
|
||||||
|
|
||||||
## Stream Architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
+---------+ +----------+
|
|
||||||
| Publish | | Deliver |
|
|
||||||
+---|-----+ +----|-----+
|
|
||||||
+----------------------+----------------------------+----------------+
|
|
||||||
| Input | SRS(Simple RTMP Server) | Output |
|
| Input | SRS(Simple RTMP Server) | Output |
|
||||||
+----------------------+----------------------------+----------------+
|
+----------------------+----------------------------+----------------+
|
||||||
| | +-> DASH ----------------+-> DASH player |
|
| | +-> DASH ----------------+-> DASH player |
|
||||||
| Encoder(1) | +-> RTMP/HDS -----------+-> Flash player |
|
| Encoder(1) | +-> RTMP/HDS -----------+-> Flash player |
|
||||||
| (FMLE,FFMPEG, -rtmp-+->-+-> HLS/HTTP ------------+-> M3U8 player |
|
| (FMLE,OBS, --RTMP-+->-+-> HLS/HTTP ------------+-> M3U8 player |
|
||||||
| Flash,XSPLIT, | +-> FLV/MP3/Aac/Ts ------+-> HTTP player |
|
| FFmpeg,XSPLIT, | +-> FLV/MP3/Aac/Ts ------+-> HTTP player |
|
||||||
| ......) | +-> Fowarder ------------+-> RTMP server |
|
| ......) | +-> Fowarder ------------+-> RTMP server |
|
||||||
| | +-> Transcoder ----------+-> RTMP server |
|
| | +-> Transcoder ----------+-> RTMP server |
|
||||||
| | +-> EXEC(5) -------------+-> External app |
|
| | +-> EXEC(5) -------------+-> External app |
|
||||||
| | +-> DVR -----------------+-> FLV file |
|
| | +-> DVR -----------------+-> FLV file |
|
||||||
| | +-> BandwidthTest -------+-> Flash |
|
| | +-> BandwidthTest -------+-> Flash |
|
||||||
|
| | +-> WebRTC --------------+-> Flash |
|
||||||
|
+----------------------+ | |
|
||||||
|
| WebRTC Client | +--> RTMP | |
|
||||||
|
| (H5,Native...) --RTC-+---+---> WebRTC ------------+-> WebRTC Client|
|
||||||
+----------------------+ | |
|
+----------------------+ | |
|
||||||
| MediaSource(2) | | |
|
| MediaSource(2) | | |
|
||||||
| (RTSP,FILE, | | |
|
| (RTSP,FILE, | | |
|
||||||
|
@ -591,6 +426,8 @@ Maintainers of SRS project:
|
||||||
* [John](https://github.com/xiaozhihong): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC) module.
|
* [John](https://github.com/xiaozhihong): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC) module.
|
||||||
* [B.P.Y(Bepartofyou)](https://github.com/Bepartofyou): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC) module.
|
* [B.P.Y(Bepartofyou)](https://github.com/Bepartofyou): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC) module.
|
||||||
* [Lixin](https://github.com/xialixin): Focus on [GB28181](https://github.com/ossrs/srs/issues/1500) module.
|
* [Lixin](https://github.com/xialixin): Focus on [GB28181](https://github.com/ossrs/srs/issues/1500) module.
|
||||||
|
* [Mozhan](https://github.com/lipeng19811218): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC) module.
|
||||||
|
* [Jinxue](https://github.com/chen-guanghua): Focus on [WebRTC](https://github.com/simple-rtmp-server/srs/wiki/v4_CN_WebRTC) module.
|
||||||
|
|
||||||
A big THANK YOU goes to:
|
A big THANK YOU goes to:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue