// the find
winshining/nginx-http-flv-module
A media streaming server based on nginx-rtmp-module. In addtion to the features nginx-rtmp-module provides, HTTP-FLV, GOP cache, VHosts (one IP for multi domain names) and JSON style statistics are supported now.
A fork of nginx-rtmp-module that adds HTTP-FLV output (so flv.js can play RTMP streams in-browser without Flash), GOP caching, virtual hosts, and JSON stats. It's for anyone running a self-hosted live streaming ingest/playback server on nginx who wants HTTP delivery instead of relying purely on the RTMP protocol for playback.
GOP cache is a real fix for the 'black screen for a few seconds' problem viewers hit when joining mid-stream on GOP-less players. HTTP-FLV plus flv.js is still a practical low-latency path for browser playback since MSE support is universal and it avoids WebRTC's signaling complexity. Vhost support means one nginx process can serve multiple stream domains off a single IP, which nginx-rtmp-module can't do. It's actually maintained (CI badge, commits into 2026) while upstream nginx-rtmp-module has been effectively dead for years.
It's a source module, not a package or binary — you compile it into a specific nginx source tree with --add-module, so upgrading nginx versions means re-patching and rebuilding, and there's no Docker image in the repo. The docs admit multi-worker-process mode is broken for several features (stat module misses data, vhost 'not perfect'), and the workaround is just running worker_processes 1, which caps throughput on multi-core boxes. RTMP ingest with Flash-era assumptions baked in (flv.js needs strictly H.264+AAC/MP3, no HEVC/Opus), no WebRTC ingest or WHIP/WHEP, so it doesn't fit anyone building toward sub-second latency. README doubles as the only real documentation — no separate reference for directives beyond inline comments in the sample config.