Ad Breaks
Default ad break behavior, chop and drop, and how ad break duration is calculated.
Ad Breaks
A set of ads is requested prior to the start of an ad break. However, the total duration for those ads will rarely match the ad break's duration exactly. Ads that extend beyond the ad break's duration cause the viewer to fall further behind the live stream (i.e., latency). For this reason, you can determine how ad spots are handled when they exceed an ad break's duration.
Define the duration of an ad break when creating an ad pod or boundary.
The advantages and disadvantages for each method of handling ad breaks are shown below.
| Method | Latency | Ad Fill | Ad Slate | Playback Drift | Flexible? |
|---|---|---|---|---|---|
| Default Behavior | More | More | Less | More | No |
| Ad Chopping | Less | Less | Less | Less | Yes |
| Ad Dropping | Less | Less | More | Less | Yes |
Default Behavior
By default, ads from the ad pool are inserted into the ad break as long as the amount of time left in the ad break is greater than playback drift. If playback drift exceeds the amount of time left in the ad break, all remaining ads are dropped and the stream cuts back over to content.
Playback drift measures the amount of time that playback has fallen behind the targeted latency. Configure artificial latency for each playback session via the delay parameter.
Your ad.flex configuration increases the ad insertion window using the following formula:
{Adjusted Ad Break Duration} = {Requested Ad Break Duration} + {ad.flex}
If ad.flex has not been defined in your playback URL, then ads may be inserted for an additional 4 seconds beyond the requested ad break duration.
The timing for switching the stream back to content varies according to the quantity of ads served by the ad decision server:
-
Ad Overfill: If the ad decision server returns too many ads, ads are inserted until the end of the adjusted ad break duration. This may introduce significant playback drift.
-
Ad Fill: If the ad decision server returns an appropriate number of ads for the requested ad break duration and the last ad extends beyond the requested ad break duration, the stream switches over to content after the last ad.
-
Ad Underfill: If the last ad ends before the end of the requested ad break duration, slate plays until the end of the requested ad break duration.
Slate may extend beyond an ad break by a few seconds.
Default Ad Break Duration Example
This example demonstrates how:
- Ad break overages contribute to playback drift.
- Playback drift affects ad insertion.
Calculate ad break overages via the following formula:
{Ad Break Overage} = {Actual Ad Break Duration} - {Requested Ad Break Duration}
This example makes the following assumptions:
- The
ad.flexparameter has not been defined and therefore it will be set to a default value of 4 seconds. This default configuration allows ads to be inserted up to 4 seconds after the end of the requested ad break duration. - There are many factors (e.g., encoding, delivery, playback, etc.) that contribute to latency and playback drift. For the sake of simplicity, this scenario only takes into account ad break overages when calculating playback drift.
- The ad decision server responds with an appropriate number of ads for each ad break and therefore is not overfilling or underfilling ad breaks.
The first ad break in this sample scenario is for a 60 second ad spot. An ad server returns 3 ads with a total duration of 61.62 seconds. This causes the viewer to experience 1.62 seconds of additional latency. A breakdown of each ad break is provided below.
| Ad Break | Requested / Adjusted Ad Duration | Actual Duration | Ads (Seconds) | Total Playback Drift |
|---|---|---|---|---|
| Ad Break #1 | 60 / 64 seconds | 61.62 seconds | 30.18 + 15.20 + 16.24 = 61.62 | 1.62 seconds |
| Ad Break #2 | 90 / 94 seconds | 92.15 seconds | 30.52 + 30.82 + 30.81 = 92.15 | 3.77 seconds |
| Ad Break #3 | 120 / 124 seconds | 124.47 seconds | 31.34 + 31.84 + 30.71 + 30.58 = 124.47 | 8.24 seconds |
| Ad Break #4 | 90 / 94 seconds | 94.57 seconds | 30.94 + 31.87 + 31.76 = 94.57 | 12.81 seconds |
| Ad Break #5 | 120 / 124 seconds | 123.03 seconds | 30.75 + 31.02 + 30.49 + 30.77 = 123.03 | 15.9 seconds |
| Ad Break #6 | 90 / 94 seconds | 93.52 seconds | 31.29 + 30.87 + 31.36 = 93.52 | 19.42 seconds |
| Ad Break #7 | 60 / 64 seconds | 47.33 seconds | 30.45 + 16.88 + 16.96 = 64.29 | 6.75 seconds |
Each subsequent ad break causes the viewer to fall further behind as indicated in the Playback Drift column. After the sixth ad break, playback drift is at 19.42 seconds. After the second ad in the seventh ad break, there will only be 16.67 seconds left in the ad break. Playback drift now exceeds the amount of time left in the ad break (i.e., 19.42 seconds > 16.67 seconds). As a result, this triggers the end of the ad break, all remaining ads are dropped, and the stream cuts back over to content. Ending the ad break early allows the player to recover 12.67 seconds and thus reduces playback drift to 6.75 seconds.
Chop and Drop Ads
By default, an entire ad plays regardless of whether it exceeds an ad break's duration. Use the following query string parameters to override this behavior:
-
ad.breakend: Use this parameter to prevent ads from exceeding an ad break's duration by either:
- Chopping Ads: Upon reaching the end of the ad break, the current ad is chopped, all remaining ads are dropped, and the stream switches over to content at the end of an ad break.
- An ad may extend slightly beyond an ad break.
- Learn more.
- Dropping Ads: Ads that do not fit within an ad break will not be played and ad slate plays until the end of the ad break.
- Slate may extend slightly beyond an ad break.
- Learn more.
- Chopping Ads: Upon reaching the end of the ad break, the current ad is chopped, all remaining ads are dropped, and the stream switches over to content at the end of an ad break.
-
ad.flex: Use this parameter to define the number of seconds that an ad can extend beyond an ad break before being chopped or dropped.
Sample URL
https://content.uplynk.com/ext/1/myasset.m3u8?tc=1&exp=1358341863&rn=4114845747&ct=a&eid=mtg_003&oid=a735c65ea4041685bc74c0a375326cc5&ad=VideoSSP&keywords=marketing&ad.breakend=drop&ad.flex=5A digital signature should be applied to the above URL.
Calculate Ad Break Duration
As mentioned above, you may define the duration of each ad break via ad pods and boundaries. However, if you enable either the chopping or dropping of ads, then ad break duration is automatically adjusted to account for playback drift using the following formula:
{Adjusted Ad Break Duration} = {Requested Ad Break Duration} - {Playback Drift} + {ad.flex}
Dropping Example
This example demonstrates:
- How ad break duration is adjusted upon enabling ad dropping.
- The conditions under which ads are dropped.
This example makes the following assumptions:
-
The
ad.flexparameter has been set to 5 seconds. This configuration allows an ad break to be extended by 5 seconds. -
There are many factors (e.g., encoding, delivery, playback, etc.) that contribute to latency and playback drift. For the sake of simplicity, this scenario only takes into account ad break overages when calculating playback drift.
-
Ad slate is a 5-second asset. Slate is sliced into 4-second segments. This means that it consists of the following segments:
-
One 4-second segment
-
One 1-second segment
A stream may only consist of whole segments. In the case of the above ad slate, the stream cannot cut over to content 6 seconds into ad slate. Rather, the stream will cut over after 9 seconds of ad slate. Alternatively, if ad slate is a 3-second asset, then the stream can cut over to content after 6 seconds of ad slate.
-
The first ad break in this sample scenario is for a 60 second ad spot. Using the above formula and assuming that only ad break overages cause playback drift, the ad break duration ends up being 65 seconds.
Adjusted ad break duration = 60 - 0 + 5 = 65
An ad server returns 3 ads with a total duration of 61.62 seconds. These ads are served since they fit within the ad break. This causes the viewer to experience 1.62 seconds of additional latency. A breakdown of each ad break is provided below.
| Ad Break | Requested / Adjusted Duration | Actual Duration | Ads (Duration) | Total Playback Drift |
|---|---|---|---|---|
| Ad Break #1 | 60 / 65 seconds | 65 seconds | 30.18 + 15.20 + 16.24 = 61.62 | 61.62 - 60 = 1.62 |
| Ad Break #2 | 90 / 93.38 seconds | 93.38 seconds | 30.52 + 30.82 + 30.81 = 92.15 | 1.62 + (92.15 - 90) = 3.77 |
| Ad Break #3 | 120 / 121.23 seconds | 121.23 seconds | 31.34 + 31.84 + 30.75 + 30.58 = 93.93 | 3.77 + (93.93 - 120) = -22.30 + 29 = 6.70 |
Each subsequent ad break causes the viewer to fall further behind as indicated in the Playback Drift column. After the third ad in the third ad break, there will only be 27.30 seconds left in the ad break. The duration of the next ad in the ad break (i.e., 30.58 seconds) exceeds the remaining time in the ad break (i.e., 27.30) and therefore all remaining ads are dropped. Additionally, slate plays until the end of the ad break. Due to the slate's segment size, slate actually plays for 29 seconds (as calculated below) resulting in 6.70 seconds of playback drift. After which, the stream cuts back over to content.
Ad slate segments
4 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 4 = 29
A stream may only consist of whole segments and therefore the stream may only switch over to content at the time intervals identified above. This means that the stream cannot switch over to content at exactly 27.30 seconds. Rather, it must wait until the end of that segment which occurs at the 29 second mark.
Chopping Example
This example demonstrates:
- How ad break duration is adjusted upon enabling ad chopping.
- The conditions under which ads are chopped.
Assumptions
- The
ad.flexparameter has been set to 5 seconds, allowing an ad break to be extended by 5 seconds. - Many factors (e.g., encoding, delivery, playback, etc.) contribute to latency and playback drift. This scenario only accounts for ad break overages when calculating playback drift.
Ads are sliced in 4-second segments.
A stream may only consist of whole segments and therefore can only switch over to content at 4-second intervals or at the end of the ad. This means that the stream cannot cut over to content 6 seconds into a chopped ad. Instead, the stream will cut over after eight seconds or the end of the ad, whichever occurs first.
The first ad break is for a 60-second ad spot. Using the above formula and assuming that only ad break overages cause playback drift, the ad break duration ends up being 65 seconds.
Adjusted ad break duration = 60 - 0 + 5 = 65
An ad server returns 3 ads with a total duration of 61.62 seconds. These ads are served since they fit within the ad break. This causes the viewer to experience 1.62 seconds of additional latency. A breakdown of each ad break is provided below.
| Ad Break | Requested / Adjusted Duration | Actual Duration | Playback Drift |
|---|---|---|---|
| Ad Break #1 | 60 / 65 seconds | 65 seconds | 60 - 0 + 5 = 65 Ads: 30.18 + 15.20 + 16.24 = 61.62 Total playback drift: 61.62 - 60 = 1.62 |
| Ad Break #2 | 90 / 93.38 seconds | 93.38 seconds | 90 - 1.62 + 5 = 93.38 Ads: 30.52 + 30.82 + 30.81 = 92.15 Total playback drift: 1.62 + (92.15 - 90) = 3.77 |
| Ad Break #3 | 120 / 121.23 seconds | 121.23 seconds | 120 - 3.77 + 5 = 121.23 Ads: 31.34 + 31.84 + 30.75 + 28 (30.58) = 121.93 Total playback drift: 3.77 + (121.93 - 120) = 5.70 |
Each subsequent ad break causes the viewer to fall further behind as indicated in the Playback Drift column. After the third ad in the third ad break, there will only be 27.30 seconds left in the ad break. The duration of the next ad in the ad break (i.e., 30.58 seconds) exceeds the remaining time in the ad break (i.e., 27.30) and therefore that ad is chopped after 28 seconds (as calculated below) resulting in 5.70 seconds of playback drift. After which, the stream cuts back over to content.
Ad segments:
4 + 4 + 4 + 4 + 4 + 4 + 4 = 28
A stream may only consist of whole segments and therefore the stream may only switch over to content at 4 second intervals or at the end of the ad. This means that the stream cannot switch over to content at exactly 27.30 seconds. Rather, it must wait until the end of that segment which occurs at the 28 second mark.
Updated about 2 hours ago