DAI player and app development guide
Use the following information to plan and manage your player and app development for Dynamic Ad Insertion (DAI).
Jump to a specific section
Two serving choices: Server-Side Beaconing (SSB) or the IMA SDK
Google Interactive Media Ads Software Development Kit (IMA SDK) has been enhanced to support server-side DAI implementations. This is the same SDK which enables a player to make client-side video ad requests and parse the VAST responses, but new methods have been added to the SDK which enable a player to request a video on demand stream or live stream. The IMA SDK enables your player to send Ad Manager signals for reporting and makes event tracking more accurate.
Server-Side Beaconing (SSB) allows the player to make a direct HTTP request to Ad Manager DAI system where Ad Manager performs estimates for ad metric reporting during the stream play. Any HLS player should be able to play Ad Manager DAI SSB streams, but there are some feature limitations. Learn more about Server-Side Beaconing for DAI
Support for Dynamic Ad Insertion is shown below, including those platforms where it is not supported. You can click to see sample apps and to see more information about each platform.
Basic sample apps demonstrate video tracking events only. These are ideal for publishers who only use pre-rolls.
Advanced sample apps demonstrate all basic app functionality, as well as bookmarking, snapback, subtitles, scrubbing and countdown timers. These are ideal for publishers who monetize long-form content.
|Platform||SSB support||DAI‑enabled IMA SDK||Sample apps||Additional documentation|
|iOS||Yes||iOS IMA SDK||iOS sample apps||iOS
|Yes||Android IMA SDK||Android sample apps||Android
|Yes||tvOS IMA SDK||tvOS sample apps||tvOS quickstart guide
at run time
|Roku sample apps||Roku
at run time
|Sample receiver app
In general, you must also have an iOS or Android app which can “cast” to a Chromecast device. You can refer to the “advanced sample” apps for iOS and Android for examples.
at run time
|HTML5 sample app
DAI demo HTML5 player
Support for video player controls
Video player controls are only supported with IMA SDK enablement. All advanced sample apps demonstrate feature functionality across the various supported platforms. The cue point information feature can also be demonstrated within basic sample apps.
Supported video player controls
Total Ads Countdown and Per Ad Countdown: Ability to add a countdown to state the amount of time remaining for the total number of ads or ad.
- iOS and Android: The IMA SDK has this optional feature available.
- Roku and tvOS: Within the IMA SDK, the advanced sample app has an example of this feature. You need to include custom code if this feature is required.
- Subtitles: Ability to add closed captioning within the content stream. Supported subtitle programs include:
- Timed Text Markup Language (TTML) (side-car): TTML is intended to be used for the purpose of transcoding or exchanging timed text information among legacy distribution content formats presently in use for subtitling and captioning functions.
- WebVTT (side-car): WebVTT files provide captions or subtitles for video content, textual video descriptions, chapters for content navigation, and more generally any form of metadata that is time-aligned with audio or video content.
- Bookmarking: Bookmarking is the ability to save and then return to a specific point in the content stream. Suppose a user watches five minutes of content, leaves same video stream, and then returns to it. Bookmarking saves the user's position in the stream so the stream can pick up from where it left off, providing a seamless experience to the viewer.
- Snapback Snapback is the ability to take the user back to the start of the ad break they seeked past and then return them to their seek location after that ad break has completed.
- Scrubbing: Typically a long-form content feature, provides the ability to see the first frame of the content as the user is scrolling through the content bar.
Override a default ad tag
When your video player requests a stream, this ad tag will be used exactly as you have specified it in the UI. However, you have the ability to override parameters of that tag in your stream request.
Learn how to supply targeting parameters to your stream.
Override stream variant parameters
The default HLS playlist order is determined by the publisher.
Overriding the variant selection and order parameters can be specified during stream creation time. This allows you to specify the subset of variants that should be included in the response to a master playlist request and the order of those variants. The subset and order of variants will remain the same for the life of the stream, unless explicitly overridden.
Learn how to override stream variant parameters.
Frequently asked questions
On VOD streams, you can configure whether to show pre-roll ads using ad rules.
On live linear streams, your video player should make a client-side Ad Manager ad request in order to show a pre-roll ad to a user before requesting the Ad Manager DAI live stream.
Set up an ad holiday
On live linear streams, you can use the "ad holiday" feature to avoid showing viewers another DAI ad immediately after they've just watched a pre-roll ad.
There are two parts to implementing an ad holiday:
When you create a CDN configuration for your video on demand content, you have the option to define a default CDN configuration, and additional CDN delivery settings. This allows you to set up more than one CDN and dynamically choose which you'd like to serve from, at the start of a session using a key-value.
Once you set up and save your CDN configurations, Ad Manager assigns a name to each. This name should be passed into the stream create request as a value of the
dai-dlid parameter. *
For SSB, the parameter would simply be passed as
AaBbC1aaBa0obA1BABaaBA is the name that appears in Ad Manager).
When using the IMA SDK, it should be passed into the stream create request using ad tag parameters.
* If no name is passed into the request, Ad Manager uses the default CDN.
ingestUrlthat was specified for Ad Manager in your content source MRSS feed. For live linear streams, this would be the URL for the stream from your encoder. Learn more about the best practices for DAI backup streams.