Live · Server-side ad insertion for FAST

Ads stitched into your live channels — as one clean stream.

FAST World SSAI takes the linear channels ChannelForge produces, finds the ad breaks, decides which ads fill each one, and stitches that media straight into the viewer's HLS manifest. Program → ad → ad → program, with no separate ad player and no interruption. It's running today against real ChannelForge FAST channels — you can watch the inserted ads play through the breaks in the FAST World TV player.

01 · Origin
ChannelForge HLS
02 · Detect
SCTE ad break
03 · Decide
Ad pod
04 · Stitch
Into the manifest
05 · Play
One HLS stream
06 · Measure
Analytics
What it does

Everything a FAST break needs, decided server-side.

No client SDK, no VPAID, no second player. The stream the viewer receives already contains the ads.

SCTE break detection

Reads the ChannelForge origin and finds each avail from its SCTE cue markers, with a stable, per-channel opportunity id.

Deterministic decisioning

Priority- and weight-based selection over your house creatives, seeded per break so it fills the length exactly. Same seed and inventory → the same pod, every time.

VAST & real creatives

Ingest a third-party VAST tag (parsed, wrappers followed) or upload your own — creatives are conditioned to HLS offline, never on the playback path, and third-party tracking beacons fire server-side.

Always-complete breaks

Unsold time falls back to slate; a failure falls back to the origin. Playback always survives an advertising failure.

Full observability

Every decision is reconstructable — eligible and rejected creatives with reasons, the pod, and the complete impression → quartile → complete event timeline, reconciled per break.

Signed playback

Each session gets a signed, expiring playback token the data plane verifies before serving — session ids can't be forged.

How it works

Decide once, cache, and keep the stream fast.

For each break, the ad decision is made a single time per viewer and cached. Every playlist refresh after that is a pure read — no re-deciding, no transcoding, no third-party calls on the hot path. The result the player receives is a normal continuous HLS manifest: the ad segments are already in it, wrapped in the right discontinuities.

1 · Detect the avail

SSAI fetches the origin, finds the CUE-OUT…CUE-IN break, and reads its duration.

2 · Build the pod

Eligible creatives are selected by priority and weight, looped to fill a longer break, with any remainder padded by slate so the break is always complete.

3 · Stitch & serve

The pod's real segments replace the break in a per-viewer manifest, held a little behind the live edge so they reliably reach the player; impression and quartile beacons flow back and reconcile per break.

Run the console.

Manage channels, campaigns and creatives, watch fill and completion in real time, and trace any session end-to-end.