Setting up Mid-Roll Advertising for VoD

Release 2.4 of yospaceCDS introduced the ability to dynamically insert content into on-demand video playback at defined cue points, commonly utilised for and known as mid-roll advertising. 

Like the other forms of dynamic advertising insertion that yospaceCDS supports, mid-roll advertising is achieved by manipulating the delivered stream at the server rather than relying on client-side player development.  The benefit of this approach is not only a degree of player-independence but also that the cut between advertising and content and back again is completely seamless, just as if you were watching broadcast television.

Cue Points

In order to implement mid-roll advertising, content must be ingested with defined cue points.  These are the points in the video where the advertising is required to be inserted.  Cue points are defined in MRSS input feeds by adding the <cuePoints> tag into the feed, or via the MediaItem API using the cuePoints parameter.  Cue Points are timestamps defined by two decimal place numbers indicating the number of seconds from the start of the video.  For example, in an MRSS feed:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" >
  <channel>
    <title>Example MRSS</title>
    <description>An example MRSS feed</description>
    <item>
      <title>Dog balancing biscuit on nose</title>
      <link>http://www.yospace.com/dogbiscuit.html</link>
      <description></description>
      <guid>UA-2152413-1</guid>
      <pubDate>Tue Mar 23 17:22:22 GMT 2010</pubDate> 
      <media:content url="http://yospace.com/dog.mpg" />
      <cuePoints>10.33, 50.3, 120</cuePoints>
    </item> 
  </channel>
</rss>

In the example above, the content will be ingested with the break points defined at 10.33, 50.3 and 120 seconds from the start of the video.

Ad Slot Definitions

Once content has been ingested with cue points, you are ready to start setting up your mid-roll promotion in yospaceCDS. In R2.4, the External Promotion screen features an additional field Advertising Template in which you must define an internet accessible URL from which yospaceCDS will get its mid-roll ad slots configuration from.

Whenever a video is requested by an end-user, yospaceCDS determines the number of cue points that were defined for it and fetches an ad slot configuration specific to that number of cue points.

You specify a replacement token in the Advertising Template URL field that changes itself to the number of cue points that is being accessed. For example, you might specify:

http://www.mywebserver.com/mid-roll/breaks-${BREAKS}.xml

For example, if the number of cue points defined in the video is 2, then because of URL specified above yospaceCDS fetches the file:

http://www.mywebserver.com/mid-roll/breaks-2.xml

This file contains a description of the advertising layout including the pre and post roll sections which could look like this:

<playlist>
 <ad id="PRE" tile="1"/>
 <ad id="PRE" tile="2"/>
 <ad id="PRE" tile="3"/>
 <content/>
 <ad id="MID1" tile="4"/>
 <ad id="MID1" tile="5"/>
 <content/>
 <ad id="MID2" tile="6"/>
 <content/>
 <ad id="POST" tile="7"/>
</playlist>

In this example, the pre-roll section is labelled PRE and contains slots for 3 advertisements. At the first cue point, the section is labelled MID1 and contains 2 advertisements, whereas at the second cue point labelled MID2 and the post-roll section labelled POST only have a single advertisement.

You need to define advertising layout files like this for each possible combination of cue points that you define when you ingest content into yospaceCDS.

Linear/Live Playout Mode

It is possible to force yospaceCDS to deliver the content in true linear playout mode, effectively simulating a live stream from on-demand content.  This mode prevents users from scrubbing forward in the stream.

It is enabled in the advertising template with an additional attribute mode="live":

<playlist mode="live">
 <ad id="PRE" tile="1"/>
 <ad id="PRE" tile="2"/>
 <ad id="PRE" tile="3"/>
 <content/>
 <ad id="MID1" tile="4"/>
 <ad id="MID1" tile="5"/>
 <content/>
 <ad id="MID2" tile="6"/>
 <content/>
 <ad id="POST" tile="7"/>
</playlist>

Advanced Template Selection

You might require a different Advertising Template to be used for different types of content and may wish this to be selected dynamically.  To help you achieve this yospaceCDS supports the ${QUERY_PARAM} token in the Advertising Template XML.  This allows you to add a specific query parameter added to the Video Access URL that will be used to select the template.  For example, you could set the Advertising Template URL to be:

http://www.mywebserver.com/mid-roll/${QUERY_PARAM.ctg}/breaks-${BREAKS}.xml

Given this, if the Video Access URL is:

http://access.cds1.yospace.com/d/100/0/1/123456?f=358325&ctg=sports

And the video with Media Item ID 123456 has 4 cue points, then the fetched URL will be:

http://www.mywebserver.com/mid-roll/sports/breaks-4.xml

You can also use the special token syntax yospaceCDS supports to handle situations where the ctg parameter is not supplied.  This syntax is explained on this page.

http://www.mywebserver.com/mid-roll/[${QUERY_PARAM.ctg}/]breaks-${BREAKS}.xml

In the event that a video (with 4 cue points) is accessed without the ctg parameter, the following file will be fetched:

http://www.mywebserver.com/mid-roll/breaks-4.xml

The token ${STREAM_TYPE} is replaced with the values EVENT, LIVE or VOD depending on what kind of stream is being delivered.

Ad Server Calls

yospaceCDS will stream the video to the end user and will only make calls out to your ad server at the point in time when the advertising is about to be played.  This means that no unnecessary calls are made to your ad server and that hits to your ad server should match end user ad impressions.  

The call made to the ad server depends on the Advertising Template XML that was fetched before the stream started (see above).  Whenever yospaceCDS gets to a position in the video that has a defined ad break, it makes a call out to the ad server for each defined ad slot.  

In the example Advertising Template XML given above, the ad server will be hit three times before the content starts playing, twice in the first ad break, once in the second and once after the content ends.  So, if the user watches the whole video, the ad server will be hit a total of 7 times.

In the External Promotion page, the URL Template field defines the URL of your ad server and can contain tokens that are replaced with context information.  The full list of supported tokens and examples can be found here.

When implementing mid-roll ad trafficking, yospaceCDS provides additional tokens that you can use to implement specific trafficking logic with your ad server.  

  • ${ADVERT_POSITION} – this token under non-mid-roll promotions returns PRE or POST however under a templated mid-roll promotion, it returns the current ID of the ad slot.  Given the example above, it will be either PRE, MID1, MID2, or POST.
  • ${TILE} – the value of the tile attribute of the current ad slot.  Given the example above, this will be a value ranging from 1 to 7.
  • ${ORD} – this is a random number that will be the same for each ad slot in a given break for a given user.  It can be used by some ad servers (DoubleClick DART for example) in conjunction with tile to prevent competitors ads appearing in the same break.  Given the example above, ${ORD} will change value in the PRE, MID1, MID2 and POST ad breaks. If two or more ad slots have the same ID, they will get the same value for ${ORD} whether they are in the same break or not.