
Agora Interactive Live Streaming
Real-time interactive live video with sub-second latency.
Discover top open-source software, updated regularly with real-world adoption signals.

High‑performance NGINX RTMP server for live and on‑demand streaming
A versatile NGINX module delivering RTMP, HLS, and MPEG‑DASH live streams, VOD, recording, and FFmpeg‑based transcoding, with low memory footprint and extensive client compatibility.

The NGINX RTMP module turns a standard NGINX installation into a powerful media streaming engine. It targets developers and broadcasters who need a programmable, low‑overhead solution that integrates directly with existing web servers.
It natively handles RTMP, HLS, and MPEG‑DASH for live delivery, and can serve VOD from local FLV/MP4 directories. Built‑in recording lets you capture streams in configurable FLV chunks, while the exec directive launches FFmpeg for on‑the‑fly transcoding or custom processing. HTTP callbacks (on_publish, on_play, on_done, etc.) enable external authentication and analytics. Multi‑worker auto‑push distributes streams across several NGINX workers for scalability. The module runs on Linux, FreeBSD, macOS and Windows (with limited features) and works with popular clients such as Wirecast, Wowza, JWPlayer, and ffmpeg. Advanced buffering keeps memory usage minimal, and XML/XSL statistics are available via HTTP for monitoring.
When teams consider Nginx RTMP Module, these hosted platforms usually appear on the same shortlist.
Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.
Live webinar broadcasting
Publish a single RTMP stream and deliver HLS/DASH to web browsers and mobile devices with minimal latency.
On‑demand video library
Serve pre‑recorded FLV/MP4 files via VOD application, with optional per‑stream recording for archival.
Adaptive bitrate transcoding
Automatically transcode incoming high‑resolution streams to lower resolutions using FFmpeg exec, then redistribute via a separate application.
Distributed edge streaming
Push live streams from a central server to multiple remote NGINX workers for load‑balanced delivery.
Add `hls on;` and set `hls_path` inside an application block; serve the directory via an HTTP location.
Yes, using the `record` directives (e.g., `record all; record_path /tmp/av;`).
Transcoding relies on external FFmpeg; the module only launches the command via `exec`.
Basic allow/deny rules are available for publish/play; more complex auth can be implemented via HTTP callbacks (`on_publish`, `on_play`).
Windows builds do not support `exec`, static pulls, or `auto_push` directives.
Project at a glance
StableLast synced 4 days ago