Municipal and enterprise streaming

Every client gets their own broadcast — live, recorded, and on their site. Isolated workspaces. You stay in control.

Cities, schools, and companies use Flumen to go live without sharing a platform. You decide how many streams they can run and how much they can store. Their operators never see another tenant.

Platform architecture

Viewers on Cloudflare · restreams on the ingest VPS

  1. 01 · Contribution

    OBS · vMix · chamber codec

    SRT 8890 and RTMP 1935 into the ingest host. Stream keys keep each client on its own path.

  2. 02 · Ingest VPS

    Receive, overlay, restream, record

    MediaMTX packages HLS for origin pull. ffmpeg pushes restreams to social from this box. Recording waits the grace window, then one file.

  3. 03 · Cloudflare

    Every live viewer and VOD play

    Worker pulls HLS origin, caches segments at the edge. D1 holds the catalog. R2 holds archives. Public play never reaches the VPS.

  4. 04 · Social restream

    YouTube · Facebook · Twitch

    Paid RTMP push originates on the ingest VPS. It does not use Cloudflare bandwidth.

  • Live viewing

    The Worker pulls HLS once from the VPS. Every player is served from the Cloudflare CDN. Browsers never see the ingest IP.

  • Archive

    After the hold window, the VPS copies the file to R2. Playback is CDN-only.

  • Restream

    ffmpeg on the ingest box pushes RTMP to YouTube, Facebook, Twitch, or a custom server. That traffic never enters Cloudflare.

Live

SRT and RTMP, same channel.

Each channel has a stream key, an SRT passphrase, auto-record, and optional DVR. Residents and embeds watch from Cloudflare. Paid restreams to YouTube, Twitch, or Facebook leave the ingest box as RTMP.

  • Primary + overflow channels per client
  • Restream from the ingest VPS — not through Cloudflare
  • SRT latency profiles, path probe, and 10-hour soak tests
Sanctuary program feed
Chamber · program
SRT · RTMP

SRT latency

120 ms is a city hop. A 10-hour council session is a different budget.

Haivision’s floor is 4 × RTT, then ARQ, jitter, and clock drift. At 20 ppm the TSBPD window walks 72 ms every hour. Without a drift tracer the stock libsrt default is done in under two hours. The lab probes the path, writes ffmpeg and Haivision URLs, and soak-tests 10–24 hour contributions in a few seconds.

Path-aware profiles

Studio 40 ms through bonded 1.5 s and GEO 4.5 s. Apply to a channel; the ingest URL rewrites in microseconds for ffmpeg and milliseconds for Haivision.

10-hour soak

Time-compressed TSBPD, NAK recovery, bonded handoffs, and ingest RSS. Compare 80 / 120 / recommended / 2× before a long occupancy.

Drift tracer

libsrt 1.5 holds residual error under 30 ms over 12 hours. Turn it off to see why a 120 ms metro URL fails a Sunday-to-evening event.

Library

Every live becomes an object. Playlists are first-class embeds.

House of worship

Sunday program · archive to R2

Company / events

Restream to YouTube, Twitch, custom RTMP

Municipality

Council session · public site + playlist embed

Ingest fleet

A new client gets its own site and stream keys. Ingest stays on one locked-down VPS.

One ingest node

Every client publishes to the same locked ingest VPS. Stream keys keep tenants apart. Restreams to social leave this box as RTMP. Destroy a client and the box stays up.

Default-deny

1935/tcp RTMP, 1936/tcp RTMPS, 8890/udp SRT for encoders. Port 80 is HLS origin for Cloudflare Workers only — not for public viewers.

Cloudflare for every viewer

Live HLS and VOD play from the CDN. A packed council chamber costs Cloudflare egress, not ingest uplink. Catalog and quotas live in D1. Archives land in R2.

Admin roster

Create, suspend, and type-to-confirm destroy. Caps are per client. Recording stops at 100%. Warn at 80%.

Embed

One iframe for a video. A second for a playlist.

Drop players on church sites, tournament hubs, or civic pages. Restrict by domain. Live and VOD use the same Cloudflare player — the ingest IP never appears in the iframe.

Team permissions

Owner, admin, operator, viewer. Operators are scoped to the clients you assign — one, several, or none until they’re ready. Viewers can watch the library; they cannot rename, trim, or delete.

<iframe
  src="https://flumen.live/e/vpub_…"
  allow="autoplay; fullscreen"
  allowfullscreen
></iframe>

<iframe
  src="https://flumen.live/pl/ppub_…"
  allow="autoplay; fullscreen"
></iframe>