AWS Media Blog

AWS Elemental MediaTailor Supported Video Ad Serving Protocols

AWS Elemental MediaTailor is one of five AWS Media Services that launched during re:Invent 2017 and currently supports HTTP Live Streaming (HLS). It is a content personalization and monetization service that allows customers to implement stitched server-side ad insertion for streaming video while maintaining high quality of service. It uses dynamic transcoding to reduce storage requirements and ensure that video seamlessly transitions between advertising and primary content during playback. AWS Elemental MediaTailor manipulates the HLS manifest to include the URLs for the appropriate ads.

At launch, AWS Elemental MediaTailor supported two of the three most common video ad serving protocols: Video Ad Serving Template (VAST) versions 2.0 and 3.0, as well as Video Multiple Ad Playlist (VMAP) version 1.0. In March 2018, support was added for the Video Player Ad-Serving Interface Definition (VPAID) protocol for linear ads. All ad serving protocols are published by the Interactive Advertising Bureau (IAB).

This post provides a high-level overview of what these protocols are and how they work with AWS Elemental MediaTailor.

Let’s start with VAST. According to the IAB, “the VAST specification is a universal XML schema for serving ads to digital video players, and describes expected video player behavior when executing VAST-formatted ad responses”. Prior to VAST, ad servers had to customize responses for various publishers and video players. And this, needless to say, was inefficient and didn’t scale. VAST gives ad servers a common language to speak regardless of which video players or publishers they are interacting with.

In the simplest scenario, VAST works in the context of AWS Elemental MediaTailor like this:

  1. AWS Elemental MediaTailor receives a request for content playback and determines that an ad break needs to be filled.
  2. AWS Elemental MediaTailor makes a VAST request to the ad server. This is a simple HTTP GET on the ad server URL.
  3. The ad server returns a VAST response that has information about ad media files and, optionally, the tracking URIs to be used for ad tracking and reporting.
  4. If provided, AWS Elemental MediaTailor uses the tracking URIs to beacon back to the ad server when specific events occur in the ad (e.g. reached first quartile of ad).

The VAST response from the ad server, at a minimum, must contain the ad to be served up, its type, and duration, as shown by the sample response below:

<VAST version="3.0">
    <Ad>
        <InLine>
            <AdSystem>2.0</AdSystem>
            <AdTitle>ad-1</AdTitle>
            <Impression/>
            <Creatives>
                <Creative>
                    <Linear>
                        <Duration>00:00:15</Duration>
                        <MediaFiles>
                            <MediaFile delivery="progressive" type="video/mp4" width="1920" height="1080">
                                <![CDATA[http://example.com/ad.mp4]]>
                            </MediaFile>
                        </MediaFiles>
                    </Linear>
                </Creative>
            </Creatives>
        </InLine>
    </Ad>

Although VAST is able to tell the player, or AWS Elemental MediaTailor in our case, which ads to use, what it cannot do is define the ad breaks and their timings. This is where VMAP comes in. VMAP was published to address this very specific gap. It is very suitable for use with Video-on-Demand (VOD) workflows where assets don’t necessarily have ad markers already in place.

VMAP is not meant to replace VAST but can be used in conjunction with VAST, which supplies the ads for the ad breaks. How VMAP works in the context of AWS Elemental MediaTailor is pretty much how it is with VAST. AWS Elemental MediaTailor makes an ad request to the ad server, and the ad server returns a VMAP response, most likely with VAST.

The VMAP response, at a minimum, must contain an ad break specifying when the break should occur and the break type. But more often than not, the ad source is also provided, either in the form of an inline VAST document or a link to the ad server’s VAST response. In the example below, the VAST response has been truncated for simplicity.

<vmap:VMAP 
    xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0">
    <vmap:AdBreak breakType="linear" timeOffset="start">
        <vmap:AdSource>
            <vmap:VASTAdData>
                <VAST version="3.0" xsi:noNamespaceSchemaLocation="vast.xsd">
                ...
                </VAST>
            </vmap:VASTAdData>
        </vmap:AdSource>
    </vmap:AdBreak>

In addition to VMAP, another protocol that can be used together with VAST is VPAID. VPAID allows for ad interactivity in the form of executable ads (Javascript/HTML5 and Flash are supported), which VAST in itself doesn’t provide. Though VPAID can be used independently, it is often used with VAST to take advantage of both the ad tracking and reporting that VAST supports, and the interactive and reporting features from VPAID.

In order to take advantage of the reporting features from VPAID, the client-side reporting API must be used with AWS Elemental MediaTailor. Any information about the presence of the VPAID ad and the metadata surrounding it will be lost when using AWS Elemental MediaTailor’s default server-side reporting.

In general, this is how VPAID works with AWS Elemental MediaTailor:

  1. AWS Elemental MediaTailor receives a request for content playback and determines that an ad break needs to be filled.
  2. AWS Elemental MediaTailor makes a VAST request to the ad server. This is a simple HTTP GET on the ad server URL.
  3. The ad server returns a VAST XML response containing a VPAID-compliant executable ad unit.
  4. AWS Elemental MediaTailor passes on information to the player including URI pointing to either an ad executable or video asset and any other ad parameters included in the original VAST response needed by the player.

Below is a sample VAST with VPAID response from an ad server:

<VAST version="2.0">
    <Ad>
        <InLine>
            <AdSystem>Ad System</AdSystem>
            <AdTitle>Ad Title</AdTitle>
            <Creatives>
                <Creative>
                    <Linear>
                        <Duration>00:00:30</Duration>
                        <MediaFiles>
                            <MediaFile height="270" width="370" type="application/x-shockwave-flash">
                                <![CDATA[ http://example.com/vpaidad.swf]]>
                            </MediaFile>
                        </MediaFiles>
                    </Linear>
                </Creative>
            </Creatives>
        </InLine>
    </Ad>
</VAST>

Because AWS Elemental MediaTailor supports VAST, VMAP and VPAID, it can accommodate a variety of live and VOD workflows and monetization schemes. To learn more about the various ad serving protocols and AWS Elemental MediaTailor, visit the references listed below.

References: