In this post we’re explaining the principles behind Server-Side Dynamic Ad Insertion technology. If you are already familiar with video streaming technology but new to Dynamic Ad Insertion this is where to start. At the end of this post we give recommendations to further reading and a short list of providers of this technology.
If you are completely new to video streaming we can recommend to read our series of articles describing the technology behind video streaming first.
What is Dynamic Ad Insertion?
Dynamic Ad Insertion (DAI) is a technology that allows advertisers to serve different ads to each viewer based on viewer audience insights and ad campaign performance. To compare with TV broadcast commercials where all viewers are served with the same ad. With the direct feedback-loop that impression tracking provides, decisions and adjustments can be taken in real-time to optimize campaign performance. The component responsible for taking these decisions is the ad server.
Server-Side Dynamic Ad Insertion is the technology where the ads are inserted in the video stream providing a seamless transition between content and ads. To compare with Client-Side Dynamic Ad Insertion where a separate video player playing the ad is placed on top of the paused content video player. One benefit with Server-Side DAI is that the integration with the ad server is implemented at one single place and not all viewer applications needs to be updated if changes needs to be made to that integration.
When can we use Dynamic Ad Insertion?
Dynamic Ad Insertion can be used to either replace the TV broadcast commercial in a simulcast Internet video stream or dynamically insert ads in on-demand content, for example TV catchup.
As we in the first use case have a simulcast of a TV broadcast the ad break duration to fill with dynamic ads are fixed and the same length for all viewers. This can be a challenge as not all ads are of the same length and this is something the ad server needs to take into account. In figure 1 it is a bit simplified as all ads have the same length and they all match the duration of the TV ad break — which in reality is a rare case.
In the other use case we are no longer bound to a fixed duration and the length of the ad break watching the on-demand version can be both longer or shorter than the ad break when the content was broadcasted. We could even add more breaks but with fewer ads in each break, for example a short ad before the content starts.
How does Server-Side DAI works?
Now to the question. How can we dynamically replace or insert ads on the server-side? To understand this principle we need to go back to the basics of Internet video streaming. Without going to deep into that part here, one key element to understand is that in video streaming the video player is downloading / pulling the video stream whereas in TV broadcast the video server is pushing video data to the viewer unit. This means that not necessarily must all video players pull the same data and an individual stream can be provided for each viewer. This may sound inefficient and do we need to have a live encoder for each viewer? Not really, as the only part that actually needs to be unique for each viewer is the ad break. The rest of the stream can be the same for all.
Reference to and sequence of the video file chunks of a stream is described by a streaming manifest, and without server-side ad-insertion all video players would get the very same manifest. The video file chunks created by the encoder is also the same for all viewers.
What the Server-Side Ad-Inserter (SSAI) does is to take the original streaming manifest and modify it for each viewer. Each viewer get a unique manifest where the video file chunks during the TV ad break is replaced by video file chunks for the ads served to that specific viewer.
But how does the SSAI module know which video file chunks to replace? That information is placed in the video signal to the live media encoder. A marker stating when the ad break starts and the duration of the break. The live media encoder decorates the original manifest with this information in such way that the SSAI module can understand it. When the SSAI module detects a marker an ad request with the requested duration is sent to the ad server. This is done in real-time and basically at the same time for all concurrent viewers.
A similar principle is used for dynamic ad insertion in on-demand content where the main difference is that the ad request does not have to take any ad break durations into account. The task to decorate the streaming manifest with markers is the file transcoder creating the on-demand streaming package.
To learn more about server-side dynamic ad-insertion we recommend to read the following articles:
- Server-Side Ad-Insertion with DRM
- Enabling Video Ads in our Server-less OTT-only TV Channel Playout
- What is Dynamic Ad Insertion — SpotX
- SCTE-104/35 and Beyond: A Look at Ad Insertion in an OTT World
- Best Practices for OTT Dynamic Ad Insertion (PDF)
- Bonnier Broadcasting sharing their experience at Streaming Tech Sweden 2017 (video)
And here are some of the vendors providing SSAI functionality (unordered list):
- Google (DoubleClick)
- Amazon MediaTailor
- Bitmovin SSAI
- Brightcove SSAI
- Edgeware Ad Insertion
- Switch Media
- Verizon Uplynk
- Anvato Dynamic Ad Insertion
- Did we forget you? Let us know in the comments and we’ll update.
Thank you for reading and if you want to know more about server-side ad-insertion or other video streaming related topics, don’t hesitate to contact us at firstname.lastname@example.org.