Skip to content

Live Stream Ad Markers (SCTE-35)

If you bring your own live stream — an external HLS or DASH manifest from your own encoder or CDN — you can control exactly where ad breaks happen by embedding SCTE-35 ad markers in the manifest. Vidori’s player detects these markers and plays an ad at each break, then resumes your live content.

  1. Set up your ad tag. Under Settings → Advertising, configure your VAST tag URL and make sure advertising is enabled. Your markers decide when a break happens; your ad settings decide what plays. See Advertising for details.

  2. Embed ad markers in your manifest. Your encoder or origin adds SCTE-35 cue-out / cue-in markers at each ad opportunity (see the examples below).

  3. Vidori inserts the ads. When playback reaches a marker, the player pauses the live feed, plays the ad, and returns to the live edge when the ad finishes.

Vidori reads standards-compliant #EXT-X-DATERANGE tags in your live media playlist. Mark the start of a break with SCTE35-OUT and a PLANNED-DURATION (in seconds), and the end with SCTE35-IN:

#EXTINF:6.000,
segment-1001.ts
#EXT-X-DATERANGE:ID="break-1",START-DATE="2026-07-08T20:15:00.000Z",PLANNED-DURATION=30.0,SCTE35-OUT=0xFC30...
#EXTINF:6.000,
segment-1002.ts
#EXTINF:6.000,
segment-1003.ts
#EXT-X-DATERANGE:ID="break-1",START-DATE="2026-07-08T20:15:30.000Z",SCTE35-IN=0xFC30...
#EXTINF:6.000,
segment-1004.ts
MarkerSupported
HLS #EXT-X-DATERANGE with SCTE35-OUT / SCTE35-INYes
HLS #EXT-X-DATERANGE with a PLANNED-DURATION / DURATIONYes
DASH EventStream / emsg SCTE-35Yes
HLS #EXT-X-CUE-OUT / #EXT-X-CUE-IN (legacy)Not yet
#EXT-OATCLS-SCTE35 / raw binary-only payloadsNot yet
  1. No ads play. Confirm advertising is enabled under Settings → Advertising and that your VAST tag returns an ad. A break with no available ad simply stays on live content — there is no black screen.

  2. The same ad plays twice. Make sure every #EXT-X-DATERANGE uses a stable, unique ID.

  3. A viewer who joins mid-break sees content, not the ad. This is expected — viewers who join after a break has started are not pulled into an in-progress ad.