winlin

merge from 2.0

@@ -2,18 +2,12 @@ @@ -2,18 +2,12 @@
2 2
3 SRS/3.0,开发代号:[OuXuli](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#release30) 3 SRS/3.0,开发代号:[OuXuli](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#release30)
4 4
5 -SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。 5 +SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。<br/>
  6 +SRS is industrial-strength live streaming cluster, for the best conceptual integrity and the simplest implementation.
6 7
7 -<<<<<<< HEAD  
8 -Download from github.io:  
9 -[Centos6-x86_64](http://winlinvip.github.io/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.32.zip)  
10 -[more...](http://winlinvip.github.io/srs.release/releases/)  
11 -  
12 -Download from ossrs.net:  
13 -[Centos6-x86_64](http://www.ossrs.net/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.32.zip)  
14 -[more...](http://www.ossrs.net/srs.release/releases/)  
15 -  
16 -Contact by QQ or Skype, read [Contact](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Contact) 8 +Download from github.io: [Centos6-x86_64][centos0], [more...][more0]<br/>
  9 +Download from ossrs.net: [Centos6-x86_64][centos1], [more...][more1]<br/>
  10 +Contact by QQ or Skype, read [Contact][contact]
17 11
18 ## Why SRS? 12 ## Why SRS?
19 13
@@ -49,142 +43,6 @@ session-oriented log, exports client srs-librtmp, @@ -49,142 +43,6 @@ session-oriented log, exports client srs-librtmp,
49 with stream caster to push MPEGTS-over-UDP/RTSP to SRS, 43 with stream caster to push MPEGTS-over-UDP/RTSP to SRS,
50 provides EN/CN wiki and the most simple architecture. 44 provides EN/CN wiki and the most simple architecture.
51 45
52 -SRS focus on small problem domain, which is the most complex for all software(see OOAD).  
53 -Because of lack of deveoper resource, SRS only provides features which is the most popular  
54 -for internet. SRS is simple for and only for problem domain is simplified.  
55 -  
56 -SRS is a simple, RTMP(  
57 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP),  
58 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP)  
59 -),  
60 -HLS(  
61 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS),  
62 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS)  
63 -),  
64 -HDS(  
65 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHDS),  
66 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHDS)  
67 -),  
68 -HTTP(  
69 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_DeliveryHttpStream),  
70 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_DeliveryHttpStream)  
71 -),  
72 -high-performance(10k+ clients)(  
73 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance),  
74 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Performance)  
75 -),  
76 -low-latency(0.1s+)(  
77 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_LowLatency),  
78 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_LowLatency)  
79 -),  
80 -single processes, edge/origin live server,  
81 -x86/x64/arm(  
82 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm),  
83 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLinuxArm)  
84 -),  
85 -compile depends on st(  
86 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Architecture),  
87 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Architecture)  
88 -)(required),  
89 -[ssl](http://www.openssl.org/) and [http-parser](https://github.com/joyent/http-parser),  
90 -use [nginx](http://nginx.org/), [ffmpeg](http://ffmpeg.org/) and  
91 -[cherrypy](http://www.cherrypy.org/) as external tools. that is, only need st to run srs for  
92 -minimum run. see Build(  
93 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Build),  
94 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Build)  
95 -).  
96 -  
97 -SRS supports vhost(  
98 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost),  
99 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_RtmpUrlVhost)  
100 -),  
101 -rtmp(encoder push(  
102 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP),  
103 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP)  
104 -),  
105 -client/edge(  
106 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge),  
107 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Edge),  
108 -) pull),  
109 -ingester(srs pull)(  
110 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest),  
111 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Ingest)  
112 -),  
113 -HLS(  
114 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS),  
115 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS)  
116 -),  
117 -HLS audio only(  
118 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS#hlsaudioonly),  
119 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS#hlsaudioonly)  
120 -),  
121 -transcoding(  
122 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),  
123 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)  
124 -),  
125 -forward(  
126 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),  
127 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)  
128 -),  
129 -http hooks(  
130 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback),  
131 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPCallback)  
132 -),  
133 -http api(  
134 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi),  
135 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPApi)  
136 -),  
137 -http server(  
138 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPServer),  
139 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPServer)  
140 -),  
141 -dvr(  
142 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR),  
143 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DVR)  
144 -) and  
145 -SRS-librtmp(  
146 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp),  
147 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp)  
148 -).  
149 -  
150 -SRS-librtmp(  
151 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp),  
152 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp)  
153 -)  
154 -is a client library, only depends on c++ and socket, with  
155 -examples(  
156 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#srs-librtmp-examples),  
157 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#srs-librtmp-examples)  
158 -)(to play,  
159 -publish, ingest flv/rtmp, inject flv,  
160 -publish h264 raw stream(  
161 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-h264-raw-data),  
162 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-h264-raw-data)  
163 -),  
164 -exported as seperate project or single cpp file by configure(  
165 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#export-srs-librtmp),  
166 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#export-srs-librtmp)  
167 -).  
168 -SRS-librtmp(  
169 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp),  
170 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp)  
171 -)  
172 -provides apis to support RTMP, FLV, AMF0 and  
173 -h.264 raw stream(  
174 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-h264-raw-data),  
175 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-h264-raw-data)  
176 -).  
177 -  
178 -Report Bug: [https://github.com/simple-rtmp-server/srs/issues/new](https://github.com/simple-rtmp-server/srs/issues/new) <br/>  
179 -WebSite: [http://ossrs.net](http://ossrs.net) <br/>  
180 -Release: [http://winlinvip.github.io/srs.release](http://winlinvip.github.io/srs.release) <br/>  
181 -Blog: [http://blog.csdn.net/win_lin](http://blog.csdn.net/win_lin) <br/>  
182 -Wiki: [https://github.com/simple-rtmp-server/srs/wiki](https://github.com/simple-rtmp-server/srs/wiki) <br/>  
183 -StreamServers:[BLS](https://github.com/wenjiegit/Bull-Live-Server)/[BLE](https://github.com/wenjiegit/Bull-Live-Encoder),  
184 -[NGINX-RTMP](https://github.com/arut/nginx-rtmp-module), [CRTMPD](http://www.rtmpd.com/),  
185 -[RED5](http://www.red5.org/), [WOWZA](http://www.wowza.com/),  
186 -[FMS/AMS](http://www.adobe.com/products/adobe-media-server-standard.html)  
187 -  
188 ## AUTHORS 46 ## AUTHORS
189 47
190 There are three types of people that have contributed to the SRS project: 48 There are three types of people that have contributed to the SRS project:
@@ -193,58 +51,41 @@ PRIMARY response in NetConnection.connect and metadata. @@ -193,58 +51,41 @@ PRIMARY response in NetConnection.connect and metadata.
193 * CONTRIBUTORS: Submit patches, report bugs, add translations, help answer 51 * CONTRIBUTORS: Submit patches, report bugs, add translations, help answer
194 newbie questions, and generally make SRS that much better. 52 newbie questions, and generally make SRS that much better.
195 53
196 -About all PRIMARY, AUTHORS and CONTRIBUTORS, read  
197 -[AUTHORS.txt](https://github.com/simple-rtmp-server/srs/blob/develop/AUTHORS.txt). 54 +About all PRIMARY, AUTHORS and CONTRIBUTORS, read [AUTHORS.txt][authors].
198 55
199 A big THANK YOU goes to: 56 A big THANK YOU goes to:
200 -* All friends of SRS for [big supports](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#bigthanks).  
201 -* Genes amd Mabbott for creating [st](https://github.com/winlinvip/state-threads)([state-threads](http://sourceforge.net/projects/state-threads/)). 57 +* All friends of SRS for [big supports][bigthanks].
  58 +* Genes amd Mabbott for creating [st][st]([state-threads][st2]).
202 * Michael Talyanksy for introducing us to use st. 59 * Michael Talyanksy for introducing us to use st.
203 -* Roman Arutyunyan for creating [nginx-rtmp](https://github.com/arut/nginx-rtmp-module) for SRS to refer to.  
204 -* Joyent for creating [http-parser](https://github.com/joyent/http-parser) for http-api for SRS.  
205 -* Igor Sysoev for creating [nginx](http://nginx.org/) for SRS to refer to.  
206 -* [FFMPEG](http://ffmpeg.org/) and [libx264](http://www.videolan.org/) group for SRS to use to transcode. 60 +* Roman Arutyunyan for creating [nginx-rtmp][nginx-rtmp] for SRS to refer to.
  61 +* Joyent for creating [http-parser][http-parser] for http-api for SRS.
  62 +* Igor Sysoev for creating [nginx][nginx] for SRS to refer to.
  63 +* [FFMPEG][FFMPEG] and [libx264][libx264] group for SRS to use to transcode.
207 * Guido van Rossum for creating Python for api-server for SRS. 64 * Guido van Rossum for creating Python for api-server for SRS.
208 65
209 ## Mirrors 66 ## Mirrors
210 67
211 -Github: [https://github.com/simple-rtmp-server/srs](https://github.com/simple-rtmp-server/srs),  
212 -the GIT usage(  
213 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),  
214 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)  
215 -) 68 +Github: [https://github.com/simple-rtmp-server/srs][srs], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
216 69
217 -```bash 70 +```
218 git clone https://github.com/simple-rtmp-server/srs.git 71 git clone https://github.com/simple-rtmp-server/srs.git
219 ``` 72 ```
220 73
221 -CSDN: [https://code.csdn.net/winlinvip/srs-csdn](https://code.csdn.net/winlinvip/srs-csdn) ,  
222 -the GIT usage(  
223 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),  
224 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)  
225 -) 74 +CSDN: [https://code.csdn.net/winlinvip/srs-csdn][csdn], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
226 75
227 -```bash 76 +```
228 git clone https://code.csdn.net/winlinvip/srs-csdn.git 77 git clone https://code.csdn.net/winlinvip/srs-csdn.git
229 ``` 78 ```
230 79
231 -OSChina: [http://git.oschina.net/winlinvip/srs.oschina](http://git.oschina.net/winlinvip/srs.oschina) ,  
232 -the GIT usage(  
233 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),  
234 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)  
235 -) 80 +OSChina: [http://git.oschina.net/winlinvip/srs.oschina][oschina], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
236 81
237 -```bash 82 +```
238 git clone https://git.oschina.net/winlinvip/srs.oschina.git 83 git clone https://git.oschina.net/winlinvip/srs.oschina.git
239 ``` 84 ```
240 85
241 -Gitlab: [https://gitlab.com/winlinvip/srs-gitlab](https://gitlab.com/winlinvip/srs-gitlab) ,  
242 -the GIT usage(  
243 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git),  
244 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git)  
245 -) 86 +Gitlab: [https://gitlab.com/winlinvip/srs-gitlab][gitlab], the GIT usage([CN][v1_CN_Git], [EN][v1_EN_Git])
246 87
247 -```bash 88 +```
248 git clone https://gitlab.com/winlinvip/srs-gitlab.git 89 git clone https://gitlab.com/winlinvip/srs-gitlab.git
249 ``` 90 ```
250 91
@@ -274,82 +115,43 @@ cd simple-rtmp-server/trunk @@ -274,82 +115,43 @@ cd simple-rtmp-server/trunk
274 </pre> 115 </pre>
275 116
276 <strong>See also:</strong> 117 <strong>See also:</strong>
277 -* Usage: How to delivery RTMP?(  
278 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRTMP),  
279 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleRTMP)  
280 -)  
281 -* Usage: How to delivery HLS?(  
282 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHLS),  
283 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleHLS)  
284 -)  
285 -* Usage: How to delivery HLS for other codec?(  
286 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleTranscode2HLS),  
287 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleTranscode2HLS)  
288 -)  
289 -* Usage: How to transode RTMP stream by SRS?(  
290 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleFFMPEG),  
291 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleFFMPEG)  
292 -)  
293 -* Usage: How to forward stream to other server?(  
294 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleForward),  
295 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleForward)  
296 -)  
297 -* Usage: How to deploy low lantency application?(  
298 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRealtime),  
299 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleRealtime)  
300 -)  
301 -* Usage: How to deploy SRS on ARM?(  
302 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleARM),  
303 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleARM)  
304 -)  
305 -* Usage: How to ingest file/stream/device to SRS?(  
306 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleIngest),  
307 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleIngest)  
308 -)  
309 -* Usage: How to use SRS-HTTP-server to delivery HTTP/HLS stream?(  
310 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHTTP),  
311 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleHTTP)  
312 -)  
313 -* Usage: How to show the demo of SRS?(  
314 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo),  
315 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleDemo)  
316 -)  
317 -* Usage: How to publish h.264 raw stream to SRS?(  
318 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-h264-raw-data),  
319 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-h264-raw-data)  
320 -)  
321 -* Usage: Solution using SRS?(  
322 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Sample),  
323 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Sample)  
324 -)  
325 -* Usage: Why SRS?(  
326 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product),  
327 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Product)  
328 -) 118 +* Usage: How to delivery RTMP?([CN][v1_CN_SampleRTMP], [EN][v1_EN_SampleRTMP])
  119 +* Usage: How to delivery HTTP FLV Live Streaming?([CN][v2_CN_SampleHttpFlv], [EN][v2_EN_SampleHttpFlv])
  120 +* Usage: How to delivery HLS?([CN][v1_CN_SampleHLS], [EN][v1_EN_SampleHLS])
  121 +* Usage: How to delivery HLS for other codec?([CN][v1_CN_SampleTranscode2HLS], [EN][v1_EN_SampleTranscode2HLS])
  122 +* Usage: How to transode RTMP stream by SRS?([CN][v1_CN_SampleFFMPEG], [EN][v1_EN_SampleFFMPEG])
  123 +* Usage: How to forward stream to other server?([CN][v1_CN_SampleForward], [EN][v1_EN_SampleForward])
  124 +* Usage: How to deploy low lantency application?([CN][v2_CN_SampleRealtime], [EN][v2_EN_SampleRealtime])
  125 +* Usage: How to deploy SRS on ARM?([CN][v1_CN_SampleARM], [EN][v1_EN_SampleARM])
  126 +* Usage: How to ingest file/stream/device to SRS?([CN][v1_CN_SampleIngest], [EN][v1_EN_SampleIngest])
  127 +* Usage: How to use SRS-HTTP-server to delivery HTTP/HLS stream?([CN][v2_CN_SampleHTTP], [EN][v2_EN_SampleHTTP])
  128 +* Usage: How to show the demo of [CN][v1_CN_SampleDemo], [EN][v1_EN_SampleDemo])
  129 +* Usage: How to publish h.264 raw stream to [CN][v2_CN_SrsLibrtmp2], [EN][v2_EN_SrsLibrtmp2])
  130 +* Usage: Solution using SRS?([CN][v1_CN_Sample], [EN][v1_EN_Sample])
  131 +* Usage: Why SRS?([CN][v1_CN_Product], [EN][v1_EN_Product])
