Skip to main content

Live streaming overview

Paradarum Live lets you publish a live signal over RTMP, RTMPS, or SRT to a geo-routed live point of presence (PoP) and deliver it to viewers as adaptive HLS (.m3u8) through the same CDN that serves your normal properties. This page explains the end-to-end model so you know which hostname to publish to, which one to play from, and how a live stream moves through its lifecycle.

The two hostnames: ingest vs. playback

Every live stream gets a random 10-character emission point (its stream key). That single key is used in both the ingest URL and the playback URL — but the two live on deliberately separate hostnames and PoP fleets:

RoleHostRouted toUsed for
Ingest<key>.live.prdrm.netLive PoPs (SRS)Publishing from your encoder
Playback<key>.prdrm.netCDN PoPsViewers playing HLS

Replace <key> with your stream's 10-character emission point, shown on the stream's Endpoints tab in your dashboard.

Never play from the ingest host

<key>.live.prdrm.net is for publishing only. Viewers must always play from the CDN playback host <key>.prdrm.net. Sending viewers to the ingest host bypasses the CDN and points them at the live PoP directly. See Playback URLs & manifest caching.

Playback rides a managed CDN property

When a stream is provisioned, the API auto-creates a backing CDN property for playback. Its origin points at the assigned live PoP's internal IP (port 8088), and it ships with system-defined HLS cache rules plus a CORS rule, so playback flows through the CDN exactly like any other property.

This backing property is created managed and its rules are system rules — your dashboard shows it read-only. You can open it from the stream's Endpoints tab (the Open CDN property button) to inspect the rules and hostnames, but you should not hand-edit the system manifest, segment or CORS rules. See Playback URLs & manifest caching for what those rules do.

Failover follows the stream

If a publisher lands on a PoP other than its assigned home (for example, during failover), the publish hook repoints the backing property's origin to the real publishing PoP, so playback always follows the stream.

End-to-end flow

  1. Your encoder publishes to the ingest URL. The live PoP authorizes the publisher (stream key, plus optional IP whitelist and user/password). See Publishing.
  2. The signal is delivered as-is (passthrough) or transcoded into an adaptive bitrate ladder of up to 3 renditions. See Transcode profiles & ABR.
  3. The PoP packages the output as HLS.
  4. Viewers pull master.m3u8 from the CDN playback host, where manifests and segments are cached. See Playback & caching.

Stream lifecycle

A live stream moves through a small set of states. The numeric values come from the LiveStreamStatus enum returned by the API.

StatusValueMeaning
Disabled0The stream is administratively disabled and cannot publish.
Provisioned1Provisioned and ready to receive a publisher ("Ready").
Publishing2A publisher is connected and broadcasting ("Live").
Stopped3The publisher disconnected; the stream is idle.
Suspended4The stream is suspended and cannot publish.

The typical happy path is Provisioned → Publishing → Stopped, cycling between the last two as encoders connect and disconnect. When your encoder connects, the status moves to Publishing and your dashboard shows a green "Broadcasting" indicator with live input kbps, a sparkline, and the input resolution and codec.

Billing model

Live is a monthly subscription: the price is the ingest slot (€12/month) + the sum of the rendition prices for the renditions you attach — see Transcode profiles & ABR for the rendition prices. The first month is charged immediately from your account balance when you create the stream. Live streaming is available from the Starter plan — see Plans & pricing.

What can stop creation

Creating a stream fails with 422 if your balance is below the price, 403 if you have hit the per-account live-stream cap, or 503 if no live PoP currently has capacity.

Next steps