How Tos

Source Synchronized Encoding (SSE) — bit-identical redundancy

Run two encoders against the same source so a packager or CDN can fail one entrypoint over to the other on a per-segment basis without manifest discontinuity.

Available in: UI · API

Use this how-to to set up a pair of encoders that produce bit-identical output from the same source. A downstream origin or CDN can then switch from one encoder's entrypoint to the other on a per-segment basis without inserting a discontinuity tag in the manifest, so viewers do not rebuffer when an encoder fails.

When to use this

Premium live where a single encoder failure must not produce a visible glitch on the viewer side — sports, news, premium VOD-window broadcasts, advertising-revenue-critical streams. For standard live with operator-driven failover, the runtime per-Destination toggle on On air is usually enough.

How it works

Two encoders ingest the same source and produce the same packaged output, segment by segment. The packaging stack waits for the active transcoding output before starting (avoiding stale data), strips per-segment byte-range indexes that would otherwise differ between the two encoders, and aligns segment boundaries to the keyframe interval so the two segment sets are interchangeable. An origin that subscribes to both entrypoints can deliver either one to the player; if one drops, the next segment is served from the other and the player never sees a discontinuity.

SSE supports two input modes:

ModeTime source for synchronisationNetwork requirement
SDIRP188 timecodes embedded in the SDI signal.None beyond the SDI feed itself.
StreamNTP-synchronised host clocks.Both encoder hosts must be NTP-synchronised. Both must receive the same UDP / multicast stream without packet re-stamping.

Prerequisites

  • Two Devices of the same kind (both GPU-based, or both CPU-based) reachable from the C21 Live Control instance.
  • A shared source that both encoders can ingest:
    • For SDI mode: both encoder hosts have access to the same SDI feed (either two parallel SDI runs from the same source, or an SDI distribution amplifier).
    • For Stream mode: both encoder hosts can pull the same UDP / multicast stream, and the upstream sender does not re-stamp packets.
  • For Stream mode: NTP synchronisation on both encoder hosts. The recording offset alignment depends on it.
  • An Encoding with a stable keyframe interval. SSE drives segment boundaries from this value — changing it after deployment shifts the alignment.
  • An origin or CDN downstream that supports per-segment failover between two entrypoints (CMAF or DASH-IF compliant origins; consult your downstream documentation).

Constraints

  • SCTE markers and timecodes must propagate identically to both encoders. Any divergence in the cue points breaks segment alignment.
  • On Stream mode the upstream sender must not re-stamp packets. A relay that rewrites timestamps defeats the redundancy.
  • Both encoders must run the same encoding profile — codec, bitrate, resolution, keyframe interval, HDR mode. The SSE pairing is per-encoding.

Via UI

Configure two Devices

Register both encoder Devices under Devices. Make sure they share the same type and hardware class.

Create the shared Channel and Encoding

Create a Channel of the matching input type (SDI for SDI mode, Stream for Stream mode) — both encoder hosts must be able to ingest it. Create an Encoding with the codec, bitrate, resolution and keyframe interval that the pair will produce.

Enable SSE on the Channel

Open the Channel editor and toggle Sync Source Encoding on. This flag tells the encoder side that any broadcast on this Channel must run in SSE mode.

Bind the Live stream on both encoders

Create two Live streams, both pointing at the same Channel, same Encoding and same Destinations, each running on one of the two Devices.

Start both Live streams

Start the two Live streams together. The two encoders begin producing the same packaged output; the downstream origin should report both entrypoints as healthy.

Via API

The SSE flag lives on the Channel:

curl -X PUT "https://<your-host>/c21apiv2/channels/<channelId>" \
  -H "Authorization: Bearer <YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "sync_source_encoding": true
    }
  }'

When the per-Channel value is not defined, a deployment-wide fallback constant can enable SSE globally (install-side detail — coordinate with your Cires21 representative).

Once the flag is on, the two Live streams that ingest this Channel through different encoder Devices run synchronously by default.

Packaging notes

  • Segment duration is driven by the Encoding's keyframe interval. Where segment concatenation is configured, multiple keyframe-aligned segments are grouped into the final delivered segment.
  • HLS master playlists omit the EXT-X-START tag — required for FFmpeg-based player compatibility.
  • HLS playlists carry an EXT-X-PROGRAM-DATE-TIME tag on every segment, anchored to wall-clock time and derived from the source's segmenter index.
  • Because that per-segment date-time is identical across every encoder ingesting the same Channel, a downstream origin (AWS MediaPackage v2, for example) anchors all renditions to the same instant.
  • DASH MPDs set suggestedPresentationDelay so the player stays a deterministic number of segments behind the live edge.
  • For CMAF / fMP4 outputs, per-segment byte-range indexes are stripped so the two encoder streams remain byte-comparable.

Verify

  • Both encoders publish segments with matching timestamps at the same nominal time.
  • For CMAF / fMP4 outputs, the segment bytes from one encoder match the segment bytes from the other (compare a sample manually if your origin doesn't expose this directly).
  • The origin's failover log records a per-segment swap on encoder failure with no manifest discontinuity seen by the player.
  • During a controlled stop of one encoder, the downstream player does not rebuffer.
  • Encodings → Color & HDR — the keyframe interval that drives segment boundaries lives on the Encoding profile.
  • Devices — register the two encoder Devices that will form the pair.
  • On air — per-Destination runtime toggle for the simpler operator-driven failover case.

FAQ

Copyright © 2026