Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

commshare/testLiveSRS

Repository files navigation

(1)build srs by means of "debian wheezy" with its toolschain gcc(armhf-4.6.3) and run on ns115 ok! 20150924

(0)### fork from #Simple-RTMP-Server

SRS/1.0, HuKaiqun

SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。
SRS is industrial-strength live streaming cluster, for the best conceptual integrity and the simplest implementation.

Download from github.io: Centos6-x86_64, more...
Download from ossrs.net: Centos6-x86_64, more...
Website for SRS/1.0, read SRS 1.0 Chinese or English.

About

SRS(SIMPLE RTMP Server) over state-threads created in 2013.10.

SRS delivers rtmp/hls live on x86/x64/arm/mips linux, supports origin/edge/vhost and transcode/ingest and dvr/forward and http-api/http-callback/reload, introduces tracable session-oriented log, exports client srs-librtmp, provides EN/CN wiki and the most simple architecture.

AUTHORS

There are three types of people that have contributed to the SRS project:

  • AUTHORS: Contribute important features. Names of all PRIMARY response in NetConnection.connect and metadata.
  • CONTRIBUTORS: Submit patches, report bugs, add translations, help answer newbie questions, and generally make SRS that much better.

About all PRIMARY, AUTHORS and CONTRIBUTORS, read AUTHORS.txt.

A big THANK YOU goes to:

Mirrors

Github: https://github.com/simple-rtmp-server/srs, the GIT usage( CN, EN )

git clone https://github.com/simple-rtmp-server/srs.git

CSDN: https://code.csdn.net/winlinvip/srs-csdn , the GIT usage( CN, EN )

git clone https://code.csdn.net/winlinvip/srs-csdn.git

OSChina: http://git.oschina.net/winlinvip/srs.oschina , the GIT usage( CN, EN )

git clone https://git.oschina.net/winlinvip/srs.oschina.git

Gitlab: https://gitlab.com/winlinvip/srs-gitlab , the GIT usage( CN, EN )

git clone https://gitlab.com/winlinvip/srs-gitlab.git

Usage

Step 1: get SRS

git clone https://github.com/simple-rtmp-server/srs &&
cd srs/trunk

Step 2: build SRS, Requires Centos6.x/Ubuntu12 32/64bits, others see Build( CN, EN ).

./configure && make

Step 3: start SRS

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

See also:

  • Usage: How to delivery RTMP?( CN, EN )
  • Usage: How to delivery HLS?( CN, EN )
  • Usage: How to delivery HLS for other codec?( CN, EN )
  • Usage: How to transode RTMP stream by SRS?( CN, EN )
  • Usage: How to forward stream to other server?( CN, EN )
  • Usage: How to deploy low lantency application?( CN, EN )
  • Usage: How to deploy SRS on ARM?( CN, EN )
  • Usage: How to ingest file/stream/device to SRS?( CN, EN )
  • Usage: How to use SRS-HTTP-server to delivery HTTP/HLS stream?( CN, EN )
  • Usage: How to show the demo of SRS?( CN, EN )
  • Usage: Solution using SRS?( CN, EN )
  • Usage: Why SRS?( CN, EN )

Wiki

SRS 1.0 wiki

Please select your language:

Donation

Donation:
http://winlinvip.github.io/srs.release/donation/index.html OR
http://www.ossrs.net/srs.release/donation/index.html

