Skip to content

Latest commit

 

History

History
executable file
·
136 lines (128 loc) · 6.67 KB

README.md

File metadata and controls

executable file
·
136 lines (128 loc) · 6.67 KB

simple-rtmp-server

srs(simple rtmp origin live server) over state-threads.
srs is a simple, high-performance, running in single process, origin live server.
blog: http://blog.csdn.net/win_lin
see also: https://github.com/winlinvip/simple-rtmp-server
see also: http://winlinvip.github.io/simple-rtmp-server

Usage

step 1: build srs

tar xf simple-rtmp-server-*.*.tar.gz
cd simple-rtmp-server-*.*/trunk
./configure --with-ssl --with-hls
make

step 2: start srs

./objs/simple_rtmp_server -c conf/srs.conf

step 3(optional): start nginx for HLS

sudo ./objs/nginx/sbin/nginx

step 4: publish live stream

FMS URL: rtmp://127.0.0.1:1935/live
Stream:  livestream
For example, use ffmpeg to publish:
    ffmpeg -re -i source.flv -vcodec copy -acodec copy \
    -f flv -y rtmp://127.0.0.1:1935/live/livestream

step 5: play live stream

rtmp url: rtmp://127.0.0.1:1935/live/livestream
m3u8 url: http://127.0.0.1:80/live/livestream.m3u8

Summary

  1. simple: also stable enough.
  2. high-performance: single-thread, async socket, event/st-thread driven.
  3. support vhost, support __defaultVhost__.
  4. support both rtmp and hls(m3u8) live streaming.
  5. support reload config to enable changes.
  6. support cache last gop for flash player to fast startup.
  7. support listen at multiple ports.
  8. [dev] support forward publish stream to build active-standby cluster.
  9. [plan] support live stream transcoding by ffmpeg.
  10. [plan] support full http callback api.
  11. [plan] support network based cli and json result.
  12. [plan] support bandwidth test api and flash client.
  13. no edge server, origin server only.
  14. no vod streaming, live streaming only.
  15. no multiple processes, single process only.

Performance

  1. 300 connections, 150Mbps, 500kbps, CPU 18.8%, 5956KB.
  2. 600 connections, 300Mbps, 500kbps, CPU 32.1%, 9808KB.
  3. 900 connections, 450Mbps, 500kbps, CPU 49.9%, 11MB.
  4. 1200 connections, 600Mbps, 500kbps, CPU 72.4%, 15MB.
  5. 1500 connections, 750Mbps, 500kbps, CPU 81.9%, 28MB.
  6. 1800 connections, 900Mbps, 500kbps, CPU 90.2%, 41MB.
----total-cpu-usage---- -dsk/total- ---net/lo-- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
 58   9  32   0   0   1|   0  4168k| 277M  277M|   0     0 |  29k   25k
 61   8  30   0   0   1|   0  1168k| 336M  336M|   0     0 |  29k   24k
 63   8  27   0   0   1|   0  2240k| 124M  124M|   0     0 |  32k   33k
 62   8  28   0   0   1|   0  1632k| 110M  110M|   0     0 |  31k   33k
 67   9  23   0   0   2|   0  1604k| 130M  130M|   0     0 |  33k   32k
 63   9  27   0   0   2|   0  1496k| 145M  145M|   0     0 |  32k   32k
 61   9  29   0   0   1|   0  1112k| 132M  132M|   0     0 |  32k   33k
 63   9  27   0   0   2|   0  1220k| 145M  145M|   0     0 |  32k   33k
 53   7  40   0   0   1|   0  1360k| 115M  115M|   0     0 |  24k   26k
 51   7  41   0   0   1|   0  1184k| 146M  146M|   0     0 |  24k   27k
 39   6  54   0   0   1|   0  1284k| 105M  105M|   0     0 |  22k   28k
 41   6  52   0   0   1|   0  1264k| 116M  116M|   0     0 |  25k   28k
 48   6  45   0   0   1|   0  1272k| 143M  143M|   0     0 |  27k   27k

Releases

  • 2013-11-26, release v0.5, support HLS(m3u8), fragment and window. 14449 lines.
  • 2013-11-10, release v0.4, support reload config, pause, longtime publish/play. 12500 lines.
  • 2013-11-04, release v0.3, support vhost, refer, gop cache, listen multiple ports. 11773 lines.
  • 2013-10-25, release v0.2, support flash publish, h264 codec, time jitter correct. 10125 lines.
  • 2013-10-23, release v0.1, support FMLE/FFMPEG publish, vp6 codec. 8287 lines.
  • 2013-10-17, created.

Compare

  • srs v0.5: 14449 lines.
  • srs v0.4: 12500 lines.
  • srs v0.3: 11773 lines.
  • srs v0.2: 10125 lines.
  • srs v0.1: 8287 lines.
  • nginx-rtmp v1.0.4: 26786 lines
  • nginx v1.5.0: 139524 lines

History

  • v0.6, 2013-11-27, support --with or --without -hls and -ssl options.
  • v0.6, 2013-11-27, support AAC 44100HZ sample rate for iphone, adjust the timestamp.
  • v0.5, 2013-11-26, v0.5 released. 14449 lines.
  • v0.5, 2013-11-24, support HLS(m3u8), fragment and window.
  • v0.5, 2013-11-24, support record to ts file for HLS.
  • v0.5, 2013-11-21, add ts_info tool to demux ts file.
  • v0.5, 2013-11-16, add rtmp players(OSMF/jwplayer5/jwplayer6).
  • v0.4, 2013-11-10, v0.4 released. 12500 lines.
  • v0.4, 2013-11-10, support config and reload the pithy print.
  • v0.4, 2013-11-09, support reload config(vhost and its detail).
  • v0.4, 2013-11-09, support reload config(listen and chunk_size) by SIGHUP(1).
  • v0.4, 2013-11-09, support longtime(>4.6hours) publish/play.
  • v0.4, 2013-11-09, support config the chunk_size.
  • v0.4, 2013-11-09, support pause for live stream.
  • v0.3, 2013-11-04, v0.3 released. 11773 lines.
  • v0.3, 2013-11-04, support refer/play-refer/publish-refer.
  • v0.3, 2013-11-04, support vhosts specified config.
  • v0.3, 2013-11-02, support listen multiple ports.
  • v0.3, 2013-11-02, support config file in nginx-conf style.
  • v0.3, 2013-10-29, support pithy print log message specified by stage.
  • v0.3, 2013-10-28, support librtmp without extended-timestamp in 0xCX chunk packet.
  • v0.3, 2013-10-27, support cache last gop for client fast startup.
  • v0.2, 2013-10-25, v0.2 released. 10125 lines.
  • v0.2, 2013-10-25, support flash publish.
  • v0.2, 2013-10-25, support h264/avc codec by rtmp complex handshake.
  • v0.2, 2013-10-24, support time jitter detect and correct algorithm
  • v0.2, 2013-10-24, support decode codec type to cache the h264/avc sequence header.
  • v0.1, 2013-10-23, v0.1 released. 8287 lines.
  • v0.1, 2013-10-23, support basic amf0 codec, simplify the api using c-style api.
  • v0.1, 2013-10-23, support shared ptr msg for zero memory copy.
  • v0.1, 2013-10-22, support vp6 codec with rtmp protocol specified simple handshake.
  • v0.1, 2013-10-20, support multiple flash client play live streaming.
  • v0.1, 2013-10-20, support FMLE/FFMPEG publish live streaming.
  • v0.1, 2013-10-18, support rtmp message2chunk protocol(send_message).
  • v0.1, 2013-10-17, support rtmp chunk2message protocol(recv_message).

Winlin