Introduction | SRS (original) (raw)

Note: SRS5 is now stable and available for use in your product environment.

SRS is a open-source (MIT Licensed), simple, high-efficiency, real-time video server supporting RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH, and GB28181. SRS media server works with clients like FFmpeg,OBS, VLC, and WebRTC to provide the ability to receive and distribute streams in a typical publish (push) and subscribe (play) server model. SRS supports widely used internet audio and video protocol conversions, such as converting RTMP or SRT to HLS, HTTP-FLV, orWebRTC.

SRS provides an HTTP API open interface to query system and stream status. It also supportsHTTP Callback for callback capabilities, actively notifying your system and implementing stream authentication and business customization (such as dynamic DVR). SRS also supports the officialPrometheus Exporter for integration with cloud-native monitoring systems, offering powerful observability. SRS supports session-level traceable logs, greatly reducing system maintenance costs.

If you are new to audio, video, and streaming media or new to SRS, we recommend reading Getting Startedand Learning Path. Please take the time to read the following documentation, as reading and familiarizing yourself with the documentation is a basic requirement of the community. If you encounter any problems, please first search in the FAQ, then in Issues andDiscussions to find answers to almost all questions.

SRS is developed using ANSI C++ (98) and only uses basic C++ capabilities. It can run on multiple platforms such as Linux, Windows, and macOS. We recommend using Ubuntu 20+ for development and debugging. The image we provide ossrs/srs is also built on Ubuntu 20 (focal).

Note: To solve the long connection and complex state machine problems in complex streaming media processing, SRS uses ST(State Threads) coroutine technology (similar to Goroutine) and continuously enhances and maintains ST's capabilities, supporting multiple platforms such as Linux, Windows, macOS, and various CPU architectures like X86_64, ARMv7, AARCH64, M1, RISCV, LOONGARCH, and MIPS.

Features

Functionality is often a major concern for people and the richness of features is an important reason for choosing a project. You can view the detailed feature list at Features. We have listed the main features' versions, along with related Issue and PR links.

Additionally, in the detailed description of Milestones, the supported features for each major version are introduced.

Note: If you want to see the Issues for each milestone, you can check them at Milestones.

Please note that although not many, SRS still marks some features as Deprecated. You can search for 'Deprecated' or 'Removed' on the page. We will also explain in detail why we are removing a particular feature.

If you want to know about the features we are currently working on, you can join our Discordand Blog. Once new features are completed, we will post articles on Discord and Blog, so stay tuned.

Who's using SRS?

SRS users are spread all over the world, and we welcome everyone to showcase their SRS applications in SRS Use Cases.

Governance

We welcome everyone to participate in the development and maintenance of SRS. We recommend starting by resolving issues from Contribute and submitting PRs. All contributors will be showcased in Contributors.

SRS is a non-commercial open-source community where active developers have their own jobs and contribute to SRS's development in their spare time.

Since the SRS system is highly efficient, we can spend minimal time making continuous improvements, delivering feature-rich and stable high-quality products. Customizing based on SRS is also easy.

We are a global open-source community with developer communities both domestically and abroad. We welcome developers to join us:

SRS currently uses the following techniques and rules to ensure high quality and efficiency:

We welcome you to join us. For more information, please visit Contributeand submit a pull request as required.

Milestone

SRS releases a major version approximately every two years, with one year for development and one year for stability improvement. For more details, please refer to Milestone.

If you want to use SRS online, it's recommended to use the stable version. If you want to use new features, use the development version.

SRS has branches based on versions, such as:

To determine if a branch is stable, check the Releases tag, such as SRS 4.0:

Note: In addition to beta versions, there are alpha versions, such as v5.0-a0, which are less stable internal test versions compared to beta.

Note: Each alpha, beta, and release version will correspond to a specific version number, such as v5.0-a0corresponding to v5.0.98.

For SRS, generally, once it reaches the beta version, it can be used online.

Strategy

SRS doesn't develop client-side applications because there are already mature and large open-source communities like FFmpeg, OBS, VLC, and WebRTC. SRS collaborates with these communities and uses their products.

In addition to the SRS server, they also work on Oryx and WordPress plugins, with the main goal of creating simpler application methods for different industries, including:

SRS will continue to improve its toolchain. Developers may not use SRS but might have used the SB stress testing tool:

SRS aims to continuously improve audio and video toolchains, solutions, and scenario-based capabilities, making it possible for various industries to utilize audio and video capabilities.

SRS is committed to building a non-profit open-source project and community. We provide special community support for friends who sponsor SRS. Please see Sponsor.

Audio and video developers often face challenges, and they might be used to the close support from cloud service providers. When joining an open-source community, it might feel unfamiliar.

Don't panic when encountering issues. Most problems have solutions that can be found in the FAQor the documentation Docs.

You can also join the Discord channel through Support to communicate with other developers. However, please follow community guidelines, or you won't receive help.

As developers, we must learn to read documentation, investigate issues, and then discuss them within the community.

For advanced developers, we suggest becoming a Backer/Sponsor. See Support.

SRS has no commercial plans. We are currently working hard to build a global, active developer community. The value of open-source will grow, and community support will increase.

About Oryx

Oryx is a lightweight, open-source video cloud solution based on Go, Reactjs, SRS, FFmpeg, WebRTC, and more. For more details, please refer to Oryx.