Ad Player Demo
Idle
Docs →
0:00
AD Ad break
Event Log
Waiting for events…
SDK Config
Session

SGAI only. Leave unset and the backend decides: the break's resumeOffset is how far to seek, 0 means do not seek, and no value at all means seek by the ad duration. Setting it here overrides the backend — DAR skips the whole break, DAI resumes where content paused. Either way the seek is capped at the ad actually played, and applies on both timebases. Ignored in SSAI mode.

Constructor option; off by default. With an explicit Replacement (DAR) session, eligible single breaks keep content playing hidden and muted, so return needs no resume seek. Optional PlayerAdapter.setVideoQuality constrains bandwidth; if unavailable, playout continues and DA-CONTINUE-PLAYOUT-QUALITY-UNAVAILABLE warns that content may stay at normal bitrate. This is independent of Live/VOD, Anvato signaling, and timebase. A REFUSED diagnostic explains why normal pause/resume was retained.

SGAI only (NFL Channel/Network streams). Resolves pts-timebase breaks via in-stream Anvato ID3/emsg cues (type=cue&pts=…) instead of the raw manifest PTS; a break stays pending until its cue is seen.

wallclock timebase only. How long to wait for the stream's EXT-X-PROGRAM-DATE-TIME before deciding the stream carries none. A session starts before the player has loaded its source, so the first ticks see no PDT: in that gap the SDK schedules nothing rather than matching breaks against the system clock, which runs ahead of the live playhead and would fire a break early. It is a backstop, not a fixed delay — once content is playing with still no PDT (~1s) you immediately get one DA-PDT-MISSING (visible in the log and in Export/Analyze) and clock-based matching, so a PDT-less stream is never delayed. This window only applies when playback never starts. Blank = default 5; 0 = fall back immediately (the pre-PLAYG-360 behaviour — watch a live wallclock break fire early).

In SGAI this is the stream the player loads. In SSAI the SDK plays the stitched master instead — this URL just seeds the Stitcher Origin URL below.

Merged on top of each asset's own assetParameters from the break manifest, per key. Use Update asset parameters below to change them mid-stream — that overrides both.

Passed as assetParameterMacros to startSession on Load. Every listed $NAME$ found inside an asset-parameter value is replaced by the mapped string ("$WxH$" style values work). A JSON null marks the macro empty: the parameter that contains it is not sent and the event log shows DA-ASSET-PARAMETER-OMITTED. Leave a name out of the map to keep its token literal. A name may override a built-in $OPTIVIEW_* macro. A $ without a closing $ is left unchanged.

Off — the backend break manifest is used as-is.

Org ID, Channel ID, Custom Asset Key, Content URL and Asset Parameters are remembered in this browser. Reset to defaults

SSAI Stitcher (dev)

The content the stitcher fetches server-side (it follows redirects and resolves relative variant/segment URIs against the final URL). Defaults to the Content URL but may differ — some operators ingest a separate origin for SSAI. Left blank → falls back to the Content URL.

Caps rendition bitrate via max_bitrate; the stitcher drops higher variants from the master playlist.

Spawns a local @dolby-optiview/ads-sdk-stitcher dev server (via the Vite middleware) using the Org ID, Channel ID, GAM Network Code and the Stitcher Origin URL above as a single channel. The SDK only loads the stitched master.

Stitcher not running.
AI Troubleshooting

Capture a redacted diagnostic report and run the same analysis the @dolby-optiview/ads-sdk-mcp troubleshooting agent uses — fully client-side. No secrets leave the page.