Video Cloud SSAI Overview

In this topic, you will learn how to use Brightcove Server-Side Ad Insertion (SSAI) with videos ingested for Dynamic Delivery.


The number of devices capable of playing video expands every day. OTT connected devices, in particular, continue to replace traditional TV at a rapid pace. In this environment, it can be costly and time consuming to build client player integrations for every device platform and every ad server or network. Sometimes it's not practical to build client players for certain platforms at all.

Brightcove SSAI provides an easy way to deliver ad-supported video to these devices, without having to build and maintain costly integrations for every device. Brightcove SSAI stitches ads right into the video content stream, so it works on any device that can play streaming video, along with per-session ad targeting, client-side beaconing, viewability reporting, and compatibility with popular ad services -- all within the industry-leading Video Cloud online video platform.

Process flow

Without SSAI, client-side ads, such as IMA or FreeWheel using VAST, VMAP and VPAID, will not play if there is an ad blocker in the browser.

With SSAI and auto failover with ad block detection enabled, your ads will always play:

  • When there is no ad blocker, client-side ads will play.

  • When an ad blocker is detected, server-side ads will play.

If you don't enable auto failover for SSAI, then only server-side ads will be played.


The benefits of SSAI are:

  • Smooth, TV-like User Experience - Get higher engagement without the spinner, errors, and freezes of client-side ads. It just plays through - like on regular TV!
  • Multi-Screen Reach - Want to reach OTT connected devices with ad-supported VOD? Push your video to the fastest-growing segment of video viewing - and monetize easily. SSAI works on any device that can play video, Brightcove Player optional!
  • Recover Ad-Blocking Losses - Immediately regain 10-30% revenue lost to ad blockers. SSAI cannot be blocked like client-side ads can.
  • Per-Session Targeting - Pass video metadata tags, device information, user ids, or application-specific parameters with each ad call to enable individualized ad targeting to get the highest CPM rates for your inventory.

SSAI with the Brightcove Player provides these additional capabilities (VOD only):

  • Client-Side Beacons - Report impression, engagement and viewability from the client, including integration with 3rd-party analytics libraries.
  • Disable Ad Seeking - Disable fast-forwarding over ad breaks.
  • Ad Click-Throughs - User can click-through to learn more during an ad.
  • Companion Overlays - Linear video ads can have companion overlay images.

Client platforms

Brightcove SSAI provides an easy way to deliver ad-supported video to OTT devices.

The following table shows playback integration type for different OTT examples:

Device Supported? BGS integration available? Integration type Notes
Apple TV Yes Yes Brightcove Native SDK for iOS [1] tvOS 12.4.1+
Android TV Yes Yes Brightcove Native SDK for Android [1] Android 6.0+
Fire TV Yes Yes Brightcove Native SDK for Android [1] FireOS 5.0+
Nvidia Player, Nvidia Shield Yes Yes Brightcove Native SDK for Android [1] runs Android TV
Roku Yes Yes Custom API [3] No integration logic provided
Chromecast Yes Yes Web [2] Integration provided through the Brightcove Player Chromecast Plugin
Samsung Smart TV (Tizen) No Yes Custom API [3] No integration logic provided
Any other streaming player No Yes Custom API [3] Any device that can play an HLS or DASH stream

Session-based targeting

Ads can be targeted to different platforms, sites, apps, or based on other criteria known at play-time - evaluated when the individual playback session occurs. You can either use separate ad tags to partition your different ad playback environments, or you can use a single ad tag with ad macros.

Macros are evaluated at ad request time, so every time a video is played - and can refer to variables passed from the client or be inserted by the SSAI service based on video metadata or HTTP request header information. For more details on how macros work with Brightcove SSAI, see the SSAI Configuration guide.



Before an ad becomes viewable, it first needs to be transcoded. Then, it can be stitched into the stream. This applies to session-based targeting as well.