329 132
330 ## Wiki 133 ## Wiki
331 134
332 SRS 1.0 wiki 135 SRS 1.0 wiki
333 136
334 Please select your language: 137 Please select your language:
335 -* [SRS 1.0 English](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Home)  
336 -* [SRS 1.0 Chinese](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Home) 138 +* [SRS 1.0 English][v1_EN_Home]
  139 +* [SRS 1.0 Chinese][v1_CN_Home]
337 140
338 SRS 2.0 wiki 141 SRS 2.0 wiki
339 142
340 Please select your language: 143 Please select your language:
341 -* [SRS 2.0 English](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_Home)  
342 -* [SRS 2.0 Chinese](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Home) 144 +* [SRS 2.0 English][v2_EN_Home]
  145 +* [SRS 2.0 Chinese][v2_CN_Home]
343 146
344 ## Donation 147 ## Donation
345 148
346 Donation:<br/> 149 Donation:<br/>
347 -[http://winlinvip.github.io/srs.release/donation/index.html](http://winlinvip.github.io/srs.release/donation/index.html) OR <br/>  
348 -[http://www.ossrs.net/srs.release/donation/index.html](http://www.ossrs.net/srs.release/donation/index.html) 150 +[http://winlinvip.github.io/srs.release/donation/index.html][donation0] OR <br/>
  151 +[http://www.ossrs.net/srs.release/donation/index.html][donation1]
349 152
350 Donations:<br/> 153 Donations:<br/>
351 -[https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt]  
352 -(https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt) 154 +[https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt][donations]
353 155
354 ## System Requirements 156 ## System Requirements
355 Supported operating systems and hardware: 157 Supported operating systems and hardware:
@@ -357,177 +159,64 @@ Supported operating systems and hardware: @@ -357,177 +159,64 @@ Supported operating systems and hardware:
357 * Apple OSX(Darwin), both 32 and 64bits. 159 * Apple OSX(Darwin), both 32 and 64bits.
358 * All hardware with x86/x86_64/arm/mips cpu. 160 * All hardware with x86/x86_64/arm/mips cpu.
359 161
360 -## Summary 162 +## Features
  163 +
361 1. Simple, also stable enough. 164 1. Simple, also stable enough.
362 -1. High-performance(  
363 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance),  
364 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Performance)  
365 -): single-thread, async socket, event/st-thread driven.  
366 -1. High-concurrency(  
367 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance),  
368 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Performance)  
369 -), 6000+ connections(500kbps), 900Mbps, CPU 90.2%, 41MB  
370 -1. Support RTMP Origin Server(  
371 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP),  
372 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP)  
373 -)  
374 -1. Support RTMP Edge Server(  
375 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge),  
376 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Edge)  
377 -) for CDN, push/pull stream from any RTMP server 165 +1. High-performance([CN][v1_CN_Performance], [EN][v1_EN_Performance]): single-thread, async socket, event/st-thread driven.
  166 +1. High-concurrency([CN][v1_CN_Performance], [EN][v1_EN_Performance]), 6000+ connections(500kbps), 900Mbps, CPU 90.2%, 41MB
  167 +1. Support RTMP Origin Server([CN][v1_CN_DeliveryRTMP],[EN][v1_EN_DeliveryRTMP])
  168 +1. Support RTMP Edge Server([CN][v1_CN_Edge], [EN][v1_EN_Edge]) for CDN, push/pull stream from any RTMP server
