finds.dev← search

// the find

ossrs/srs

★ 28,962 · C++ · MIT · updated May 2026

SRS is a simple, high-efficiency, real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.

SRS is a battle-tested C++ media server that handles the full stack of streaming protocols — RTMP ingest, HLS/HTTP-FLV/MPEG-DASH delivery, WebRTC, SRT, and even GB28181 (Chinese surveillance camera protocol). It's aimed at teams building live streaming infrastructure who want a single binary instead of stitching together nginx-rtmp, Janus, and a CDN edge. At 170k lines and 13 years old, this is production software, not a weekend project.

1. Protocol breadth is genuinely impressive: RTMP → WebRTC transcoding, SRT ingest, WHIP/WHEP support, and GB28181 all in one process — most open-source alternatives cover maybe two of these. 2. The coroutine model (State Threads library) means the concurrency story is single-threaded cooperative, which makes the code far easier to reason about than epoll spaghetti — no lock nightmares on the hot path. 3. Docker image is the fastest path to a working streaming server you'll find; `docker run ossrs/srs:6` and you're streaming in under a minute. 4. The proxy layer (Go, in `cmd/proxy/`) handles clustering and origin load balancing as a separate concern, which is the right architectural split for horizontal scale.

1. The C++ codebase is 170k lines with vendored FFmpeg patches in `trunk/3rdparty/` — if you need to debug a codec issue or submit an upstream fix, you're navigating a significant amount of historical sediment. 2. The AI agent tooling baked into the repo (`.claude/`, `.codex/`, `.kiro/`, `.openclaw/` directories) is an unusual and opinionated addition that adds noise to the tree without clear benefit for most adopters. 3. Clustering via the Go proxy requires Redis for state sharing — adding a stateful dependency for what many users want as a stateless edge layer complicates ops. 4. WebRTC support is functional but the TURN/STUN story requires external infrastructure; the server won't work behind NAT without additional setup that isn't obvious from the quickstart.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →