Skip to content
winlin edited this page Dec 23, 2015 · 64 revisions

SRS Roadmap

About the SRS History, Vision and Roadmap.

BigThanks

2013.9, I leave ChinaCache and create SRS at 2013.10 to show how to codec the RTMP for colleagues to maintain the SmartServer, which is for ChinaCache written by winlin.

2013.10, I join Chnvideo as the team leader of developers. Chnvideo encoder used to publish streams to nginx-rtmp before, but nginx-rtmp always crashed or had timestamp faults, so Chnvideo started to use SRS as the RTMP server.

2013.4, supported arm and mips, for example, raspberry-pi, cubieboard, and hiwifi. Most of the important SRS features were created during this period, for example: transcode, forward, ingest, DVR and edge.

2014.5, feature freeze, began to test and fix bug. Chnvideo planning to use SRS in some products.

2014.10,SRS1.0 beta is OK, waiting for bug reports and fixes and then 1.0 will be released at 2014.12. SRS 1.0, total of 1 year, 17milestones, 7 mainline versions, 223 revisions, 43700 lines of feature code, 15616 lines of utest code, 1803 commits, 161 bugs and features, 117 bugs fixed, 1 OS supported (Linux), 4 CPU architectures (x86/x64/arm/mips), 11 kernel features( origin、 edgevhosttranscodeingestDVRforwardHTTP-APIHTTP-callbackreloadtraceable-log),35 features,58 wiki,2 primary authors,12 contributors,14 donations,ChinaCache、VeryCloud、VeryCDN、Tsinghua use or develop on SRS,100 companies use SRS.

2014.10 start SRS2.0 development,6 months to complete,To research and master st, simplify client packet send model, and refine other small features. Other features postponed to 3.0+。

Thanks to winlin for creating, architecting, coding, testing and writing the wiki for SRS. Thanks to my parents and teachers. Thanks to my colleagues who helped me. Thanks to all contributors and users of SRS. Let's push SRS to be better together~

SRS will be a very important member in server software development.

Vision

SRS is industrial-strength live streaming cluster, for the best conceptual integrity and the simplest implementation.

  • Industrial-strength: SRS provides a high availability (right now we know of a Chinese CDN using SRS to deliver 100Gbps+ of live streaming media), high performance, industrial strength Internet live video streaming solution with traceable logs, reloading and vhost support.
  • Internet: SRS is refined again and again to get the best conceptual integrity and the simplest implementation, because the internet application changes every day and evolves very fast, for everyone to master SRS in very short time.
  • Live Streaming: SRS will never support both VOD and Live, because these two kinds of streaming are very very different. We recommend that VOD use HTTP, and live which requires low latency use RTMP, while both RTMP and HTTP are okay for live without low latency requirements.
  • Conceptual Integrity: SRS will be refined again and again until the code is frozen for release. The conceptual integrity is refined again and again. For example, we will figure out the traceable log, which involves identifying an identifier for each connection, and a server ID in the RTMP response, and upnode ID for the edge.
  • Simplest Implementation: SRS will never add features which are very hard to implement, and we will figure out the simplest architecture and logic for the code. We will do our best to keep the code as simple as we can. Maybe SRS does not provide lots of features, maybe the code is not elegant, but it's the simplest we can achieve.

Notes: for conceptual integrity refer to Brooks.

Release1.0

Dev code: HuKaiqun, my teacher.

SRS release 1.0, developed about 1 year, with these main goals:

  • Live stream for internet applications: RTMP and HLS stream delivery, supporting any origin, encoder and player.
  • Dozens of features, such as Foward, Transcode, Ingest, and DVR for example, so that you can build your application very fast and stably. Compared to FMS, where the user needs a server-side DVR script and to click the DVR button on FMLE, SRS only need 3 lines of configuration to enable the DVR feature.
  • Features for CDN, for example: vhosts, HTTP API, reloading, traceable logs and a wiki. Vhost is very important for CDN to serve multiple customers specified by vhost on the same live streaming platform. Reload is necessary to make adjustments at any time. Traceability to figure out what happens when a problem occurs.
  • Full utest and benchmark mechanism: utest for core, kernel, protocol and some components of the application. Performance bechmarking by gperf and gprof.
  • For ARM and MIPS, SRS can run on raspberry-pi and cubieboard.
  • High performance: supports 2.7k clients.

SRS Release 1.0 already released at 2014.12.5.

Release2.0

Dev code: ZhouGuowen, my teacher.

SRS release 2.0, developed about 1 year, with these main goals:

  • Support English wiki (EN+CN).
  • Enhance performance, supports playing 10k+ streams and publishing 4.5k+ streams. Read #194, #237 and #251.
  • The srs-librtmp supports publishing h.264 and aac raw stream. Read #66 and #212.
  • Research and simplify st, remove platform code to only support linux/arm. Read #182.
  • Support srs-librtmp compilation on windows, read bug #213 and srs-librtmp.
  • Simplify the handshake, use template method to remove union. Read #235.
  • The srs-librtmp supports hijack io for st-load.
  • Support min-latency(realtime) mode, 0.1s+ latency. Read #257.
  • Support security features allow/deny publish/play all/ip. Read #211.
  • Support custom dvr path and dvr http callback.
  • Rewrite the embedded HTTP server, refer to go HTTP. Read #277.
  • Remux RTMP to HTTP flv/mp3/aac/ts live stream, read #293.
  • Support HLS in RAM, without writing to disk. Read #136.
  • Enhanced DVR, support append/callback, read #179.
  • Enhanced HTTP API, support query stream/vhost, read #316.
  • Support HSTRS(http stream trigger ramp source), for HTTP-FLV standby and edge server, read #324.
  • [experimental]Support HDS, read #328.
  • [experimental]Support push MPEG-TS over UDP to SRS, read #250.
  • [experimental]Support push RTSP to SRS, read #133.
  • [experimental]Support remote console management, read console.
  • Other small changes.

SRS Release 2.0 planned alpha on 2015.12, no plan for release.

Release3.0

Dev code: OuXuli, my college teacher, the founder of Qgzxol.com.

[SRS release 3.03.0release is developing now. The main goals may include:

  • Support NGINX-RTMP style EXEC, read #367.
  • Support NGINX-RTMP style dvr control module, read #459.
  • Support HTTP Security Raw Api, read #459, #470, #319.
  • Support Integration with Kafka/Spark Big-Data system, read #467.
  • [plan]Support snapshot thumbnail by HttpCallback and Transcoder, read #152.
  • [plan]Support Origin Cluster for Load Balance and Fault Tolarence, read #464, RTMP 302.
  • [plan]Support H.265, push RTMP with H.265, delivery in HLS, read #465.
  • [plan]Support MPEG-DASH, the future streaming protocol, read #299.
  • [plan]Support HLS edge server, read #466.
  • [plan]Support HLS realtime latency mode, read #468.
  • [plan]Others.

SRS Release 3.0 no plan for release.

Backlog

SRS 3.0+ features backlog:

SRS features: the best or nothing!

Winlin, 2014.10

Welcome to SRS wiki!

SRS 1.0 wiki

Please select your language:

SRS 2.0 wiki

Please select your language:

SRS 3.0 wiki

Please select your language:

Clone this wiki locally