Donations:
[https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt] (https://github.com/simple-rtmp-server/srs/blob/develop/DONATIONS.txt)

System Requirements

Supported operating systems and hardware:

  • All Linux , both 32 and 64 bits
  • All hardware with x86/x86_64/arm/mips cpu.

Summary

  1. 简洁稳定:Simple, also stable enough.
  2. 高性能:High-performance: single-thread, async socket, event/st-thread driven.
  3. 高并发:High-concurrency, 1800 connections(500kbps), 900Mbps, CPU 90.2%, 41MB
  4. RTMP源站:Support RTMP Origin Server.
  5. CDN边缘(上下行加速):Support RTMP Edge Server for CDN, push/pull stream from any RTMP server
  6. 单进程(无多进程):Support single process; no multiple processes.
  7. 支持Vhost:Support Vhost, support __defaultVhost__.
  8. 直播(无点播):Support RTMP live streaming; no vod streaming.
  9. 苹果HLS:Support Apple HLS(m3u8) live streaming.
  10. 支持纯音频HLS:Support HLS audio-only live streaming.
  11. 支持Reload:Support Reload config to enable changes.
  12. 支持GopCache:Support cache last gop for flash player to fast startup.
  13. 侦听多端口:Support listen at multiple ports.
  14. 长时间推流:Support long time(>4.6hours) publish/play.
  15. 转发流:Support Forward in master-slave mode.
  16. 流转码:Support live stream Transcoding by ffmpeg.
  17. 支持FFMPEG滤镜:Support ffmpeg filters(logo/overlay/crop), x264 params, copy/vn/an.
  18. 只转码音频:Support audio transcode only, speex/mp3 to aac
  19. 支持HTTP回调:Support http callback api hooks(for authentication and injection).
  20. 带宽测速:Support bandwidth test api and flash client.
  21. 演示页面:Player, publisher(encoder), and demo pages(jquery+bootstrap).
  22. 视频会议演示:Demo video meeting or chat(SRS+cherrypy+jquery+bootstrap).
  23. 中文Wiki:Full documents in wiki, in Chineses.
  24. 客户端库:Support RTMP(play-publish) library: srs-librtmp
  25. 支持ARM平台:Support ARM(debian armhf, v7cpu) with rtmp/ssl/hls/librtmp.
  26. 支持Init.d脚本:Support init.d and packge script, log to file.
  27. 支持ATC:Support RTMP ATC for HLS/HDS to support backup(failover)
  28. 支持HTTP-RESTful-API:Support HTTP RESTful management api.
  29. 采集流:Support Ingest FILE/HTTP/RTMP/RTSP(RTP, SDP) to RTMP using external tools(e.g ffmepg).
  30. 支持录制:Support DVR, record live to flv file for vod.
  31. 可追溯日志:Support tracable log, session based log.
  32. 支持FMS-Token穿越:Support DRM token traverse for fms origin authenticate.
  33. 全面的Utest:Support system full utest on gtest.
  34. Stable 1.0release branch and 2.0dev branch.

Releases

History

  • v1.0, 2015年05月23日, 1.0r4 release(1.0.32) released. 59509 lines.
  • v1.0, 2015年05月22日, fix #397 the USER_HZ maybe not 100. 1.0.32
  • v1.0, 2015年03月26日, fix hls aac adts bug, in aac mux. 1.0.31.
  • v1.0, 2015年03月19日, 1.0r3 release(1.0.30) released. 59511 lines.
  • v1.0, 2015年03月17日, remove the osx for 1.0.30.
  • v1.0, 2015年02月17日, the join maybe failed, should use a variable to ensure thread terminated. 1.0.28.
  • v1.0, 2015年02月12日, 1.0r2 release(1.0.27) released. 59507 lines.
  • v1.0, 2015年02月11日, dev code HuKaiqun for 1.0.27.
  • v1.0, 2015年02月10日, for #310, the aac profile must be object plus one. 1.0.26
  • v1.0, 2015年01月25日, hotfix #268, refine the pcr start at 0, dts/pts plus delay. 1.0.25
  • v1.0, 2015年01月25日, hotfix #151, refine pcr=dts-800ms and use dts/pts directly. 1.0.24
  • v1.0, 2015年01月23日, hotfix #151, use absolutely overflow to make jwplayer happy. 1.0.23
  • v1.0, 2015年01月17日, hotfix #290, use iformat only for rtmp input. 1.0.22
  • v1.0, 2015年01月15日, 1.0r1 release(1.0.21) released. 59472 lines.
  • v1.0, 2015年01月08日, hotfix #281, fix hls bug ignore type-9 send aud. 1.0.20
  • v1.0, 2015年01月03日, hotfix to remove the pageUrl for http callback. 1.0.19
  • v1.0, 2015年01月02日, hotfix #207, trim the last 0 of log. 1.0.18
  • v1.0, 2015年01月02日, hotfix #216, http-callback post in application/json content-type. 1.0.17
  • v1.0, 2015年01月01日, hotfix #270, memory leak for http client post. 1.0.16
  • v1.0, 2014年12月29日, hotfix #267, the forward dest ep should use server. 1.0.15
  • v1.0, 2014年12月29日, hotfix #268, the hls pcr is negative when startup. 1.0.14
  • v1.0, 2014年12月22日, hotfix #264, ignore NALU when sequence header to make HLS happy. 1.0.12
  • v1.0, 2014年12月20日, hotfix #264, support disconnect publish connect when hls error. 1.0.11
  • v1.0, 2014年12月05日, 1.0 release(1.0.10) released. 59391 lines.
  • v1.0, 2014年12月02日, hotfix #239, traverse the token before response connect. 1.0.10.
  • v1.0, 2014年11月25日, update PRIMARY, AUTHORS, CONTRIBUTORS of SRS. 1.0.8.
  • v1.0, 2014年11月18日, all wiki translated to English. 1.0.7.
  • v1.0, 2014年11月13日, hotfix #200, deadloop when read/write 0 and ETIME. 1.0.6.
  • v1.0, 2014年11月06日, use number for macro VERSION_MAJOR, VERSION_MINOR and VERSION_REVISION. 1.0.5.
  • v1.0, 2014年10月24日, hotfix #186, drop connect args when not object. 1.0.3.
  • v1.0, 2014年10月24日, rename wiki/xxx to wiki/v1_CN_xxx. 1.0.2.
  • v1.0, 2014年10月19日, hotfix #183, donot support AnnexB when decoding RTMP body for HLS. 1.0.1.
  • v1.0, 2014年10月09日, 1.0 beta(1.0.0) released. 59316 lines.
  • v1.0, 2014年10月08日, fix #151, always reap ts whatever audio or video packet. 0.9.223.
  • v1.0, 2014年10月08日, fix #162, failed if no epoll. 0.9.222.
  • v1.0, 2014年09月30日, fix #180, crash for multiple edge publishing the same stream. 0.9.220.
  • v1.0, 2014年09月26日, fix hls bug, refine config and log, according to clion of jetbrains. 0.9.216.
  • v1.0, 2014年09月25日, fix #177, dvr segment add config dvr_wait_keyframe. 0.9.213.
  • v1.0, 2014年08月28日, fix #167, add openssl includes to utest. 0.9.209.
  • v1.0, 2014年08月27日, max connections is 32756, for st use mmap default. 0.9.209
  • v1.0, 2014年08月24日, fix #150, forward should forward the sequence header when retry. 0.9.208.
  • v1.0, 2014年08月22日, for #165, refine dh wrapper, ensure public key is 128bytes. 0.9.206.
  • v1.0, 2014年08月19日, for #160, support forward/edge to flussonic, disable debug_srs_upnode to make flussonic happy. 0.9.201.
  • v1.0, 2014年08月17日, for #155, refine for osx, with ssl/http, disable statistics. 0.9.198.
  • v1.0, 2014年08月06日, fix #148, simplify the RTMP handshake key generation. 0.9.191.
  • v1.0, 2014年08月06日, fix #147, support identify the srs edge. 0.9.190.
  • v1.0, 2014年08月03日, 1.0 mainline7(0.9.189) released. 57432 lines.
  • v1.0, 2014年08月03日, fix #79, fix the reload remove edge assert bug. 0.9.189.
  • v1.0, 2014年08月03日, fix #57, use lock(acquire/release publish) to avoid duplicated publishing. 0.9.188.
  • v1.0, 2014年08月03日, fix #85, fix the segment-dvr sequence header missing. 0.9.187.
  • v1.0, 2014年08月03日, fix #145, refine ffmpeg log, check abitrate for libaacplus. 0.9.186.
  • v1.0, 2014年08月03日, fix #143, fix retrieve sys stat bug for all linux. 0.9.185.
  • v1.0, 2014年08月02日, fix #138, fix http hooks bug, regression bug. 0.9.184.
  • v1.0, 2014年08月02日, fix #142, fix tcp stat slow bug, use /proc/net/sockstat instead, refer to 'ss -s'. 0.9.183.
  • v1.0, 2014年07月31日, fix #141, support tun0(vpn network device) ip retrieve. 0.9.179.
  • v1.0, 2014年07月27日, support partially build on OSX(Darwin). 0.9.177
  • v1.0, 2014年07月27日, api connections add udp, add disk iops. 0.9.176
  • v1.0, 2014年07月26日, complete config utest. 0.9.173
  • v1.0, 2014年07月26日, fix #124, gop cache support disable video in publishing. 0.9.171.
  • v1.0, 2014年07月23日, fix #121, srs_info detail log compile failed. 0.9.168.
  • v1.0, 2014年07月19日, fix #119, use iformat and oformat for ffmpeg transcode. 0.9.163.
  • v1.0, 2014年07月13日, 1.0 mainline6(0.9.160) released. 50029 lines.
  • v1.0, 2014年07月13日, refine the bandwidth check/test, add as/js library, use srs-librtmp for linux tool. 0.9.159
  • v1.0, 2014年07月12日, complete rtmp stack utest. 0.9.156
  • v1.0, 2014年07月06日, fix #81, fix HLS codec info, IOS ok. 0.9.153.
  • v1.0, 2014年07月06日, fix #103, support all aac sample rate. 0.9.150.
  • v1.0, 2014年07月05日, complete kernel utest. 0.9.149
  • v1.0, 2014年06月30日, fix #111, always use 31bits timestamp. 0.9.143.
  • v1.0, 2014年06月28日, response the call message with null. 0.9.137
  • v1.0, 2014年06月28日, fix #110, thread start segment fault, thread cycle stop destroy thread. 0.9.136
  • v1.0, 2014年06月27日, fix #109, fix the system jump time, adjust system startup time. 0.9.135
  • v1.0, 2014年06月27日, 1.0 mainline5(0.9.134) released. 41573 lines.
  • v1.0, 2014年06月27日, SRS online 30days with RTMP/HLS.
  • v1.0, 2014年06月25日, fix #108, support config time jitter for encoder non-monotonical stream. 0.9.133
  • v1.0, 2014年06月23日, support report summaries in heartbeat. 0.9.132
  • v1.0, 2014年06月22日, performance refine, support 3k+ connections(270kbps). 0.9.130
  • v1.0, 2014年06月21日, support edge token traverse, fix #104. 0.9.129
  • v1.0, 2014年06月19日, add connections count to api summaries. 0.9.127
  • v1.0, 2014年06月19日, add srs bytes and kbps to api summaries. 0.9.126
  • v1.0, 2014年06月18日, add network bytes to api summaries. 0.9.125
  • v1.0, 2014年06月14日, fix #98, workaround for librtmp ping(fmt=1,cid=2 fresh stream). 0.9.124
  • v1.0, 2014年05月29日, support flv inject and flv http streaming with start=bytes. 0.9.122
  • v1.0, 2014年05月28日, 1.0 mainline4(0.9.120) released. 39200 lines.
  • v1.0, 2014年05月27日, fix #87, add source id for full trackable log. 0.9.120
  • v1.0, 2014年05月27日, fix #84, unpublish when edge disconnect. 0.9.119
  • v1.0, 2014年05月27日, fix #89, config to /dev/null to disable ffmpeg log. 0.9.117
  • v1.0, 2014年05月25日, fix #76, allow edge vhost to add or remove. 0.9.114
  • v1.0, 2014年05月24日, Johnny contribute ossrs.net. karthikeyan start to translate wiki to English.
  • v1.0, 2014年05月22日, fix #78, st joinable thread must be stop by other threads, 0.9.113
  • v1.0, 2014年05月22日, support amf0 StrictArray(0x0a). 0.9.111.
  • v1.0, 2014年05月22日, support flv parser, add amf0 to librtmp. 0.9.110
  • v1.0, 2014年05月22日, fix #74, add tcUrl for http callback on_connect, 0.9.109
  • v1.0, 2014年05月19日, support http heartbeat, 0.9.107
  • v1.0, 2014年05月18日, 1.0 mainline3(0.9.105) released. 37594 lines.
  • v1.0, 2014年05月18日, support http api json, to PUT/POST. 0.9.105
  • v1.0, 2014年05月17日, fix #72, also need stream_id for send_and_free_message. 0.9.101
  • v1.0, 2014年05月17日, rename struct to class. 0.9.100
  • v1.0, 2014年05月14日, fix #67 pithy print, stage must has a age. 0.9.98
  • v1.0, 2014年05月13日, fix mem leak for delete[] SharedPtrMessage array. 0.9.95
  • v1.0, 2014年05月12日, refine the kbps calc module. 0.9.93
  • v1.0, 2014年05月12日, fix bug #64: install_dir=DESTDIR+PREFIX
  • v1.0, 2014年05月08日, fix #36: never directly use *(int32_t*) for arm.
  • v1.0, 2014年05月08日, fix #60: support aggregate message
  • v1.0, 2014年05月08日, fix #59, edge support FMS origin server. 0.9.92
  • v1.0, 2014年05月06日, fix #50, ubuntu14 build error.
  • v1.0, 2014年05月04日, support mips linux.
  • v1.0, 2014年04月30日, fix bug #34: convert signal to io thread. 0.9.85
  • v1.0, 2014年04月29日, refine RTMP protocol completed, to 0.9.81
  • v1.0, 2014年04月28日, 1.0 mainline2(0.9.79) released. 35255 lines.
  • v1.0, 2014年04月28日, support full edge RTMP server. 0.9.79
  • v1.0, 2014年04月27日, support basic edge(play/publish) RTMP server. 0.9.78
  • v1.0, 2014年04月25日, add donation page. 0.9.76
  • v1.0, 2014年04月21日, support android app to start srs for internal edge. 0.9.72
  • v1.0, 2014年04月19日, support tool over srs-librtmp to ingest flv/rtmp. 0.9.71
  • v1.0, 2014年04月17日, support dvr(record live to flv file for vod). 0.9.69
  • v1.0, 2014年04月11日, add speex1.2 to transcode flash encoder stream. 0.9.58
  • v1.0, 2014年04月10日, support reload ingesters(add/remov/update). 0.9.57
  • v1.0, 2014年04月07日, 1.0 mainline(0.9.55) released. 30000 lines.
  • v1.0, 2014年04月07日, support ingest file/stream/device.
  • v1.0, 2014年04月05日, support http api and http server.
  • v1.0, 2014年04月03日, implements http framework and api/v1/version.
  • v1.0, 2014年03月30日, fix bug for st detecting epoll failed, force st to use epoll.
  • v1.0, 2014年03月29日, add wiki Performance for RaspberryPi.
  • v1.0, 2014年03月29日, add release binary package for raspberry-pi.
  • v1.0, 2014年03月26日, support RTMP ATC for HLS/HDS to support backup(failover).
  • v1.0, 2014年03月23日, support daemon, default start in daemon.
  • v1.0, 2014年03月22日, support make install/install-api and uninstall.
  • v1.0, 2014年03月22日, add ./etc/init.d/srs, refine to support make clean then make.
  • 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.
  • v1.0, 2014年03月19日, refine handshake, client support complex handshake, add utest.
  • v1.0, 2014年03月16日, fix bug on arm of st, the sp change from 20 to 8, for respberry-pi, @see commit
  • v1.0, 2014年03月16日, support ARM(debian armhf, v7cpu) with rtmp/ssl/hls/librtmp.
  • v1.0, 2014年03月12日, finish utest for amf0 codec.
  • v1.0, 2014年03月06日, add gperftools for mem leak detect, mem/cpu profile.
  • v1.0, 2014年03月04日, add gest framework for utest, build success.
  • v1.0, 2014年03月02日, add wiki srs-librtmp, SRS for arm, product
  • v1.0, 2014年03月02日, srs-librtmp, client publish/play library like librtmp.
  • v1.0, 2014年03月01日, modularity, extract core/kernel/rtmp/app/main module.
  • v1.0, 2014年02月28日, support arm build(SRS/ST), add ssl to 3rdparty package.
  • v1.0, 2014年02月28日, add wiki BuildArm, FFMPEG, Reload
  • v1.0, 2014年02月27日, add wiki LowLatency, HTTPCallback, ServerSideScript, IDE
  • v1.0, 2014年01月19日, add wiki DeliveryHLS
  • v1.0, 2014年01月12日, add wiki HowToAskQuestion, RtmpUrlVhost
  • v1.0, 2014年01月11日, fix jw/flower player pause bug, which send closeStream actually.
  • v1.0, 2014年01月05日, add wiki Build, Performance, Forward
  • v1.0, 2014年01月01日, change listen(512), chunk-size(60000), to improve performance.
  • v1.0, 2013年12月27日, merge from wenjie, the bandwidth test feature.
  • v0.9, 2013年12月25日, v0.9 released. 20926 lines.
  • v0.9, 2013年12月25日, fix the bitrate bug(in Bps), use enhanced microphone.
  • v0.9, 2013年12月22日, demo video meeting or chat(SRS+cherrypy+jquery+bootstrap).
  • v0.9, 2013年12月22日, merge from wenjie, support banwidth test.
  • v0.9, 2013年12月22日, merge from wenjie: support set chunk size at vhost level
  • v0.9, 2013年12月21日, add players for play and publish.
  • v0.9, 2013年12月15日, ensure the HLS(ts) is continous when republish stream.
  • v0.9, 2013年12月15日, fix the hls reload bug, feed it the sequence header.
  • v0.9, 2013年12月15日, refine protocol, use int64_t timestamp for ts and jitter.
  • v0.9, 2013年12月15日, support set the live queue length(in seconds), drop when full.
  • v0.9, 2013年12月15日, fix the forwarder reconnect bug, feed it the sequence header.
  • v0.9, 2013年12月15日, support reload the hls/forwarder/transcoder.
  • v0.9, 2013年12月14日, refine the thread model for the retry threads.
  • v0.9, 2013年12月10日, auto install depends tools/libs on centos/ubuntu.
  • v0.8, 2013年12月08日, v0.8 released. 19186 lines.
  • v0.8, 2013年12月08日, support http hooks: on_connect/close/publish/unpublish/play/stop.
  • v0.8, 2013年12月08日, support multiple http hooks for a event.
  • v0.8, 2013年12月07日, support http callback hooks, on_connect.
  • v0.8, 2013年12月07日, support network based cli and json result, add CherryPy 3.2.4.
  • v0.8, 2013年12月07日, update http/hls/rtmp load test tool st_load, use SRS rtmp sdk.
  • v0.8, 2013年12月06日, support max_connections, drop if exceed.
  • v0.8, 2013年12月05日, support log_dir, write ffmpeg log to file.
  • v0.8, 2013年12月05日, fix the forward/hls/encoder bug.
  • v0.7, 2013年12月03日, v0.7 released. 17605 lines.
  • v0.7, 2013年12月01日, support dead-loop detect for forwarder and transcoder.
  • v0.7, 2013年12月01日, support all ffmpeg filters and params.
  • v0.7, 2013年11月30日, support live stream transcoder by ffmpeg.
  • v0.7, 2013年11月30日, support --with/without -ffmpeg, build ffmpeg-2.1.
  • v0.7, 2013年11月30日, add ffmpeg-2.1, x264-core138, lame-3.99.5, libaacplus-2.0.2.
  • v0.6, 2013年11月29日, v0.6 released. 16094 lines.
  • v0.6, 2013年11月29日, add performance summary, 1800 clients, 900Mbps, CPU 90.2%, 41MB.
  • v0.6, 2013年11月29日, support forward stream to other edge server.
  • v0.6, 2013年11月29日, support forward stream to other origin server.
  • v0.6, 2013年11月28日, fix memory leak bug, aac decode bug.
  • 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).