378 1. Support single process; no multiple processes. 169 1. Support single process; no multiple processes.
379 -1. Support Vhost(  
380 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost),  
381 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_RtmpUrlVhost)  
382 -), support \_\_defaultVhost\_\_.  
383 -1. Support RTMP(  
384 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP),  
385 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP)  
386 -) live streaming; no vod streaming.  
387 -1. Support Apple HLS(m3u8)(  
388 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS),  
389 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS)  
390 -) live streaming.  
391 -1. Support HLS audio-only(  
392 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS#hlsaudioonly),  
393 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS#hlsaudioonly)  
394 -) live streaming.  
395 -1. Support Reload(  
396 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Reload),  
397 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Reload)  
398 -) config to enable changes.  
399 -1. Support cache last gop(  
400 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LowLatency#gop-cache),  
401 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_LowLatency#gop-cache)  
402 -) for flash player to fast startup. 170 +1. Support Vhost([CN][v1_CN_RtmpUrlVhost], [EN][v1_EN_RtmpUrlVhost]), support \_\_defaultVhost\_\_.
  171 +1. Support RTMP([CN][v1_CN_DeliveryRTMP], [EN][v1_EN_DeliveryRTMP]) live streaming; no vod streaming.
  172 +1. Support Apple HLS(m3u8)([CN][v1_CN_DeliveryHLS], [EN][v1_EN_DeliveryHLS]) live streaming.
  173 +1. Support HLS audio-only([CN][v1_CN_DeliveryHLS2], [EN][v1_EN_DeliveryHLS2]) live streaming.
  174 +1. Support Reload([CN][v1_CN_Reload], [EN][v1_EN_Reload]) config to enable changes.
  175 +1. Support cache last gop([CN][v1_CN_LowLatency2], [EN][v1_EN_LowLatency2]) for flash player to fast startup.
403 1. Support listen at multiple ports. 176 1. Support listen at multiple ports.
404 1. Support long time(>4.6hours) publish/play. 177 1. Support long time(>4.6hours) publish/play.
405 -1. Support Forward(  
406 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward),  
407 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Forward)  
408 -) in master-slave mode.  
409 -1. Support live stream Transcoding(  
410 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),  
411 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)  
412 -) by ffmpeg.  
413 -1. Support ffmpeg(  
414 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),  
415 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)  
416 -) filters(logo/overlay/crop), x264 params, copy/vn/an.  
417 -1. Support audio transcode(  
418 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG),  
419 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG)  
420 -) only, speex/mp3 to aac  
421 -1. Support http callback api hooks(  
422 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback),  
423 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPCallback)  
424 -)(for authentication and injection).  
425 -1. Support bandwidth test(  
426 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_BandwidthTestTool),  
427 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_BandwidthTestTool)  
428 -) api and flash client.  
429 -1. Player, publisher(encoder), and demo pages(jquery+bootstrap)(  
430 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo),  
431 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleDemo)  
432 -).  
433 -1. Demo(  
434 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo),  
435 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleDemo)  
436 -) video meeting or chat(SRS+cherrypy+jquery+bootstrap).  
437 -1. Full documents in wiki(  
438 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Home),  
439 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Home)  
440 -), both Chinese and English.  
441 -1. Support RTMP(play-publish) library: srs-librtmp(  
442 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp),  
443 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp)  
444 -)  
445 -1. Support ARM cpu arch(  
446 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm),  
447 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLinuxArm)  
448 -) with rtmp/ssl/hls/librtmp.  
449 -1. Support init.d(  
450 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService),  
451 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_LinuxService)  
452 -) and packge script, log to file.  
453 -1. Support RTMP ATC(  
454 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RTMP-ATC),  
455 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_RTMP-ATC)  
456 -) for HLS/HDS to support backup(failover)  
457 -1. Support HTTP RESTful management api(  
458 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi),  
459 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPApi)  
460 -).  
461 -1. Support Ingest(  
462 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest),  
463 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Ingest)  
464 -) FILE/HTTP/RTMP/RTSP(RTP, SDP) to RTMP using external tools(e.g ffmepg).  
465 -1. Support DVR(  
466 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR),  
467 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DVR)  
468 -), record live to flv file for vod.  
469 -1. Support tracable log, session based log(  
470 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog),  
471 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLog)  
472 -).  
473 -1. Support DRM token traverse(  
474 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DRM#tokentraverse),  
475 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DRM#tokentraverse)  
476 -) for fms origin authenticate. 178 +1. Support Forward([CN][v1_CN_Forward], [EN][v1_EN_Forward]) in master-slave mode.
  179 +1. Support live stream Transcoding([CN][v1_CN_FFMPEG], [EN][v1_EN_FFMPEG]) by ffmpeg.
  180 +1. Support ffmpeg([CN][v1_CN_FFMPEG], [EN][v1_EN_FFMPEG]) filters(logo/overlay/crop), x264 params, copy/vn/an.
  181 +1. Support audio transcode([CN][v1_CN_FFMPEG], [EN][v1_EN_FFMPEG]) only, speex/mp3 to aac
  182 +1. Support http callback api hooks([CN][v1_CN_HTTPCallback], [EN][v1_EN_HTTPCallback])(for authentication and injection).
  183 +1. Support bandwidth test([CN][v1_CN_BandwidthTestTool], [EN][v1_EN_BandwidthTestTool]) api and flash client.
  184 +1. Player, publisher(encoder), and demo pages(jquery+bootstrap)([CN][v1_CN_SampleDemo],[EN][v1_EN_SampleDemo]).
  185 +1. Demo([CN][v1_CN_SampleDemo], [EN][v1_EN_SampleDemo]) video meeting or chat(SRS+cherrypy+jquery+bootstrap).
  186 +1. Full documents in wiki([CN][v1_CN_Home], [EN][v1_EN_Home]), both Chinese and English.
  187 +1. Support RTMP(play-publish) library: srs-librtmp([CN][v2_CN_SrsLibrtmp], [EN][v2_EN_SrsLibrtmp])
  188 +1. Support ARM cpu arch([CN][v1_CN_SrsLinuxArm], [EN][v1_EN_SrsLinuxArm]) with rtmp/ssl/hls/librtmp.
  189 +1. Support init.d([CN][v1_CN_LinuxService], [EN][v1_EN_LinuxService]) and packge script, log to file.
  190 +1. Support RTMP ATC([CN][v1_CN_RTMP-ATC], [EN][v1_EN_RTMP-ATC]) for HLS/HDS to support backup(failover)
  191 +1. Support HTTP RESTful management api([CN][v1_CN_HTTPApi], [EN][v1_EN_HTTPApi]).
  192 +1. Support Ingest([CN][v1_CN_Ingest], [EN][v1_EN_Ingest]) FILE/HTTP/RTMP/RTSP(RTP, SDP) to RTMP using external tools(e.g ffmepg).
  193 +1. Support DVR([CN][v1_CN_DVR], [EN][v1_EN_DVR]), record live to flv file for vod.
  194 +1. Support tracable log, session based log([CN][v1_CN_SrsLog], [EN][v1_EN_SrsLog]).
  195 +1. Support DRM token traverse([CN][v1_CN_DRM2], [EN][v1_EN_DRM2]) for fms origin authenticate.
