diff --git a/README.md b/README.md index a7c262af4..9ce4b2b4c 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ #Simple-RTMP-Server -================== SRS(SIMPLE RTMP Server) over state-threads created in 2013.10. @@ -42,7 +41,7 @@ A big THANK YOU goes to: * [FFMPEG](http://ffmpeg.org/) and [libx264](http://www.videolan.org/) group for srs to use to transcode. * Guido van Rossum for creating Python for api-server for srs. -### Usage +## Usage Step 1: get SRS
@@ -70,12 +69,12 @@ cd simple-rtmp-server/trunk
 [Usage: Solution using SRS?](https://github.com/winlinvip/simple-rtmp-server/wiki/Sample)
[Usage: Why SRS?](https://github.com/winlinvip/simple-rtmp-server/wiki/Product)
-### System Requirements +## System Requirements Supported operating systems and hardware: * All Linux , both 32 and 64 bits * All handware. -### Summary +## Summary 01. Simple: also stable enough.
02. [High-performance](https://github.com/winlinvip/simple-rtmp-server/wiki/Performance): single-thread, async socket, event/st-thread driven.
03. With RTMP edge server, support origin server.
@@ -119,7 +118,7 @@ Supported operating systems and hardware: 41. [no-plan] Support RTMPT, http to tranverse firewalls
42. [no-plan] Support file source, transcoding file to live stream
-### Performance +## Performance 1. 300 connections, 150Mbps, 500kbps, CPU 18.8%, MEM 5956KB. 2. 600 connections, 300Mbps, 500kbps, CPU 32.1%, MEM 9808KB. 3. 900 connections, 450Mbps, 500kbps, CPU 49.9%, MEM 11MB. @@ -143,7 +142,7 @@ usr sys idl wai hiq siq| read writ| recv send| in out | int csw
See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-server/wiki/Performance) -### Releases +## Releases * 2013-12-25, [Release v0.9](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.9), support bandwidth test, player/encoder/chat demos. 20926 lines.
* 2013-12-08, [Release v0.8](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.8), support http hooks callback, update [st_load](https://github.com/winlinvip/st-load). 19186 lines.
* 2013-12-03, [Release v0.7](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.7), support live stream transcoding. 17605 lines.
@@ -155,7 +154,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv * 2013-10-23, [Release v0.1](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.1), support rtmp FMLE/FFMPEG publish, vp6. 8287 lines.
* 2013-10-17, Created.
-### Compare +## Compare * SRS v0.9: 20926 lines. player/encoder/chat demos. bandwidth test for encoder/CDN.
* SRS v0.8: 19186 lines. implements http hooks refer to [nginx-rtmp](https://github.com/arut/nginx-rtmp-module).
* SRS v0.7: 17605 lines. implements transcoding(FFMPEG) feature refer to [wowza](http://www.wowza.com).
@@ -168,7 +167,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv * nginx-rtmp v1.0.4: 26786 lines
* nginx v1.5.0: 139524 lines
-### History +## History * v1.0, 2014-03-21, write pid to ./objs/srs.pid. * v1.0, 2014-03-20, refine hls code, support pure audio HLS. * v1.0, 2014-03-19, add vn/an for FFMPEG to drop video/audio for radio stream. @@ -270,8 +269,19 @@ on_connect/close/publish/unpublish/play/stop. * v0.1, 2013-10-18, support rtmp message2chunk protocol(send\_message). * v0.1, 2013-10-17, support rtmp chunk2message protocol(recv\_message). -### Architecture -System Architecture: +## Architecture + +srs always use the most simple architecture to support complex transaction. +* System arch: the system structure and arch. +* Modularity arch: the main modularity of srs. +* Stream arch: the stream dispatch arch of srs. +* RTMP cluster arch: the RTMP origin and edge cluster arch. +* Multiple processes arch (by wenjie): the multiple process of srs. +* CLI arch: the cli arch for srs, api to manage srs. +* Bandwidth specification: the bandwidth test specification of srs. + +### System Architecture +
 +------------------------------------------------------+
 |             SRS(Simple RTMP Server)                  |
@@ -284,7 +294,9 @@ System Architecture:
 |      All Linux(RHEL,CentOS,Ubuntu,Fedora...)         |
 +------------------------------------------------------+
 
-Modularity Architecture: + +### Modularity Architecture +
 +------------------------------------------------------+
 |             Main(srs/bandwidth/librtmp)              |
@@ -298,7 +310,9 @@ Modularity Architecture:
 |         Core(depends only on system apis)            |
 +------------------------------------------------------+
 
-Stream Architecture: + +### Stream Architecture +
                +---------+              +----------+
                + Publish +              +  Deliver |
@@ -324,8 +338,11 @@ Remark:
 (1) Encoder: encoder must push RTMP stream to SRS server.
 (2) MediaSource: any media source, which can be ingest by ffmpeg.
 
-(plan) RTMP cluster(origin/edge) Architecture:
+ +### (plan) RTMP cluster(origin/edge) Architecture + Remark: cluster over forward, see [Cluster](https://github.com/winlinvip/simple-rtmp-server/wiki/Cluster) +
 +---------+       +-----------------+     +-----------------------+ 
 + Encoder +--+-->-+  SRS(RTMP Edge) +--->-+     (RTMP Origin)     | 
@@ -348,7 +365,9 @@ Schema#1: Any RTMP encoder push RTMP stream to RTMP (origin/edge)server,
 Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS 
     RTMP Edge server), then delivery to Client.
 
-(plan) SRS Multiple processes Architecture(design by wenjie):
+ +### (plan) SRS Multiple processes Architecture(design by wenjie) +
                  +---------------+              +--------+
                  | upnode server |              + client +
@@ -380,7 +399,9 @@ Remark:
     will collect informations from all stream process, master process
     only send signals to child processes.
 
-CLI Architecture: + +### CLI Architecture +
                        +---------+
                     +--+ stream1 +---------+
@@ -402,7 +423,9 @@ Remark:
 (5) cli connect to each stream/back-source process to get api data,
     cli analysis and summary the data, return to user.
 
-Bandwidth Test Workflow: + +### Bandwidth Test Workflow +
    +------------+                    +----------+
    |  Client    |                    |  Server  |