winlin

refine readme

正在显示 1 个修改的文件 包含 39 行增加16 行删除
1 #Simple-RTMP-Server 1 #Simple-RTMP-Server
2 -==================  
3 2
4 SRS(SIMPLE RTMP Server) over state-threads created in 2013.10. 3 SRS(SIMPLE RTMP Server) over state-threads created in 2013.10.
5 4
@@ -42,7 +41,7 @@ A big THANK YOU goes to: @@ -42,7 +41,7 @@ A big THANK YOU goes to:
42 * [FFMPEG](http://ffmpeg.org/) and [libx264](http://www.videolan.org/) group for srs to use to transcode. 41 * [FFMPEG](http://ffmpeg.org/) and [libx264](http://www.videolan.org/) group for srs to use to transcode.
43 * Guido van Rossum for creating Python for api-server for srs. 42 * Guido van Rossum for creating Python for api-server for srs.
44 43
45 -### Usage 44 +## Usage
46 45
47 <strong>Step 1:</strong> get SRS <br/> 46 <strong>Step 1:</strong> get SRS <br/>
48 <pre> 47 <pre>
@@ -70,12 +69,12 @@ cd simple-rtmp-server/trunk @@ -70,12 +69,12 @@ cd simple-rtmp-server/trunk
70 [Usage: Solution using SRS?](https://github.com/winlinvip/simple-rtmp-server/wiki/Sample)<br/> 69 [Usage: Solution using SRS?](https://github.com/winlinvip/simple-rtmp-server/wiki/Sample)<br/>
71 [Usage: Why SRS?](https://github.com/winlinvip/simple-rtmp-server/wiki/Product)<br/> 70 [Usage: Why SRS?](https://github.com/winlinvip/simple-rtmp-server/wiki/Product)<br/>
72 71
73 -### System Requirements 72 +## System Requirements
74 Supported operating systems and hardware: 73 Supported operating systems and hardware:
75 * All Linux , both 32 and 64 bits 74 * All Linux , both 32 and 64 bits
76 * All handware. 75 * All handware.
77 76
78 -### Summary 77 +## Summary
79 01. Simple: also stable enough.<br/> 78 01. Simple: also stable enough.<br/>
80 02. [High-performance](https://github.com/winlinvip/simple-rtmp-server/wiki/Performance): single-thread, async socket, event/st-thread driven.<br/> 79 02. [High-performance](https://github.com/winlinvip/simple-rtmp-server/wiki/Performance): single-thread, async socket, event/st-thread driven.<br/>
81 03. With RTMP edge server, support origin server.<br/> 80 03. With RTMP edge server, support origin server.<br/>
@@ -119,7 +118,7 @@ Supported operating systems and hardware: @@ -119,7 +118,7 @@ Supported operating systems and hardware:
119 41. [no-plan] Support RTMPT, http to tranverse firewalls<br/> 118 41. [no-plan] Support RTMPT, http to tranverse firewalls<br/>
120 42. [no-plan] Support file source, transcoding file to live stream<br/> 119 42. [no-plan] Support file source, transcoding file to live stream<br/>
121 120
122 -### Performance 121 +## Performance
123 1. 300 connections, 150Mbps, 500kbps, CPU 18.8%, MEM 5956KB. 122 1. 300 connections, 150Mbps, 500kbps, CPU 18.8%, MEM 5956KB.
124 2. 600 connections, 300Mbps, 500kbps, CPU 32.1%, MEM 9808KB. 123 2. 600 connections, 300Mbps, 500kbps, CPU 32.1%, MEM 9808KB.
125 3. 900 connections, 450Mbps, 500kbps, CPU 49.9%, MEM 11MB. 124 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 @@ -143,7 +142,7 @@ usr sys idl wai hiq siq| read writ| recv send| in out | int csw
143 </pre> 142 </pre>
144 See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-server/wiki/Performance) 143 See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-server/wiki/Performance)
145 144
146 -### Releases 145 +## Releases
147 * 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.<br/> 146 * 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.<br/>
148 * 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.<br/> 147 * 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.<br/>
149 * 2013-12-03, [Release v0.7](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.7), support live stream transcoding. 17605 lines.<br/> 148 * 2013-12-03, [Release v0.7](https://github.com/winlinvip/simple-rtmp-server/releases/tag/0.7), support live stream transcoding. 17605 lines.<br/>
@@ -155,7 +154,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv @@ -155,7 +154,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv
155 * 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.<br/> 154 * 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.<br/>
156 * 2013-10-17, Created.<br/> 155 * 2013-10-17, Created.<br/>
157 156
158 -### Compare 157 +## Compare
159 * SRS v0.9: 20926 lines. player/encoder/chat demos. bandwidth test for encoder/CDN.<br/> 158 * SRS v0.9: 20926 lines. player/encoder/chat demos. bandwidth test for encoder/CDN.<br/>
160 * SRS v0.8: 19186 lines. implements http hooks refer to [nginx-rtmp](https://github.com/arut/nginx-rtmp-module). <br/> 159 * SRS v0.8: 19186 lines. implements http hooks refer to [nginx-rtmp](https://github.com/arut/nginx-rtmp-module). <br/>
161 * SRS v0.7: 17605 lines. implements transcoding(FFMPEG) feature refer to [wowza](http://www.wowza.com). <br/> 160 * SRS v0.7: 17605 lines. implements transcoding(FFMPEG) feature refer to [wowza](http://www.wowza.com). <br/>
@@ -168,7 +167,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv @@ -168,7 +167,7 @@ See also: [Performance Test Guide](https://github.com/winlinvip/simple-rtmp-serv
168 * nginx-rtmp v1.0.4: 26786 lines <br/> 167 * nginx-rtmp v1.0.4: 26786 lines <br/>
169 * nginx v1.5.0: 139524 lines <br/> 168 * nginx v1.5.0: 139524 lines <br/>
170 169
171 -### History 170 +## History
172 * v1.0, 2014-03-21, write pid to ./objs/srs.pid. 171 * v1.0, 2014-03-21, write pid to ./objs/srs.pid.
173 * v1.0, 2014-03-20, refine hls code, support pure audio HLS. 172 * v1.0, 2014-03-20, refine hls code, support pure audio HLS.
174 * v1.0, 2014-03-19, add vn/an for FFMPEG to drop video/audio for radio stream. 173 * 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. @@ -270,8 +269,19 @@ on_connect/close/publish/unpublish/play/stop.
270 * v0.1, 2013-10-18, support rtmp message2chunk protocol(send\_message). 269 * v0.1, 2013-10-18, support rtmp message2chunk protocol(send\_message).
271 * v0.1, 2013-10-17, support rtmp chunk2message protocol(recv\_message). 270 * v0.1, 2013-10-17, support rtmp chunk2message protocol(recv\_message).
272 271
273 -### Architecture  
274 -System Architecture: 272 +## Architecture
  273 +
  274 +srs always use the most simple architecture to support complex transaction.
  275 +* System arch: the system structure and arch.
  276 +* Modularity arch: the main modularity of srs.
  277 +* Stream arch: the stream dispatch arch of srs.
  278 +* RTMP cluster arch: the RTMP origin and edge cluster arch.
  279 +* Multiple processes arch (by wenjie): the multiple process of srs.
  280 +* CLI arch: the cli arch for srs, api to manage srs.
  281 +* Bandwidth specification: the bandwidth test specification of srs.
  282 +
  283 +### System Architecture
  284 +
275 <pre> 285 <pre>
276 +------------------------------------------------------+ 286 +------------------------------------------------------+
277 | SRS(Simple RTMP Server) | 287 | SRS(Simple RTMP Server) |
@@ -284,7 +294,9 @@ System Architecture: @@ -284,7 +294,9 @@ System Architecture:
284 | All Linux(RHEL,CentOS,Ubuntu,Fedora...) | 294 | All Linux(RHEL,CentOS,Ubuntu,Fedora...) |
285 +------------------------------------------------------+ 295 +------------------------------------------------------+
286 </pre> 296 </pre>
287 -Modularity Architecture: 297 +
  298 +### Modularity Architecture
  299 +
288 <pre> 300 <pre>
289 +------------------------------------------------------+ 301 +------------------------------------------------------+
290 | Main(srs/bandwidth/librtmp) | 302 | Main(srs/bandwidth/librtmp) |
@@ -298,7 +310,9 @@ Modularity Architecture: @@ -298,7 +310,9 @@ Modularity Architecture:
298 | Core(depends only on system apis) | 310 | Core(depends only on system apis) |
299 +------------------------------------------------------+ 311 +------------------------------------------------------+
300 </pre> 312 </pre>
301 -Stream Architecture: 313 +
  314 +### Stream Architecture
  315 +
302 <pre> 316 <pre>
303 +---------+ +----------+ 317 +---------+ +----------+
304 + Publish + + Deliver | 318 + Publish + + Deliver |
@@ -324,8 +338,11 @@ Remark: @@ -324,8 +338,11 @@ Remark:
324 (1) Encoder: encoder must push RTMP stream to SRS server. 338 (1) Encoder: encoder must push RTMP stream to SRS server.
325 (2) MediaSource: any media source, which can be ingest by ffmpeg. 339 (2) MediaSource: any media source, which can be ingest by ffmpeg.
326 </pre> 340 </pre>
327 -(plan) RTMP cluster(origin/edge) Architecture:<br/> 341 +
  342 +### (plan) RTMP cluster(origin/edge) Architecture
  343 +
328 Remark: cluster over forward, see [Cluster](https://github.com/winlinvip/simple-rtmp-server/wiki/Cluster) 344 Remark: cluster over forward, see [Cluster](https://github.com/winlinvip/simple-rtmp-server/wiki/Cluster)
  345 +
329 <pre> 346 <pre>
330 +---------+ +-----------------+ +-----------------------+ 347 +---------+ +-----------------+ +-----------------------+
331 + Encoder +--+-->-+ SRS(RTMP Edge) +--->-+ (RTMP Origin) | 348 + Encoder +--+-->-+ SRS(RTMP Edge) +--->-+ (RTMP Origin) |
@@ -348,7 +365,9 @@ Schema#1: Any RTMP encoder push RTMP stream to RTMP (origin/edge)server, @@ -348,7 +365,9 @@ Schema#1: Any RTMP encoder push RTMP stream to RTMP (origin/edge)server,
348 Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS 365 Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS
349 RTMP Edge server), then delivery to Client. 366 RTMP Edge server), then delivery to Client.
350 </pre> 367 </pre>
351 -(plan) SRS Multiple processes Architecture(design by wenjie):<br/> 368 +
  369 +### (plan) SRS Multiple processes Architecture(design by wenjie)
  370 +
352 <pre> 371 <pre>
353 +---------------+ +--------+ 372 +---------------+ +--------+
354 | upnode server | + client + 373 | upnode server | + client +
@@ -380,7 +399,9 @@ Remark: @@ -380,7 +399,9 @@ Remark:
380 will collect informations from all stream process, master process 399 will collect informations from all stream process, master process
381 only send signals to child processes. 400 only send signals to child processes.
382 </pre> 401 </pre>
383 -CLI Architecture: 402 +
  403 +### CLI Architecture
  404 +
384 <pre> 405 <pre>
385 +---------+ 406 +---------+
386 +--+ stream1 +---------+ 407 +--+ stream1 +---------+
@@ -402,7 +423,9 @@ Remark: @@ -402,7 +423,9 @@ Remark:
402 (5) cli connect to each stream/back-source process to get api data, 423 (5) cli connect to each stream/back-source process to get api data,
403 cli analysis and summary the data, return to user. 424 cli analysis and summary the data, return to user.
404 </pre> 425 </pre>
405 -Bandwidth Test Workflow: 426 +
  427 +### Bandwidth Test Workflow
  428 +
406 <pre> 429 <pre>
407 +------------+ +----------+ 430 +------------+ +----------+
408 | Client | | Server | 431 | Client | | Server |