Livesim2 URL generator

host=https://livesim.dashif.org

SegmentTemplate variant
General timing ...
Multi-period ...
Low latency...
SSR
MPD Patch...
Provides delta DASH MPDs at a PatchLocation

Set a positive TTL in seconds

SCTE-35...
SCTE-35 emsg frequency
Start and stop...
Generate time subtitles...
Time subtitle region
Inject in-band CTA-608 captions...
Encryption and DRM
Encryption on-the-fly with keys via ECCP or commercial DRM systems. Pre-encrypted assets cannot be changed.
See /config for what commercial DRMs are configured.
For more about DASH-IF ECCP see DASH-IF IOP Part 6
Annex I URL Parameters...
Server-Guided Ad Insertion (SGAI, DASH Ed.6)...
Personalized live ad replacement via Alternative-MPD Replace events

The live stream is annotated with DASH 6th-edition Alternative-MPD Replace events. At each break the player resolves an ad-decisioning endpoint (default /sgai/ads), plays the returned ad pod (a List MPD), then resumes the live stream. Grammar:

( <off>:<dur>[,<off>:<dur>...] | p<period>:<dur> )[;key=val;...]
where each off:dur is one break, both in seconds:

  • off — break start, seconds from the period (availabilityStartTime) start
  • dur — break duration; also the maximum ad-pod duration (ads are trimmed to fit)
  • p<period>:<dur> — recurring breaks instead: a break of dur at every wall-clock multiple of period (e.g. p60:20 = 20 s at every start of a UTC minute, forever). Anchored to the wall clock, not the session start, so all viewers share the schedule and a late joiner can land in the middle of a break.

Optional ;key=val settings after the break list:

  • skipafter=<s> — ads become skippable after s seconds (default: not skippable)
  • nojump=<0|1|2> — restrict skipping the break by seeking (default 0)
  • clip=<0|1> — clip the replaced main content (default 1)
  • once=<0|1> — each event executes only once (default 1)
  • resolve=<s> — earliestResolutionTimeOffset: how many seconds before the break the player may resolve the ad (default 60)
  • ep=<path> — ad-decisioning endpoint path (default /sgai/ads)

Example:

30:15,90:15;skipafter=5;nojump=2
two 15 s breaks (at 30 s and 90 s), skippable after 5 s, not skippable by seeking.
During each break the underlying (clear AVC) video track serves a generated AD BREAK slate with a per-second countdown to the end of the break — the visible "ad to be replaced", i.e. the base ad. Players that execute the Replace event cover it with the personalized pod; others show the slate. Audio is untouched.
An ad pod is only returned for an interest-steered request: with no interests (or interests that match no creative) the decisioning answers 404, the Replace event is skipped, and every player keeps the AD BREAK slate (the base ad). This is the default when neither sessionId nor interests are given.
Cannot be combined with the multi-period / xlink / insertad options.

sessionId and interests are added as MPD-URL query parameters and propagated to the ad-decisioning request via Annex I, so each viewer can receive a different, interest-steered ad pod. With no interests the decisioning returns no pod and the viewer sees the base ad (the AD BREAK slate). Watch ad decisions and impression beacons live at /sgai/session_status.

DASH Content Steering (ISO/IEC 23009-1 6th ed., ETSI TS 103 998)...
Multi-CDN steering with a steering server on this same host

The MPD advertises two or more service locations ("CDNs") — all pointing back to this server — plus a root <ContentSteering> element referencing a steering endpoint here. The player polls it, gets a PATHWAY-PRIORITY ordering with a TTL, and switches CDN accordingly. Grammar:

<loc1>,<loc2>[,<loc3>...][;key=val;...]
at least two comma-separated service-location names, then optional ;key=val settings:

  • ttl=<s> — steering-manifest TTL in seconds; the client re-polls every TTL (default 300)
  • mode=rotate|triggertrigger (default) holds the priority at the default order until you trigger a switch via the API / monitor; rotate rotates the priority one step every TTL automatically (wall-clock based, all clients in lockstep)
  • qbs=<0|1> — queryBeforeStart: resolve the steering server before playback starts (default 0)
  • default=<name> — the initial top service location (default: the first one listed)

Example:

alpha,beta;ttl=20
two CDNs, 20 s TTL, priority held on alpha until you flip it (trigger is the default).
Cannot be combined with the traffic option (both generate BaseURLs).

Watch the per-CDN segment request distribution and the current priority live, and drive a change with the Switch CDN / make-top buttons, at /steering/session_status, or via the API at /api/steering/sessions[/<sid>] and POST /api/steering/sessions/<sid>/switch. To move a whole group at once use /api/steering/groups[/<csid>] and POST /api/steering/groups/<csid>/switch, or open the monitor with ?csid=<group>.

Negative test cases...