Demuxed 2023 (Oct. 24–25, San Francisco), is the premier peer-organized and peer-approved video developer conference. This two-day conferenced covered a lot of topics, including updating ad delivery, the subject of the first story I filed from the event. Here’s my summary of another advertising-related presentation.
Towards Efficient Dynamic Ad Insertion at the Edge
Josselin Cozanet, engineer, R & D at Ateme, did a presentation where he talked about doing live ad insertion in low-latency live streaming. He started with an illustration of a live stream which has SCTE 35 markers to do a DAI to replace live content. There needs to be a slice out to start the ad and a splice in to restart the content.
When an ad marker is inserted, there is a shortened segment with shortened chunks within. The encoder needs to adapt the segment it generates based on where the ad marker is inserted in the stream. Placing the ad markers in the right location is crucial to ensuring there are no playback issues when the stream switches from content to ads. It’s also critical to not introduce any latency into the low-latency stream. The manifest needs to be modified at the server side.
Ads need to be inserted in chunks that match those of the live content to prevent any playback issues and keep the player as close to the edge of the stream as possible. Pre-generated (pre-processed) ads need to be prepped to have all chunks stored on the ad server.
In low latency, the DAI gateway should be geographically near to the edge cache, preferably in the same cloud instance in order to minimize the latency created. When doing low-latency ad insertion, HLS proved to be stricter than DASH for inserting ads and maintaining low latency.
When modifying the live playlist from the origin to the modified playlist you need to have exactly the same duration (time). In the modified playlist, the ad chunk segments must have the correct date-time tag for each segment as well as the ad server base URL included for each segment (and useless chunks removed). The start and end of the insertion should be marked by #EXT-X-DISCONTINUITY. Cozanet also discussed how to use slate to accommodate when the ad duration break does not match the duration of the ad.
This research used a set of ad pools with a number of themes (based on things like user-agent, IP address, custom header) instead of personalization, which would generate too many requests. Ad pools were pre-selected at the CDN level to more effectively cache the generated playlists. Each ad is generated with various formats (low latency (LL)), non-LL, different segment size, etc.) to match the requests from the origin server with the ad which has the closest-matching format.
The bottleneck is defined within the yellow box in the graphic if a playlist had been generated for every single user there will be a lot of requests made, without a lot of caching done at the edge cache.
Caching the playlist for each ad pool at the edge cache brings efficiency and enables low-latency ad insertion. The ad preparation (chunk, profiles, etc.) on the ad server side is key to be able to support this. The right ad formats keeps delays to a minimum and mirrors closely how things are done in the standard ad insertion process. This is a solution which is pretty transparent for the player with minimal additional information. Next up they will test HLS Byterange.
As an aside, I am no longer a developer, so while I understand the principles, most likely any errors here are mine and not the presenters’.
Demuxed.com/meetups lists the many local groups around the world of the people who make up the technical intelligence for our industry.
Demuxed 2023, which took place Oct. 24-25 in San Francisco, is the premier peer-organized and peer-approved video developer conference. There’s supposed to be no marketing at the event. Although the first person I ran into was a sales rep, much of the time I spent there was listening or talking with technical contacts. The most interesting presentation for me was from Pluto.
27 Oct 2023
Companies and Suppliers Mentioned