For example, If you have two ads, A & B, for one ad config:

  • User 1 gets Ad A: Transcoding starts; ad is not available for User 1
  • User 2 gets Ad A (a few minutes later): Since transcoding is finished for Ad A, they see the Ad
  • User 1 gets Ad B: Transcoding starts; ad is not available for User 1
  • User 3 gets Ad A: Since transcoding is finished for Ad A, they see the Ad
  • User 4 gets Ad B: Since transcoding is finished for Ad B, they see the Ad

Ads are not content dependent. They are rendition dependent. So, in the above example, if User 2 is watching content that has the same rendition set as what User 1 watched, they will get Ad A. This means as new content is uploaded, there typically is not a need to retranscode any ads.

3rd-party metrics

3rd-party metrics and viewability systems work with Brightcove SSAI using either client-side or server-side beacons. The Brightcove Player for web and the SDK players emit client-side events that can be used by client-side plugins to report directly. Several vendors have updated viewability and metrics plugins to receive this data - contact your account manager for more information.

Read more about common client-side ad events.

You can also configure SSAI to emit events from the server at various points during streaming.

See beacon templates in the configuration field details documentation.


SSAI requires Brightcove Dynamic Delivery. This means you need to do the following:

  1. Contact your account manager to enable your account for Dynamic Delivery and SSAI.
  2. Ingest one or more new videos or retranscode old ones, using a Dynamic Delivery ingest profile. For details, see the Overview: Dynamic Ingest API for Dynamic Delivery document.


Be aware of the following limitations when using the SSAI plugin:

  • The SSAI plugin is compatible only with Brightcove Player v6.8.0 and newer. No support will be offered for v5.
  • SSAI requires that your content video has audio, but it does not support Multiple Audio Tracks.
  • Currently audio only is not supported on SSAI.
  • The first time the ad is seen by our system, it will not play until it is transcoded and ready to deliver.
  • When playing a shared video with SSAI, SSAI Macro replacement will use the metadata from the parent video instead of the child Video. SSAI will also skip the ad lookup if the parent video is marked as Advertising='Free', even if the child video is labeled as Ad Supported.

Getting started

To start using SSAI with videos ingested for Dynamic Delivery, follow these steps:

  1. Get an ad tag from your ad provider or the ad ops team. Make sure the advertising demand associated with this tag is configured not to return VPAID ad units.
  2. Using a web browser, request the ad tag by pasting it into the address bar. If there are replacement parameters, you can try the request with fake values or leave the variable names in for testing.

    • If you get an error response, first review the ad tag and make sure it is correct. You may have to try fake values for macros/variables.
    • Look at the response type. Make sure it is a DFP Ad Rules response, showing all the ad breaks, that links to VAST documents for ads within each pod. The response should say VAST or VMAP in the first few lines of the XML. Other XML from DFP is probably what they call Ad Rules XML.
    • If you’re not using FreeWheel, you can follow the redirects manually by copying and pasting the values into your browser’s address bar. Look for MediaFiles elements that point to compatible video sources. You are looking for MP4 or HLS (.m3u8) video source files.
    • If the ad response points to a file that ends in .js, then it is a VPAID ad unit, and it will not work with Brightcove SSAI.
  3. Determine which parameters in your ad tag can be substituted by the SSAI server, and which ones need to be passed from the player or device. Compose your ad tag appropriately. For details about ad tag macros and the appropriate syntax, see the SSAI Ad Configuration document.
  4. Decide whether you want to emit impression and engagement beacons for your ads from the client player or from the server.

    • If your player is only to be used on devices that cannot use a Brightcove player (web or SDK) or if you are targeting web cases where ad blocking is enabled, you want to use server-side beacons.
    • If you want to emit beacons from the server on some platforms but from the client on others, you will need to create multiple SSAI ad configurations.

    SSAI ad configurations can enable or disable server-side beacons. If you are using a Brightcove Player (web or SDK), you will also have to set this on the client.

  5. Create an SSAI ad configuration (ad config) with your ad tag and beacon settings. For details, see the Configuring Server-Side Ad Settings document.
  6. Regardless of which platform you’re targeting, you may want to try the web player first as a test. For details, see the Implementing Server-Side Ads with the Brightcove Player document.
  7. Once you’ve verified that the player works, you can target other platforms by consulting the appropriate documents based on the platform table above.