Overview
Discover what makes SRS (Simple Realtime Server) powerful
SRS (Simple Realtime Server) is a lightweight, high‑performance media gateway that turns any source into a multi‑protocol streaming endpoint. From the developer’s standpoint, it is an all‑in‑one server that ingests RTMP, SRT, or WebRTC streams and republishes them as HLS, HTTP‑FLV, MPEG‑DASH, or GB28181. The core of SRS is written in C++ with an event‑driven coroutine model, giving it low latency (≤ 20 ms) while maintaining CPU efficiency. The project is MIT‑licensed, which removes any commercial restrictions and encourages custom extensions.
Transport Layer
Stream Scheduler
Cache & Delivery
Admin API
Overview
SRS (Simple Realtime Server) is a lightweight, high‑performance media gateway that turns any source into a multi‑protocol streaming endpoint. From the developer’s standpoint, it is an all‑in‑one server that ingests RTMP, SRT, or WebRTC streams and republishes them as HLS, HTTP‑FLV, MPEG‑DASH, or GB28181. The core of SRS is written in C++ with an event‑driven coroutine model, giving it low latency (≤ 20 ms) while maintaining CPU efficiency. The project is MIT‑licensed, which removes any commercial restrictions and encourages custom extensions.
Architecture
SRS follows a single‑node monolithic design that can be horizontally scaled by running multiple instances behind a load balancer. Internally, it consists of:
- Transport Layer: Handles RTMP, SRT, WebRTC (via libwebrtc), and HTTP‑FLV sockets using non‑blocking I/O.
- Stream Scheduler: A coroutine pool that multiplexes incoming streams, performs transcoding (via FFmpeg integration), and serves downstream protocols.
- Cache & Delivery: An in‑memory segment cache for HLS segments and a short‑term buffer for WebRTC to support adaptive bitrate.
- Admin API: A RESTful HTTP interface (default port 8080) that exposes stream status, statistics, and dynamic configuration without restarting the server.
The server runs on Linux/macOS and supports ARMv7/AARCH64/M1/RISCV/LOONGARCH/MIPS, making it ideal for edge devices and cloud VMs alike. Deployment is container‑friendly; official Docker images expose all standard ports (1935 RTMP, 1985 HTTP‑FLV, 8080 admin, 8000/10080 UDP for SRT) and can be orchestrated via Kubernetes with simple Helm charts.
Core Capabilities
- Protocol Inter‑Conversion: Seamlessly convert RTMP → HLS/WebRTC or WebRTC → RTMP with zero‑configuration.
- Adaptive Bitrate & Segmenting: Auto‑generates HLS/DASH segments on the fly, supporting low‑latency variants (HLS‑LL).
- Security: Supports RTMP authentication, token‑based access control, TLS termination for HTTP and WebRTC, and SRT encryption.
- Extensibility: Plugin hooks (e.g.,
on_publish,on_play) allow custom logic in C++ or via external scripts (Python/Node) using the admin API. - Telemetry: Built‑in Prometheus metrics, OpenTelemetry exporter, and detailed logs (structured JSON) for observability.
Deployment & Infrastructure
SRS is designed to run in a container or on bare metal. For high‑availability, multiple instances can be placed behind an NGINX/HAProxy or a cloud load balancer. It consumes modest resources (≈ 200 MiB RAM for a single stream) and scales linearly with CPU cores. Kubernetes operators can manage lifecycle, auto‑scaling based on stream count, and health checks via the admin API. The Docker image is small (~ 120 MB), enabling fast CI/CD pipelines and edge deployments.
Integration & Extensibility
Developers can extend SRS in several ways:
- API Calls: REST endpoints for creating/deleting streams, fetching statistics, or adjusting bitrate on the fly.
- Webhooks: Trigger external services (e.g., CDN purging, analytics) when stream events occur.
- Custom Plugins: Compile C++ modules that hook into the event loop, enabling custom transcoding pipelines or analytics.
- SDKs: The server exposes a minimal JSON‑over‑HTTP interface that can be consumed by any language, making it trivial to embed SRS control into web apps or microservices.
Developer Experience
The project documentation is comprehensive, with a dedicated “Getting Started” guide, API reference, and architecture diagrams. The codebase follows clean C++ conventions, and unit tests are integrated with Codecov coverage reports. Community support is strong: a Discord channel, GitHub Discussions, and regular releases ensure rapid issue resolution. The MIT license removes licensing headaches, allowing enterprise use without per‑node fees.
Use Cases
- Live Event Platforms: Ingest RTMP from OBS, broadcast as low‑latency HLS to browsers and mobile apps.
- WebRTC‑Based Conferencing: Convert incoming WebRTC streams to RTMP for downstream processing or storage.
- Edge Streaming in IoT: Run SRS on ARM‑based gateways to rebroadcast camera feeds as HLS/DASH for remote monitoring.
- Streaming Analytics: Hook into the admin API to collect real‑time metrics for billing or adaptive bitrate strategies.
Advantages
SRS offers a unique blend of low latency, protocol versatility, and developer‑friendly extensibility. Compared to heavier media servers (e.g., Wowza, Nimble), it requires fewer resources and a smaller attack surface. Its coroutine architecture eliminates callback hell while keeping performance high, making it an attractive choice for latency‑critical applications such as online gaming or real‑time surveillance. The open‑source MIT license and active community further lower the barrier to adoption, ensuring that developers can tailor the server to their specific needs without licensing constraints.
Open SourceReady to get started?
Join the community and start self-hosting SRS (Simple Realtime Server) today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Medama Analytics
Cookie‑free, real‑time web analytics for self‑hosted sites
OpenOLAT
Intuitive LMS for scalable learning and assessment
CoreShop
Pimcore-powered eCommerce for precision and scalability
Chirpy
Privacy‑friendly, customizable comment system for modern websites
Alfresco Community Edition
Open‑source content and process management for enterprises

Digiview
Self-hosted digital collection organizer and viewer
