By Anna Katharina Reykowski, Sr. Product Manager, Verizon Media
OTT video monetization has become an important revenue stream for content owners. So it’s not surprising that pressure is increasing to make the most out of every monetization opportunity. One example of this is the generation of revenue from VOD libraries.
VOD manifests come with unique challenges. The HLS specification (RFC 8216) requires that VOD manifests are delivered in their entirety upon the initial playback request, and the manifests may not be altered afterward.
This means that all ad breaks must be filled up front when the initial playback request is made from the video player. Depending on the content, the number of ads can be substantial, and it can take ad servers a long time to return a response. Until the ad server’s response is received, the manifest server cannot respond back to the requesting client with the fully formed manifest. This can create a negative viewer experience, as increases to content start time are directly correlated to the number of ad breaks.
Compare this with linear streams, where manifests contain a small video window and are updated every few seconds. With live manifests, ads are retrieved one ad break at a time, guaranteeing fast start-up times and avoiding unnecessary depletion of ad inventories.
To address the above challenges, we have developed Verizon Media Smartstart™, a new capability that returns VOD assets as linear streams. Smartstart enables you to maximize your monetization opportunities without negatively impacting the viewer experience.
With the Smartstart APIs you:
Continue reading to learn how to enable a Smartstart asset within your VOD library, play it back, and update your video player to guarantee the same VOD-like playback experience viewers enjoy with regular VOD assets.
Enabling a Smartstart asset
In this example, we first make a POST request to the Smartstart API to define a new Smartstart asset in the system using the existing VOD asset. Our sample asset’s GUID or asset ID is e2f25c7407474386b0ae35c34490c450.
Each ad break in the Smartstart asset will have a defined ad break duration of 60 seconds, as defined via beam_break_duration. This duration will be sent to the ad server for each ad break request. Note that the total duration of ads returned by the ad server may be greater or less than the requested duration.
Once we have defined this asset, we need to combine all our URL parameters to create a signature. Be sure to include your API key and Uplynk account owner ID so that a valid signature can be computed. In our example, we are also defining the ad server configuration we want to use ('my_ad_config'), adding dynamic manifest markers for a top-level timeline, and ad break information. We will cover dynamic manifest markers in more detail later in this article.
Once the POST request is made, the system returns a playlist ID. We use this ID to create a full playback URL.
The sample script below is of the full playback URL for a DASH manifest. It can easily be altered to print out an HLS playback URL by replacing mpd with m3u8. We will stick with DASH for this example, as DASH manifests are more human readable than their HLS counterparts.
You can also download our sample Docker Container with supporting CRUD operations from our GitHub account.
Now that we have our playback URL, it is time to play it back in our player of choice. You will notice that players will not automatically render a scrub bar because the VOD asset is returned as a linear stream. Of course, scrub bars and ad break indicators are desirable for VOD playback. As mentioned earlier, we are enhancing the manifest with dynamic manifest markers. We can now use those markers to parse out information that the video player can use to draw a scrub bar and ad break indicators.
The URL parameter dmm.schema.top=timeline adds a dynamic manifest marker at the top of the manifest that includes information about the content duration and the location of each ad break within the asset (ad break locations are defined during ingest time). In our example, the content duration is 888.032 seconds, and the ad breaks are located at 103.125, 148.667, 349.792, 437.208, 472.083, 678.833, and 744.083 seconds. In DASH, this data is accessible via EventStream:*
Since ads will be fetched on-demand, as playback approaches an ad break (as opposed to upfront when the manifest is first requested), actual ad break information will not be immediately known when playback starts. Because of this, we recommend indicating ad breaks as dot-like markers on the timeline. To provide countdowns and other desired information whenever an ad break occurs, we need to know details about each ad break as it becomes available. We can easily include this information in the manifest through the URL parameter dmm.schemas.breaks=break_info.
When this parameter is added, the following details are included in the manifest for each ad break:
In our DASH sample, an example of a break_info Dynamic Manifest Marker looks like this:
This marker tells us that we are looking at the first ad within the first break. A total of two ads will fill the ad break. The current ad is just under 30 seconds long (29.952000000000012 seconds to be precise). And while the requested break duration was 60 seconds, the actual break duration will be slightly higher (60.160000000000025 seconds).
Now that this information is available, the video client can parse it for ad breaks as desired.
Lastly, we need to enable seeking to create a full VOD-like experience. For this, you can use the plts URL parameter. The plts value is a time expressed in seconds that is relative to the playlist. For ease of use, the plts parameter is excluded from the URL token signature.
In this example, https://content.uplynk.com/playlist/[Playlist UUID][.mpd | .m3u8]?plts=12 will seek 12 seconds into the Smartstart asset. Note that only content slices are taken into account when seeking in a Smartstart asset. Ad breaks are excluded from the calculation.
It takes only a few steps to parse the manifest metadata to render a scrub bar on the video player, add ad break indicators, display ad break information and support scrubbing throughout your linear VOD asset.
We also offer an out-of-the-box integration through our video player partner THEOplayer for anyone who prefers a more hands-off approach.
Smartstart is another way Verizon Media helps you get more value out of your content library while delighting your viewers with fast start-up times and engaging experiences that drive monetization. Smartstart, along with Smartplay, helps maximize your content's monetization potential, delivers personalized ad experiences, and provides attribution via server-side beaconing.
We’ve made it easy to enable Smartstart. Integrate it and use it with your player solution, or take advantage of our pre-integrated solution with our player partner THEO Technologies.
Reach out to your account manager or contact us if you have any questions about Smartstart.