Break-level ad replacement
There are a number of parameters that determine how the source stream is manipulated to perform replacement of ad breaks detected by broadpeak.io. This page goes through various scenarios and illustrates them
In a Live DAI service, broadpeak.io will attempt to substitute the original ad break with ads retrieved from the ad server, if the following conditions are met:
- An ad break was detected in the live source, whether from SCTE-35 markers (in a Live Ad Replacement scenario), or from an Ad Break Slot (in a Virtual Channel scenario).
- The ad server was called and returned a valid VAST response with one or multiple usable Ads.
- The ad creatives were in a format compatible with the source, or were successfully transcoded and packaged into a compatible format by broadpeak.io(assuming that the transcoding option was configured correctly).
In an ideal scenario, the ad server will return enough ads so as to fill the whole duration of the ad break:
Ad duration
When evaluating what ads can be inserted, broadpeak.io calculates the ad duration from the HLS or DASH manifest, being the sum of all segments within the manifest. The duration provided in the VAST response is not taken into consideration (as it is often inaccurate).
This applies to both pre-packaged ads and ads processed through our Ad transcoding feature.
If any of the ads returned by the ad server is invalid, or has not yet been transcoded, it will not be inserted. In this case, one of the following behaviors will apply
Tolerances
Sometimes the ad server returns ads for a total duration that is slightly in excess of the ad break duration sent to it. You can configure whether or not the insertion of the last ad is done anyway, by setting the "Maximum ad duration excess" value (with the APIs: liveAdReplacement.maxAdDurationExcess
)
Handling gaps
Gap filling
If the ad server returns ads for a total duration inferior to the ad break's (or returns more ads than necessary, but in a way that they cannot be used to perfectly fill the duration of the ad break), and a Gap-filler / Slate has been configured on the service, broadpeak.io will attempt to fill the remainder of the duration of the ad break (after ads have been inserted) with segments of the gap filler asset or slate.
Minimum gap
This behaviour only applies if there is at least 2 seconds of time remaining between the total duration of the replacement ads and the duration of the original ad break.
In addition, the insertion of the gap filler is only possible if the remaining duration is larger or equal to the duration of the first segment of the gap filler.
If you use an image or video slate, transcoded and packaged by broadpeak.io, those segments will be 2 seconds (or close to it). If you use an asset as gap filler, you are in control of the segment duration.
No gap filling
If no gap filler is configured (or if it has not yet been transcoded in the case of an image or video slate), no gap filler will be inserted, and the stream will switch back to the source stream in the middle of the ad break, potentially in the middle of an original ad
Note that if a gap filler has been configured, but the ad server returns an empty VAST response, or none of the ads in the response is usable (either being incompatible or not yet transcoded and package), no ad replacement will be performed, and the gap filler will not be used either.
Troubleshooting
If you observe that no replacement of ad breaks is done in your service, check the troubleshooting steps in Ad insertion issues
Updated 6 days ago