Skip to main content

Transcode profiles & ABR

A live stream is pure passthrough by default — the original signal is delivered as-is. Optionally, you can attach transcode profiles to build an adaptive bitrate (ABR) ladder so players can switch quality based on the viewer's bandwidth. This page explains the rendition limits and how to change the ladder while you are live.

Passthrough vs. transcoding

ModeWhat viewers get
Passthrough (0 renditions)The original signal is always served, unchanged.
Transcode (1–3 renditions)An ABR ladder built from the renditions you attach.

With 0 renditions, the stream is pure passthrough and the original is always served.

Rendition limits

  • You can attach up to 3 renditions per live stream (MaxRenditionsPerLiveStream).
  • Each rendition is a predefined transcode profile with a name, bitrate, width/height, fps, codec, and price.
  • You can also tick Include original quality (passthrough), which advertises the source in the master playlist. It does not count toward the 3-rendition cap.

So a single ABR ladder can advertise up to four levels: three transcoded renditions plus the original.

:::tip Build a sensible ladder A common ladder is 1080p, 720p, and 480p, with the original included so capable players can pick the best available quality. Order and selection are handled by the player from the master playlist. :::

Listing available profiles

Fetch the active profiles you can attach. They are returned ordered by bitrate, highest first:

curl 'https://api.paradarum.com/api/transcode-profiles' \
-H 'X-API-Key: pdm_YOUR_KEY'

Each profile includes these fields:

FieldDescription
idProfile identifier; pass these in profileIds.
nameDisplay name (for example, "1080p").
descriptionHuman-readable description.
bitrateTarget bitrate.
width / heightOutput resolution.
fpsOutput frame rate.
codech264 (default) or hevc.
monthlyPriceAdded to the stream's monthly price.
isActiveWhether the profile can be attached.

:::info Codec and container A profile's codec is h264 or hevc, and its container can be hls, dash, or both. Regardless of the per-profile container, the playback master always exposes both .m3u8 and .mpd URLs. See Playback URLs & manifest caching. :::

Setting renditions

You select renditions when you create a stream (see Publishing) or replace the full set later. Replacing the set takes the complete list of profile IDs you want — a maximum of 3:

curl -X PUT 'https://api.paradarum.com/api/livestream/45/renditions?accountId=123' \
-H 'X-API-Key: pdm_YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{ "profileIds": [1, 2] }'

Changing renditions while live

Changing renditions mid-broadcast does not take effect immediately. The running transcode keeps the old ladder, and the stream is flagged TranscodeDirty — your dashboard shows an amber "restart to apply" banner. The new ladder applies on the next publish, or when you trigger one of the restart actions below.

ActionEffectViewer impact
Restart transcodingRe-applies the ladder without dropping the publisher; renditions resume in ~2–3s.No publisher drop; brief rendition re-sync.
Force restartKicks the publisher so the encoder reconnects and re-applies the full config (renditions + auth + IP whitelist).Briefly interrupts the broadcast.
# Soft restart — no publisher drop
curl -X POST 'https://api.paradarum.com/api/livestream/45/restart-transcode?accountId=123' \
-H 'X-API-Key: pdm_YOUR_KEY'
# -> { "restarted": true }

:::tip Prefer the soft restart Use Restart transcoding to apply a changed ladder without dropping viewers. Reserve Force restart for when you also need new auth or IP-whitelist settings to take effect, since it relies on the encoder reconnecting. :::

Next steps