Performance

Performance benchmark history, on virtual box:

  • 2013年11月28日, SRS 0.5.0, 1800clients, 90%CPU, 41MB. benchmark
  • 2014年07月12日, SRS 0.9.156, 1800clients, 68%CPU, 38MB. benchmark
  • 2014年07月12日, SRS 0.9.156, 2700clients, 89%CPU, 61MB. benchmark
  • 2014年11月11日, SRS 1.0.5, 2700clients, 85%CPU, 66MB. (1.0 equals 2.0.12)

Latest benchmark(2014年07月12日):

  1. 300 connections, 150Mbps, 500kbps, CPU 5.7%, MEM 9208KB.
  2. 600 connections, 300Mbps, 500kbps, CPU 18.3%, MEM 13MB.
  3. 900 connections, 450Mbps, 500kbps, CPU 27.9%, MEM 20MB.
  4. 1200 connections, 600Mbps, 500kbps, CPU 43.9%, MEM 26MB.
  5. 1500 connections, 750Mbps, 500kbps, CPU 55.2%, MEM 32MB.
  6. 1800 connections, 900Mbps, 500kbps, CPU 68.8%, MEM 38MB.
  7. 2100 connections, 1050Mbps, 500kbps, CPU 75.7%, MEM 46MB.
  8. 2400 connections, 1200Mbps, 500kbps, CPU 83.7%, MEM 54MB.
  9. 2700 connections, 1350Mbps, 500kbps, CPU 89.9%, MEM 61MB.