477 1. Support system full utest on gtest. 196 1. Support system full utest on gtest.
478 -1. Support embeded HTTP server(  
479 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SampleHTTP),  
480 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SampleHTTP)  
481 -) for hls(live/vod)  
482 -1. Support vod stream(http flv/hls vod stream)(  
483 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_FlvVodStream),  
484 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_FlvVodStream)  
485 -). 197 +1. Support embeded HTTP server([CN][v2_CN_SampleHTTP], [EN][v2_EN_SampleHTTP]) for hls(live/vod)
  198 +1. Support vod stream(http flv/hls vod stream)([CN][v2_CN_FlvVodStream], [EN][v2_EN_FlvVodStream]).
486 1. Stable [1.0release branch](https://github.com/simple-rtmp-server/srs/tree/1.0release). 199 1. Stable [1.0release branch](https://github.com/simple-rtmp-server/srs/tree/1.0release).
487 -1. Support publish h264 raw stream(  
488 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-h264-raw-data),  
489 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-h264-raw-data)  
490 -) by srs-librtmp.  
491 -1. Support [6k+ clients](https://github.com/simple-rtmp-server/srs/issues/194), 3Gbps per process.  
492 -1. Suppport [English wiki](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Home).  
493 -1. Research and simplify st, [bug #182](https://github.com/simple-rtmp-server/srs/issues/182).  
494 -1. Support compile [srs-librtmp on windows](https://github.com/winlinvip/srs.librtmp),  
495 -[bug #213](https://github.com/simple-rtmp-server/srs/issues/213).  
496 -1. Support [10k+ clients](https://github.com/simple-rtmp-server/srs/issues/251), 4Gbps per process.  
497 -1. Support publish aac adts raw stream(  
498 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-audio-raw-stream),  
499 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-audio-raw-stream)  
500 -) by srs-librtmp.  
501 -1. Support 0.1s+ latency, read [#257](https://github.com/simple-rtmp-server/srs/issues/257).  
502 -1. Support allow/deny publish/play for all or specified ip(  
503 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Security),  
504 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_Security)  
505 -).  
506 -1. Support custom dvr path and http callback, read  
507 -[#179](https://github.com/simple-rtmp-server/srs/issues/179) and  
508 -[274](https://github.com/simple-rtmp-server/srs/issues/274).  
509 -1. Support rtmp remux to http flv/mp3/aac/ts live stream, read  
510 -[#293](https://github.com/simple-rtmp-server/srs/issues/293)(  
511 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_DeliveryHttpStream),  
512 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_DeliveryHttpStream)  
513 -).  
514 -1. Support HLS(h.264+mp3) streaming, read  
515 -[#301](https://github.com/simple-rtmp-server/srs/issues/301).  
516 -1. Rewrite HLS(h.264+aac/mp3) streaming, read  
517 -[#304](https://github.com/simple-rtmp-server/srs/issues/304).  
518 -1. Support Adobe HDS(f4m)(  
519 -[CN](https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHDS),  
520 -[EN](https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHDS)  
521 -) dynamic streaming.  
522 -1. [experiment] Support push MPEG-TS over UDP to SRS, read  
523 -[#250](https://github.com/simple-rtmp-server/srs/issues/250).  
524 -1. [experiment] Support push RTSP to SRS, read  
525 -[#133](https://github.com/simple-rtmp-server/srs/issues/133).  
526 -1. [experiment] Support push flv stream over HTTP POST to SRS, read  
527 -[wiki](https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Streamer#push-http-flv-to-srs).  
528 -1. Start [2.0release branch](https://github.com/simple-rtmp-server/srs/tree/2.0release). 200 +1. Support publish h264 raw stream([CN][v2_CN_SrsLibrtmp2], [EN][v2_EN_SrsLibrtmp2]) by srs-librtmp.
  201 +1. Support [6k+ clients][bug #194], 3Gbps per process.
  202 +1. Suppport [English wiki][v1_EN_Home).
  203 +1. Research and simplify st, [bug #182][bug #182].
  204 +1. Support compile [srs-librtmp on windows](https://github.com/winlinvip/srs.librtmp), [bug #213][bug #213].
  205 +1. Support [10k+ clients][bug #251], 4Gbps per process.
  206 +1. Support publish aac adts raw stream([CN][v2_CN_SrsLibrtmp3], [EN][v2_EN_SrsLibrtmp3]) by srs-librtmp.
  207 +1. Support 0.1s+ latency, read [bug #257][bug #257].
  208 +1. Support allow/deny publish/play for all or specified ip([CN][v2_CN_Security], [EN][v2_EN_Security]).
  209 +1. Support custom dvr path and http callback, read [bug #179][bug #179] and [bug #274][bug #274].
  210 +1. Support rtmp remux to http flv/mp3/aac/ts live stream, read [bug #293][bug #293]([CN][v2_CN_DeliveryHttpStream], [EN][v2_CN_DeliveryHttpStream]).
  211 +1. Support HLS(h.264+mp3) streaming, read [bug #301][bug #301].
  212 +1. Rewrite HLS(h.264+aac/mp3) streaming, read [bug #304][bug #304].
  213 +1. Support Adobe HDS(f4m)([CN][v1_CN_DeliveryHDS], [EN][v1_EN_DeliveryHDS]) dynamic streaming.
  214 +1. [dev] Realease [2.0release branch][branch2].
  215 +1. [experiment] Support push MPEG-TS over UDP to SRS, read [bug #250][bug #250].
  216 +1. [experiment] Support push RTSP to SRS, read [bug #133][bug #133].
  217 +1. [experiment] Support push flv stream over HTTP POST to SRS, read [wiki]([CN][v2_CN_Streamer2], [EN][v2_EN_Streamer2]).
529 1. [no-plan] Support <500ms latency, FRSC(Fast RTMP-compatible Stream Channel tech). 218 1. [no-plan] Support <500ms latency, FRSC(Fast RTMP-compatible Stream Channel tech).
530 -1. [no-plan] Support RTMP 302 redirect [#92](https://github.com/simple-rtmp-server/srs/issues/92). 219 +1. [no-plan] Support RTMP 302 redirect [bug #92][bug #92].
531 1. [no-plan] Support multiple processes, for both origin and edge 220 1. [no-plan] Support multiple processes, for both origin and edge
532 1. [no-plan] Support adobe RTMFP(flash p2p) protocol. 221 1. [no-plan] Support adobe RTMFP(flash p2p) protocol.
533 1. [no-plan] Support adobe flash refer/token/swf verification. 222 1. [no-plan] Support adobe flash refer/token/swf verification.
@@ -536,6 +225,89 @@ Supported operating systems and hardware: @@ -536,6 +225,89 @@ Supported operating systems and hardware:
536 1. [no-plan] Support RTMPT, http to tranverse firewalls 225 1. [no-plan] Support RTMPT, http to tranverse firewalls
537 1. [no-plan] Support file source, transcoding file to live stream 226 1. [no-plan] Support file source, transcoding file to live stream
538 227
  228 +## Compare
  229 +
  230 +Compare SRS with other media server.
  231 +
  232 +### Stream Delivery
  233 +
  234 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  235 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  236 +| RTMP | Stable | Stable | Stable | Stable | Stable |
  237 +| HLS | Stable | Stable | X | Stable | Stable |
  238 +| HDS | Stable | X | X | Stable | Stable |
  239 +| HTTP FLV | Stable | X | X | X | X |
  240 +| HLS(aonly) | Stable | X | X | Stable | Stable |
  241 +| HTTP Server | Stable | Stable | X | X | Stable |
  242 +
  243 +### Cluster
  244 +
  245 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  246 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  247 +| RTMP Edge | Stable | X | X | Stable | X |
  248 +| RTMP Backup | Stable | X | X | X | X |
  249 +| VHOST | Stable | X | X | Stable | Stable |
  250 +| Reload | Stable | Stable | X | X | X |
  251 +| Forward | Stable | X | X | X | X |
  252 +| ATC | Stable | X | X | X | X |
  253 +
  254 +### Stream Service
  255 +
  256 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  257 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  258 +| DVR | Stable | Stable | X | X | Stable |
  259 +| Transcode | Stable | X | X | X | Stable |
  260 +| HTTP API | Stable | Stable | X | X | Stable |
  261 +| HTTP hooks | Stable | X | X | X | X |
  262 +| GopCache | Stable | X | X | Stable | X |
  263 +| Security | Stable | Stable | X | X | Stable |
  264 +| Token Traverse| Stable | X | X | Stable | X |
  265 +
  266 +### Performance
  267 +
  268 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  269 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  270 +| Concurrency | 7.5k | 3k | 2k | 2k | 3k |
  271 +| RTMP Latency| 0.1s | 3s | 3s | 3s | 3s |
  272 +| HLS Latency | 10s | 30s | X | 30s | 30s |
  273 +
  274 +### Stream Caster
  275 +
  276 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  277 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  278 +| Ingest | Stable | X | X | X | X |
  279 +| Push MPEGTS | Experiment| X | X | X | Stable |
  280 +| Push RTSP | Experiment| X | Stable | X | Stable |
  281 +| Push HTTP FLV | Experiment| X | X | X | X |
  282 +
  283 +### Debug System
  284 +
  285 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  286 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  287 +| BW check | Stable | X | X | X | X |
  288 +| Tracable Log | Stable | X | X | X | X |
  289 +
  290 +### Docs
  291 +
  292 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  293 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  294 +| Demos | Stable | X | X | X | X |
  295 +| WIKI(EN+CN) | Stable | EN only | X | X | Stable |
  296 +
  297 +### Others
  298 +
  299 +| Feature | SRS | NGINX | CRTMPD | FMS | WOWZA |
  300 +| ----------- | ------- | ----- | --------- | -------- | ------ |
  301 +| ARM/MIPS | Stable | Stable | X | X | X |
  302 +| Client Library| Stable | X | X | X | X |
  303 +
  304 +Remark:
  305 +
  306 +1. Concurrency: The concurrency of single process.
  307 +1. HLS aonly: The HLS audio only streaming delivery.
  308 +1. BW check: The bandwidth check.
  309 +1. Security: To allow or deny stream publish or play.
  310 +
539 ## Releases 311 ## Releases
540 312
541 * 2015-05-23, [Release v1.0r4](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r4), bug fixed, 1.0.32, 59509 lines.<br/> 313 * 2015-05-23, [Release v1.0r4](https://github.com/simple-rtmp-server/srs/releases/tag/1.0r4), bug fixed, 1.0.32, 59509 lines.<br/>
@@ -905,222 +677,37 @@ Performance benchmark history, on virtual box. @@ -905,222 +677,37 @@ Performance benchmark history, on virtual box.
905 677
906 The play benchmark by [st-load](https://github.com/winlinvip/st-load): 678 The play benchmark by [st-load](https://github.com/winlinvip/st-load):
907 679
908 -<table>  
909 - <tr>  
910 - <th>Update</th>  
911 - <th>SRS</th>  
912 - <th>Clients</th>  
913 - <th>Type</th>  
914 - <th>CPU</th>  
915 - <th>Memory</th>  
916 - <th>Commit</th>  
917 - </tr>  
918 - <tr>  
919 - <td>2013-11-28</td>  
920 - <td>0.5.0</td>  
921 - <td>1.8k(1800)</td>  
922 - <td>players</td>  
923 - <td>90%</td>  
924 - <td>41MB</td>  
925 - <td>-</td>  
926 - </tr>  
927 - <tr>  
928 - <td>2014-07-12</td>  
929 - <td>0.9.156</td>  
930 - <td>1.8k(1800)</td>  
931 - <td>players</td>  
932 - <td>68%</td>  
933 - <td>38MB</td>  
934 - <td>-</td>  
935 - </tr>  
936 - <tr>  
937 - <td>2014-07-12</td>  
938 - <td>0.9.156</td>  
939 - <td>2.7k(2700)</td>  
940 - <td>players</td>  
941 - <td>89%</td>  
942 - <td>61MB</td>  
943 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/1ae3e6c64cc5cee90e6050c26968ebc3c18281be">commit</a></td>  
944 - </tr>  
945 - <tr>  
946 - <td>2014-11-11</td>  
947 - <td>1.0.5</td>  
948 - <td>2.7k(2700)</td>  
949 - <td>players</td>  
950 - <td>85%</td>  
951 - <td>66MB</td>  
952 - <td>-</td>  
953 - </tr>  
954 - <tr>  
955 - <td>2014-11-11</td>  
956 - <td>2.0.12</td>  
957 - <td>2.7k(2700)</td>  
958 - <td>players</td>  
959 - <td>85%</td>  
960 - <td>66MB</td>  
961 - <td>-</td>  
962 - </tr>  
963 - <tr>  
964 - <td>2014-11-12</td>  
965 - <td>2.0.14</td>  
966 - <td>2.7k(2700)</td>  
967 - <td>players</td>  
968 - <td>69%</td>  
969 - <td>59MB</td>  
970 - <td>-</td>  
971 - </tr>  
972 - <tr>  
973 - <td>2014-11-12</td>  
974 - <td>2.0.14</td>  
975 - <td>3.5k(3500)</td>  
976 - <td>players</td>  
977 - <td>95%</td>  
978 - <td>78MB</td>  
979 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/8acd143a7a152885b815999162660fd4e7a3f247">commit</a></td>  
980 - </tr>  
981 - <tr>  
982 - <td>2014-11-13</td>  
983 - <td>2.0.15</td>  
984 - <td>6.0k(6000)</td>  
985 - <td>players</td>  
986 - <td>82%</td>  
987 - <td>203MB</td>  
988 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/cc6aca9ad55342a06440ce7f3b38453776b2b2d1">commit</a></td>  
989 - </tr>  
990 - <tr>  
991 - <td>2014-11-22</td>  
992 - <td>2.0.30</td>  
993 - <td>7.5k(7500)</td>  
994 - <td>players</td>  
995 - <td>87%</td>  
996 - <td>320MB</td>  
997 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5">commit</a></td>  
998 - </tr>  
999 - <tr>  
1000 - <td>2014-12-05</td>  
1001 - <td>2.0.55</td>  
1002 - <td>8.0k(8000)</td>  
1003 - <td>players</td>  
1004 - <td>89%</td>  
1005 - <td>360MB</td>  
1006 - <td>(mw_sleep=350)<br/><a href="https://github.com/simple-rtmp-server/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5">commit</a></td>  
1007 - </tr>  
1008 - <tr>  
1009 - <td>2014-12-05</td>  
1010 - <td>2.0.57</td>  
1011 - <td>9.0k(9000)</td>  
1012 - <td>players</td>  
1013 - <td>90%</td>  
1014 - <td>468MB</td>  
1015 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/9ee138746f83adc26f0e236ec017f4d68a300004">commit</a></td>  
1016 - </tr>  
1017 - <tr>  
1018 - <td>2014-12-07</td>  
1019 - <td>2.0.67</td>  
1020 - <td>10k(10000)</td>  
1021 - <td>players</td>  
1022 - <td>95%</td>  
1023 - <td>656MB</td>  
1024 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/1311b6fe6576fd7b9c6d299b0f8f2e8d202f4bf8">commit</a></td>  
1025 - </tr>  
1026 -</table> 680 +
  681 +| Update | SRS | Clients | Type | CPU | Memory | Commit |
  682 +| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
  683 +| 2013-11-28 | 0.5.0 | 1.8k(1800) | players | 90% | 41M | - |
  684 +| 2014-07-12 | 0.9.156 | 1.8k(1800) | players | 68% | 38MB | - |
  685 +| 2014-07-12 | 0.9.156 | 2.7k(2700) | players | 89% | 61MB | [code][p6] |
  686 +| 2014-11-11 | 1.0.5 | 2.7k(2700) | players | 85% | 66MB | - |
  687 +| 2014-11-11 | 2.0.12 | 2.7k(2700) | players | 85% | 66MB | - |
  688 +| 2014-11-12 | 2.0.14 | 2.7k(2700) | players | 69% | 59MB | - |
  689 +| 2014-11-12 | 2.0.14 | 3.5k(3500) | players | 95% | 78MB | [code][p7] |
  690 +| 2014-11-13 | 2.0.15 | 6.0k(6000) | players | 82% | 203MB | [code][p8] |
  691 +| 2014-11-22 | 2.0.30 | 7.5k(7500) | players | 87% | 320MB | [code][p9] |
  692 +| 2014-12-05 | 2.0.55 | 8.0k(8000) | players | 89% | 360MB | [code][p10] |
  693 +| 2014-12-05 | 2.0.57 | 9.0k(9000) | players | 90% | 468MB | [code][p11] |
  694 +| 2014-12-07 | 2.0.67 | 10k(10000) | players | 95% | 656MB | [code][p12] |
1027 695
1028 ### Publish benchmark 696 ### Publish benchmark
1029 697
1030 The publish benchmark by [st-load](https://github.com/winlinvip/st-load): 698 The publish benchmark by [st-load](https://github.com/winlinvip/st-load):
1031 699
1032 -<table>  
1033 - <tr>  
1034 - <th>Update</th>  
1035 - <th>SRS</th>  
1036 - <th>Clients</th>  
1037 - <th>Type</th>  
1038 - <th>CPU</th>  
1039 - <th>Memory</th>  
1040 - <th>Commit</th>  
1041 - </tr>  
1042 - <tr>  
1043 - <td>2014-12-03</td>  
1044 - <td>1.0.10</td>  
1045 - <td>1.2k(1200)</td>  
1046 - <td>publishers</td>  
1047 - <td>96%</td>  
1048 - <td>43MB</td>  
1049 - <td>-</td>  
1050 - </tr>  
1051 - <tr>  
1052 - <td>2014-12-03</td>  
1053 - <td>2.0.12</td>  
1054 - <td>1.2k(1200)</td>  
1055 - <td>publishers</td>  
1056 - <td>96%</td>  
1057 - <td>43MB</td>  
1058 - <td>-</td>  
1059 - </tr>  
1060 - <tr>  
1061 - <td>2014-12-03</td>  
1062 - <td>2.0.47</td>  
1063 - <td>1.2k(1200)</td>  
1064 - <td>publishers</td>  
1065 - <td>84%</td>  
1066 - <td>76MB</td>  
1067 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/787ab674e38734ea8e0678101614fdcd84645dc8">commit</a></td>  
1068 - </tr>  
1069 - <tr>  
1070 - <td>2014-12-03</td>  
1071 - <td>2.0.47</td>  
1072 - <td>1.4k(1400)</td>  
1073 - <td>publishers</td>  
1074 - <td>95%</td>  
1075 - <td>140MB</td>  
1076 - <td>-</td>  
1077 - </tr>  
1078 - <tr>  
1079 - <td>2014-12-03</td>  
1080 - <td>2.0.48</td>  
1081 - <td>1.4k(1400)</td>  
1082 - <td>publishers</td>  
1083 - <td>95%</td>  
1084 - <td>140MB</td>  
1085 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/f35ec2155b1408d528a9f37da7904c9625186bcf">commit</a></td>  
1086 - </tr>  
1087 - <tr>  
1088 - <td>2014-12-04</td>  
1089 - <td>2.0.49</td>  
1090 - <td>1.4k(1400)</td>  
1091 - <td>publishers</td>  
1092 - <td>68%</td>  
1093 - <td>144MB</td>  
1094 - <td>-</td>  
1095 - </tr>  
1096 - <tr>  
1097 - <td>2014-12-04</td>  
1098 - <td>2.0.49</td>  
1099 - <td>2.5k(2500)</td>  
1100 - <td>publishers</td>  
1101 - <td>95%</td>  
1102 - <td>404MB</td>  
1103 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/29324fab469e0f7cef9ad04ffdbce832ac7dd9ff">commit</a></td>  
1104 - </tr>  
1105 - <tr>  
1106 - <td>2014-12-04</td>  
1107 - <td>2.0.51</td>  
1108 - <td>2.5k(2500)</td>  
1109 - <td>publishers</td>  
1110 - <td>91%</td>  
1111 - <td>259MB</td>  
1112 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/f57801eb46c16755b173984b915a4166922df6a6">commit</a></td>  
1113 - </tr>  
1114 - <tr>  
1115 - <td>2014-12-04</td>  
1116 - <td>2.0.52</td>  
1117 - <td>4.0k(4000)</td>  
1118 - <td>publishers</td>  
1119 - <td>80%</td>  
1120 - <td>331MB</td>  
1121 - <td>(mr_sleep=350)<br/><a href="https://github.com/simple-rtmp-server/srs/commit/5589b13d2e216b91f97afb78ee0c011b2fccf7da">commit</a></td>  
1122 - </tr>  
1123 -</table> 700 +| Update | SRS | Clients | Type | CPU | Memory | Commit |
  701 +| ------------- | --------- | ------------- | ------------- | --------- | -------- | ------------ |
  702 +| 2014-12-03 | 1.0.10 | 1.2k(1200) | publishers | 96% | 43MB | - |
  703 +| 2014-12-03 | 2.0.12 | 1.2k(1200) | publishers | 96% | 43MB | - |
  704 +| 2014-12-03 | 2.0.47 | 1.2k(1200) | publishers | 84% | 76MB | [code][p1] |
  705 +| 2014-12-03 | 2.0.47 | 1.4k(1400) | publishers | 95% | 140MB | - |
  706 +| 2014-12-03 | 2.0.48 | 1.4k(1400 | publishers | 95% | 140MB | [code][p2] |
  707 +| 2014-12-04 | 2.0.49 | 1.4k(1400) | publishers | 68% | 144MB | - |
  708 +| 2014-12-04 | 2.0.49 | 2.5k(2500) | publishers | 95% | 404MB | [code][p3] |
  709 +| 2014-12-04 | 2.0.51 | 2.5k(2500) | publishers | 91% | 259MB | [code][p4] |
  710 +| 2014-12-04 | 2.0.52 | 4.0k(4000) | publishers | 80% | 331MB | [code][p5] |
1124 711
1125 ### Latency benchmark 712 ### Latency benchmark
1126 713
@@ -1129,40 +716,12 @@ The latency between encoder and player with realtime config( @@ -1129,40 +716,12 @@ The latency between encoder and player with realtime config(
1129 [EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_LowLatency) 716 [EN](https://github.com/simple-rtmp-server/srs/wiki/v2_EN_LowLatency)
1130 ): 717 ):
1131 718
1132 -<table>  
1133 -<tr>  
1134 - <th>Update</th>  
1135 - <th>SRS</th>  
1136 - <th>VP6</th>  
1137 - <th>H.264</th>  
1138 - <th>VP6+mp3</th>  
1139 - <th>H.264+mp3</th>  
1140 -</tr>  
1141 -<tr>  
1142 - <td>2014-12-03</td>  
1143 - <td>1.0.10</td>  
1144 - <td>0.4s</td>  
1145 - <td>0.4s</td>  
1146 - <td>0.9s</td>  
1147 - <td>1.2s</td>  
1148 -</tr>  
1149 -<tr>  
1150 - <td>2014-12-12</td>  
1151 - <td>2.0.70</td>  
1152 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/10297fab519811845b549a8af40a6bcbd23411e8">0.1s</a></td>  
1153 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/10297fab519811845b549a8af40a6bcbd23411e8">0.4s</a></td>  
1154 - <td>1.0s</td>  
1155 - <td>0.9s</td>  
1156 -</tr>  
1157 -<tr>  
1158 - <td>2014-12-16</td>  
1159 - <td>2.0.72</td>  
1160 - <td>0.1s</td>  
1161 - <td>0.4s</td>  
1162 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/0d6b91039d408328caab31a1077d56a809b6bebc">0.8s</a></td>  
1163 - <td><a href="https://github.com/simple-rtmp-server/srs/commit/0d6b91039d408328caab31a1077d56a809b6bebc">0.6s</a></td>  
1164 -</tr>  
1165 -</table> 719 +
  720 +| Update | SRS | VP6 | H.264 | VP6+MP3 | H.264+MP3 |
  721 +| ------------- | --------- | --------- | --------- | --------- | -------- |
  722 +| 2014-12-03 | 1.0.10 | 0.4s | 0.4s | 0.9s | 1.2s |
  723 +| 2014-12-12 | 2.0.70 |[0.1s][p13]|[0.4s][p14]| 1.0s | 0.9s |
  724 +| 2014-12-16 | 2.0.72 | 0.1s | 0.4s |[0.8s][p15]|[0.6s][p16]|
1166 725
1167 We use FMLE as encoder for benchmark. The latency of server is 0.1s+, 726 We use FMLE as encoder for benchmark. The latency of server is 0.1s+,
1168 and the bottleneck is the encoder. For more information, read 727 and the bottleneck is the encoder. For more information, read
@@ -1248,3 +807,159 @@ over some protocol and remux to rtmp to SRS. Read <a href="https://github.com/si @@ -1248,3 +807,159 @@ over some protocol and remux to rtmp to SRS. Read <a href="https://github.com/si
1248 Beijing, 2013.10<br/> 807 Beijing, 2013.10<br/>
1249 Winlin 808 Winlin
1250 809
  810 +[p1]: https://github.com/simple-rtmp-server/srs/commit/787ab674e38734ea8e0678101614fdcd84645dc8
  811 +[p2]: https://github.com/simple-rtmp-server/srs/commit/f35ec2155b1408d528a9f37da7904c9625186bcf
  812 +[p3]: https://github.com/simple-rtmp-server/srs/commit/29324fab469e0f7cef9ad04ffdbce832ac7dd9ff
  813 +[p4]: https://github.com/simple-rtmp-server/srs/commit/f57801eb46c16755b173984b915a4166922df6a6
  814 +[p5]: https://github.com/simple-rtmp-server/srs/commit/5589b13d2e216b91f97afb78ee0c011b2fccf7da
  815 +[p6]: https://github.com/simple-rtmp-server/srs/commit/1ae3e6c64cc5cee90e6050c26968ebc3c18281be
  816 +[p7]: https://github.com/simple-rtmp-server/srs/commit/8acd143a7a152885b815999162660fd4e7a3f247
  817 +[p8]: https://github.com/simple-rtmp-server/srs/commit/cc6aca9ad55342a06440ce7f3b38453776b2b2d1
  818 +[p9]: https://github.com/simple-rtmp-server/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5
  819 +[p10]: https://github.com/simple-rtmp-server/srs/commit/58136ec178e3d47db6c90a59875d7e40946936e5
  820 +[p11]: https://github.com/simple-rtmp-server/srs/commit/9ee138746f83adc26f0e236ec017f4d68a300004
  821 +[p12]: https://github.com/simple-rtmp-server/srs/commit/1311b6fe6576fd7b9c6d299b0f8f2e8d202f4bf8
  822 +[p13]: https://github.com/simple-rtmp-server/srs/commit/10297fab519811845b549a8af40a6bcbd23411e8
  823 +[p14]: https://github.com/simple-rtmp-server/srs/commit/10297fab519811845b549a8af40a6bcbd23411e8
  824 +[p15]: https://github.com/simple-rtmp-server/srs/commit/0d6b91039d408328caab31a1077d56a809b6bebc
  825 +[p16]: https://github.com/simple-rtmp-server/srs/commit/0d6b91039d408328caab31a1077d56a809b6bebc
  826 +
  827 +[authors]: https://github.com/simple-rtmp-server/srs/blob/develop/AUTHORS.txt
  828 +[bigthanks]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#bigthanks
  829 +[st]: https://github.com/winlinvip/state-threads
  830 +[st2]: http://sourceforge.net/projects/state-threads/
  831 +[state-threads]: http://sourceforge.net/projects/state-threads/
  832 +[nginx-rtmp]: https://github.com/arut/nginx-rtmp-module
  833 +[http-parser]: https://github.com/joyent/http-parser
  834 +[nginx]: http://nginx.org/
  835 +[FFMPEG]: http://ffmpeg.org/
  836 +[libx264]: http://www.videolan.org/
  837 +[srs]: https://github.com/simple-rtmp-server/srs
  838 +[csdn]: https://code.csdn.net/winlinvip/srs-csdn
  839 +[oschina]: http://git.oschina.net/winlinvip/srs.oschina
  840 +[gitlab]: https://gitlab.com/winlinvip/srs-gitlab
  841 +[v1_CN_Git]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Git
  842 +[v1_EN_Git]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Git
  843 +[v1_CN_SampleRTMP]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleRTMP
  844 +[v1_EN_SampleRTMP]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleRTMP
  845 +[v1_CN_SampleHLS]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHLS
  846 +[v1_EN_SampleHLS]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleHLS
  847 +[v1_CN_SampleTranscode2HLS]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleTranscode2HLS
  848 +[v1_EN_SampleTranscode2HLS]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleTranscode2HLS
  849 +[v1_CN_SampleFFMPEG]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleFFMPEG
  850 +[v1_EN_SampleFFMPEG]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleFFMPEG
  851 +[v1_CN_SampleForward]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleForward
  852 +[v1_EN_SampleForward]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleForward
  853 +[v2_CN_SampleRealtime]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SampleRealtime
  854 +[v2_EN_SampleRealtime]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SampleRealtime
  855 +[v1_CN_SampleARM]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleARM
  856 +[v1_EN_SampleARM]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleARM
  857 +[v1_CN_SampleIngest]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleIngest
  858 +[v1_EN_SampleIngest]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleIngest
  859 +[v1_CN_SampleHTTP]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleHTTP
  860 +[v1_EN_SampleHTTP]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleHTTP
  861 +[v1_CN_SampleDemo]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo
  862 +[v1_EN_SampleDemo]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleDemo
  863 +[v2_CN_SrsLibrtmp2]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-h264-raw-data
  864 +[v2_EN_SrsLibrtmp2]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-h264-raw-data
  865 +[v1_CN_Sample]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Sample
  866 +[v1_EN_Sample]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Sample
  867 +[v1_CN_Product]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product
  868 +[v1_EN_Product]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Product
  869 +[v1_CN_Home]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Home
  870 +[v1_EN_Home]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Home
  871 +[v2_CN_Home]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Home
  872 +[v2_EN_Home]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_Home
  873 +[donation0]: http://winlinvip.github.io/srs.release/donation/index.html
  874 +[donation1]: http://www.ossrs.net/srs.release/donation/index.html
  875 +[donations]: https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt
  876 +
  877 +[v1_CN_Performance]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Performance
  878 +[v1_EN_Performance]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Performance
  879 +[v1_CN_DeliveryRTMP]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryRTMP
  880 +[v1_EN_DeliveryRTMP]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryRTMP
  881 +[v1_CN_Edge]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Edge
  882 +[v1_EN_Edge]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Edge
  883 +[v1_CN_RtmpUrlVhost]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RtmpUrlVhost
  884 +[v1_EN_RtmpUrlVhost]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_RtmpUrlVhost
  885 +[v1_CN_DeliveryHLS]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS
  886 +[v1_EN_DeliveryHLS]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS
  887 +[v1_CN_DeliveryHLS2]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHLS#hlsaudioonly
  888 +[v1_EN_DeliveryHLS2]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHLS#hlsaudioonly
  889 +[v1_CN_Reload]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Reload
  890 +[v1_EN_Reload]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Reload
  891 +[v1_CN_LowLatency2]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LowLatency#gop-cache
  892 +[v1_EN_LowLatency2]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_LowLatency#gop-cache
  893 +[v1_CN_Forward]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Forward
  894 +[v1_EN_Forward]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Forward
  895 +[v1_CN_FFMPEG]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG
  896 +[v1_EN_FFMPEG]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_FFMPEG
  897 +[v1_CN_HTTPCallback]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPCallback
  898 +[v1_EN_HTTPCallback]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPCallback
  899 +[v1_CN_BandwidthTestTool]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_BandwidthTestTool
  900 +[v1_EN_BandwidthTestTool]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_BandwidthTestTool
  901 +[v1_CN_SampleDemo]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SampleDemo
  902 +[v1_EN_SampleDemo]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SampleDemo
  903 +[v2_CN_SrsLibrtmp]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp
  904 +[v2_EN_SrsLibrtmp]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp
  905 +[v1_CN_SrsLinuxArm]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLinuxArm
  906 +[v1_EN_SrsLinuxArm]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLinuxArm
  907 +[v1_CN_LinuxService]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_LinuxService
  908 +[v1_EN_LinuxService]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_LinuxService
  909 +[v1_CN_RTMP-ATC]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_RTMP-ATC
  910 +[v1_EN_RTMP-ATC]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_RTMP-ATC
  911 +[v1_CN_HTTPApi]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_HTTPApi
  912 +[v1_EN_HTTPApi]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_HTTPApi
  913 +[v1_CN_Ingest]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest
  914 +[v1_EN_Ingest]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_Ingest
  915 +[v1_CN_DVR]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DVR
  916 +[v1_EN_DVR]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DVR
  917 +[v1_CN_SrsLog]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_SrsLog
  918 +[v1_EN_SrsLog]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_SrsLog
  919 +[v1_CN_DRM2]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DRM#tokentraverse
  920 +[v1_EN_DRM2]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DRM#tokentraverse
  921 +[v2_CN_SampleHTTP]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SampleHTTP
  922 +[v2_EN_SampleHTTP]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SampleHTTP
  923 +[v2_CN_FlvVodStream]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_FlvVodStream
  924 +[v2_EN_FlvVodStream]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_FlvVodStream
  925 +[v2_CN_SrsLibrtmp2]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-h264-raw-data
  926 +[v2_EN_SrsLibrtmp2]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-h264-raw-data
  927 +[v2_CN_SrsLibrtmp3]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SrsLibrtmp#publish-audio-raw-stream
  928 +[v2_EN_SrsLibrtmp3]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SrsLibrtmp#publish-audio-raw-stream
  929 +[v2_CN_Security]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Security
  930 +[v2_EN_Security]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_Security
  931 +[v2_CN_DeliveryHttpStream]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_DeliveryHttpStream
  932 +[v2_EN_DeliveryHttpStream]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_DeliveryHttpStream
  933 +[v1_CN_DeliveryHDS]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_DeliveryHDS
  934 +[v1_EN_DeliveryHDS]: https://github.com/simple-rtmp-server/srs/wiki/v1_EN_DeliveryHDS
  935 +[v2_CN_Streamer2]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_Streamer#push-http-flv-to-srs
  936 +[v2_EN_Streamer2]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_Streamer#push-http-flv-to-srs
  937 +[v2_CN_SampleHttpFlv]: https://github.com/simple-rtmp-server/srs/wiki/v2_CN_SampleHttpFlv
  938 +[v2_EN_SampleHttpFlv]: https://github.com/simple-rtmp-server/srs/wiki/v2_EN_SampleHttpFlv
  939 +
  940 +[bug #213]: https://github.com/simple-rtmp-server/srs/issues/213
  941 +[bug #194]: https://github.com/simple-rtmp-server/srs/issues/194
  942 +[bug #182]: https://github.com/simple-rtmp-server/srs/issues/182
  943 +[bug #257]: https://github.com/simple-rtmp-server/srs/issues/257
  944 +[bug #179]: https://github.com/simple-rtmp-server/srs/issues/179
  945 +[bug #224]: https://github.com/simple-rtmp-server/srs/issues/224
  946 +[bug #251]: https://github.com/simple-rtmp-server/srs/issues/251
  947 +[bug #293]: https://github.com/simple-rtmp-server/srs/issues/293
  948 +[bug #250]: https://github.com/simple-rtmp-server/srs/issues/250
  949 +[bug #301]: https://github.com/simple-rtmp-server/srs/issues/301
  950 +[bug #304]: https://github.com/simple-rtmp-server/srs/issues/304
  951 +[bug #133]: https://github.com/simple-rtmp-server/srs/issues/133
  952 +[bug #92]: https://github.com/simple-rtmp-server/srs/issues/92
  953 +
  954 +
  955 +[contact]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Contact
  956 +[more0]: http://winlinvip.github.io/srs.release/releases/
  957 +[more1]: http://www.ossrs.net/srs.release/releases/
  958 +
  959 +[branch2]: https://github.com/simple-rtmp-server/srs/tree/2.0release
  960 +[release2]: https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Product#release20
  961 +[centos0]: http://winlinvip.github.io/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.32.zip
  962 +[centos1]: http://www.ossrs.net/srs.release/releases/files/SRS-CentOS6-x86_64-1.0.32.zip
  963 +
  964 +
  965 +
@@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
23 23
24 #include <srs_http_stack.hpp> 24 #include <srs_http_stack.hpp>
25 25
  26 +#include <stdlib.h>
26 #include <sstream> 27 #include <sstream>
27 using namespace std; 28 using namespace std;
28 29