[winlin@dev6 srs]$ dstat
----total-cpu-usage---- -dsk/total- ---net/lo-- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw 
 29 17 39 0 0 15| 0 5325B| 163M 163M| 0 0 |4331 3386 
 30 16 38 0 0 16| 0 5325B| 160M 160M| 0 0 |4252 3332 
 30 15 37 0 0 17| 0 7646B| 169M 169M| 0 0 |4015 2886 
 30 17 36 0 0 17| 0 1638B| 197M 197M| 0 0 |4021 3037 
 31 17 35 0 0 17| 0 410B| 204M 204M| 0 0 |4181 3243 
 33 17 32 0 0 18| 0 2185B| 191M 191M| 0 0 |4305 3592 
 31 15 36 0 0 18| 0 1229B| 127M 127M| 0 0 |4446 3822 
 34 18 30 0 0 18| 0 0 | 231M 231M| 0 0 |4461 3691 
 32 17 33 0 0 18| 0 410B| 169M 169M| 0 0 |4518 3788 

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) |
+---------------+---------------+-----------+----------+
| API/hook | Transcoder | HLS | RTMP |
| http-parser | FFMPEG/x264 | NGINX/ts | protocol |
+---------------+---------------+-----------+----------+
| Network(state-threads) |
+------------------------------------------------------+
| All Linux(RHEL,CentOS,Ubuntu,Fedora...) |
+------------------------------------------------------+

Modularity Architecture

+------------------------------------------------------+
| Main(srs/bandwidth/librtmp) |
+------------------------------------------------------+
| App(Server/Client application) |
+------------------------------------------------------+
| RTMP(Protocol stack) |
+------------------------------------------------------+
| Kernel(depends on Core, provides error/log) |
+------------------------------------------------------+
| Core(depends only on system apis) |
+------------------------------------------------------+

Stream Architecture

 +---------+ +----------+
 + Publish + + Deliver |
 +---|-----+ +----|-----+
+----------------------+-------------------------+----------------+
| Input | SRS(Simple RTMP Server) | Output |
+----------------------+-------------------------+----------------+
| Encoder(1) | +-> RTMP protocol ----+-> Flash Player |
| (FMLE,FFMPEG, -rtmp-+->-+-> HLS/NGINX --------+-> m3u8 player |
| Flash,XSPLIT, | +-> Fowarder ---------+-> RTMP Server |
| ......) | +-> Transcoder -------+-> RTMP Server |
| | +-> DVR --------------+-> FILE |
| | +-> BandwidthTest ----+-> Flash/StLoad |
+----------------------+ | |
| MediaSource(2) | | |
| (RTSP,FILE, | | |
| HTTP,HLS, ------+->-- Ingester ----(rtmp)-+-> SRS |
| Device, | | |
| ......) | | |
+----------------------+-------------------------+----------------+
Remark:
(1) Encoder: encoder must push RTMP stream to SRS server.
(2) MediaSource: any media source, which can be ingest by ffmpeg.
(3) Ingester: SRS will fork a process to run ffmpeg(or your application) 
to ingest any input to rtmp, push to SRS.
 +----------+ +----------+
 +--ATC->-+ server +--ATC->-+ packager +-+ +---------+
+----------+ | RTMP +----------+ RTMP +----------+ | | Reverse | +-------+
| encoder +->-+ +->-+ Proxy +-->-+ CDN +
+----------+ | +----------+ +----------+ | | (nginx) | +-------+
 +--ATC->-+ server +--ATC->-+ packager +-+ +---------+
 RTMP +----------+ RTMP +----------+

Remark: cluster over edge, see Edge Remark: cluster over forward, see Forward

+---------+ +-----------------+ +-----------------------+ 
+ Encoder +--+-->-+ SRS(RTMP Edge) +--->-+ (RTMP Origin) | 
+---------+ | +-----------------+ | SRS/FMS/NGINX-RTMP |
 | | Red5/HELIX/CRTMP |
 +-------------------------->-+ ...... |
 +-----------------------+ 
Schema#1: Any RTMP encoder push RTMP stream to RTMP (origin/edge)server,
 where SRS RTMP Edge server will forward stream to origin.
+-------------+ +-----------------+ +--------------------+
| RTMP Origin +-->-+ SRS(RTMP Edge) +--+->-+ Client(RTMP/HLS) |
+-------------+ +-----------------+ | | Flash/IOS/Android |
 | +--------------------+
 |
 | +-----------------+
 +->-+ SRS(RTMP Edge) +
 +-----------------+
Schema#2: SRS RTMP Edge server pull stream from origin (or upstream SRS 
 RTMP Edge server), then delivery to Client.

Bandwidth Test Workflow

 +------------+ +----------+
 | Client | | Server |
 +-----+------+ +-----+----+
 | |
 | connect vhost-------------> |
 | <-----------result(success) |
 | |
 | <----------call(start play) |
 | result(playing)----------> |
 | <-------------data(playing) |
 | <-----------call(stop play) |
 | result(stopped)----------> |
 | |
 | <-------call(start publish) |
 | result(publishing)-------> |
 | data(publishing)---------> |
 | <--------call(stop publish) |
 | result(stopped)(1)-------> |
 | |
 | <--------------------report |
 | final(2)-----------------> |
 | <END> |
 
@See: class SrsBandwidth comments.

Beijing, 2013.10
Winlin

About

srs build and run on ns115_debian7

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /