Re: [Hls-interest] Support for server side ads in long form VOD

Roger Pantos <rpantos@apple.com> Thu, 28 May 2020 18:59 UTC

Return-Path: <rpantos@apple.com>
X-Original-To: hls-interest@ietfa.amsl.com
Delivered-To: hls-interest@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2F0413A0B2F; Thu, 28 May 2020 11:59:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.088
X-Spam-Level:
X-Spam-Status: No, score=-2.088 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, T_REMOTE_IMAGE=0.01, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wnvZLZzL7VsV; Thu, 28 May 2020 11:59:28 -0700 (PDT)
Received: from ma1-aaemail-dr-lapp01.apple.com (ma1-aaemail-dr-lapp01.apple.com [17.171.2.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DA62C3A0B27; Thu, 28 May 2020 11:59:24 -0700 (PDT)
Received: from pps.filterd (ma1-aaemail-dr-lapp01.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp01.apple.com (8.16.0.42/8.16.0.42) with SMTP id 04SInitn052306; Thu, 28 May 2020 11:59:23 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=g/VONZERVz8E4mnHOY4o7zfl92wBVpmneOCYuTFqV28=; b=iBVZlUvzgfbznI1ixjDc96drP15E9u1rmaqvjBm8vkN18fV9nEpvipDc4BCAABT+343c zmyZtvTbwIr73HuC8m9rRiIbMSPAHe3EG0lUU9QlNdcRSIl6IQCAqJ8aAzOPeeTeXiit 8MLdKEUmVKz84jgMVVPxVr9aYr/TTTBP36uRNpRZTXzbKIQflzzmVAnGnu7JdUIDi2cM PMqQPYue89t8iu4KX2l6aYEqnb2vfTOsoiMZm21EILtmgbxLgc/I41hrdxY2H8bdOE+9 56aJVsDLMzWwRYGGoqSnia7LYJ2FscLpeOB2OQIwItXrTRQnr+zdcAF9OfeFolCLKWzB sg==
Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 3172g3wrge-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Thu, 28 May 2020 11:59:23 -0700
Received: from rn-mailsvcp-mmp-lapp04.rno.apple.com (rn-mailsvcp-mmp-lapp04.rno.apple.com [17.179.253.17]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.5.20200312 64bit (built Mar 12 2020)) with ESMTPS id <0QB200HK322XI1G0@rn-mailsvcp-mta-lapp01.rno.apple.com>; Thu, 28 May 2020 11:59:22 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp04.rno.apple.com by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.5.20200312 64bit (built Mar 12 2020)) id <0QB200B001XD7X00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Thu, 28 May 2020 11:59:22 -0700 (PDT)
X-Va-A:
X-Va-T-CD: da204f8ae10c2539000142a8bd88566b
X-Va-E-CD: e1ecd6da5354413486580a2a14cf7d2f
X-Va-R-CD: 52ca09c9adee446bd3bdf55707d861e3
X-Va-CD: 0
X-Va-ID: 277dea21-07c8-4e89-b7ef-4b6f50f18492
X-V-A:
X-V-T-CD: da204f8ae10c2539000142a8bd88566b
X-V-E-CD: e1ecd6da5354413486580a2a14cf7d2f
X-V-R-CD: 52ca09c9adee446bd3bdf55707d861e3
X-V-CD: 0
X-V-ID: 42327943-7bc7-4604-91f0-b363b274a381
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216, 18.0.687 definitions=2020-05-28_04:2020-05-28, 2020-05-28 signatures=0
Received: from [17.232.218.160] (unknown [17.232.218.160]) by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.5.20200312 64bit (built Mar 12 2020)) with ESMTPSA id <0QB20058J22XIY00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Thu, 28 May 2020 11:59:21 -0700 (PDT)
From: Roger Pantos <rpantos@apple.com>
Message-id: <948461D1-F707-48F5-BA4F-3907E912120E@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_E35ABF2F-3A13-4537-9C5D-258B5826FFC4"
MIME-version: 1.0 (Mac OS X Mail 13.0 \(3643.0.3.2.1\))
Date: Thu, 28 May 2020 11:59:21 -0700
In-reply-to: <CAHEE8LrXdNokr4qttx-9UMq_f-iwUz1VEci-h0m26EkYoj0QYw@mail.gmail.com>
Cc: hls-interest@ietf.org
To: Ofer Shem Tov <ost=40verizonmedia.com@dmarc.ietf.org>
References: <CAHEE8LrXdNokr4qttx-9UMq_f-iwUz1VEci-h0m26EkYoj0QYw@mail.gmail.com>
X-Mailer: Apple Mail (2.3643.0.3.2.1)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.216, 18.0.687 definitions=2020-05-28_04:2020-05-28, 2020-05-28 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/rqLrToW2t-wpAMjnZUKOiUJSU28>
Subject: Re: [Hls-interest] Support for server side ads in long form VOD
X-BeenThere: hls-interest@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Discussions about HTTP Live Streaming \(HLS\)." <hls-interest.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/hls-interest/>
List-Post: <mailto:hls-interest@ietf.org>
List-Help: <mailto:hls-interest-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hls-interest>, <mailto:hls-interest-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 May 2020 18:59:30 -0000

Hello Ofer,

> On May 27, 2020, at 8:40 AM, Ofer Shem Tov <ost=40verizonmedia.com@dmarc.ietf.org <mailto:ost=40verizonmedia.com@dmarc.ietf.org>> wrote:
> 
> In Verizon Media Platform we have a video platform with server side ad insertion called Uplynk. We have a problem with long VOD videos that involve the HLS specification.
> 
> When a player asks to watch a VOD video, before returning the master playlist, we go and fetch ads and stitch them into the media playlists. This works great for short videos, and live, but for longer videos (episodes, movies, etc.) there are several major problems:
> - Start time is very long since we need to fetch a lot of ads.
> - When the player actually plays an ad which is at the end of the video, a long time after the ad was requested, the ad network might ignore ad impression beacons
> - Users might not watch the entire videos causing a lot of ads to be requested but not played which reduces the requestor credit with the ad network
> - In general for programmatic ads that involve real time bidding, playing an ad a lot of time after the bid is not optimal
> 
> DASH has a solution for that. In DASH each ad is in a different period. A period is like its own video with segment description. This would cause the same problems as with HLS but a period can also point to a remote manifest (MPD xlink) instead of listing the period segments. This allows for just in time ad stitching for long videos.

We've got some ideas about how we could fit something like this into HLS. I expect that we’ll be able to share them once we get further along. 

In the meantime we’re certainly interested in hearing about your requirements, including how you’d like to package ad assets, whether you’d have live vs. VOD vs. EVENT use, multi-language support, if and when ads get decisioned or re-decisioned, and essentially any other complications or edge cases that you can think of.


Roger Pantos
Apple Inc. 

> 
> One possible solution for HLS (since the master playlist has no timeline) is to allow a reference to a media playlist inside a media playlist. This reference can have an estimated duration (since we know the size of the ad slot but not the exact duration of ads we would receive from the ad networks) and a URL to a media playlist containing the stitched ads. The player should fetch the referenced playlist when it needs to download a new segment and this segment is in the referenced playlist. Assuming the player buffer is 1-3 minutes it means the server serving the referenced playlist will fetch the ads 1-3 minutes before playback time which is good.
> Once the referenced playlist is fetched,  the actual duration can be known to the player. The video duration reported in the player API can be the net duration without referenced playlists since we do not show a seek bar for the ads but maybe a more flexible API is required to report changing video duration.
> Since ad encoding might be different from content encoding we will add EXT-X-DISCONTINUITY before and after the referenced playlist.
> We will send ad information including beaconing URLs using EXT-DATE-RANGE tags. Our apps can use those metadata events to display UI about the ads and send impression beacons. The EXT-X-PROGRAM-DATE-TIME of the content will be the same for all users on the content part while another clock will be used for EXT-X-PROGRAM-DATE-TIME in the referenced playlists which are personalized and can be different, and with different duration, for each user.
> 
> We will be happy to hear about any plans or ideas for solving this problem with the current spec or future spec of HLS.
> 
> Thanks
> -- 
>  <http://www.verizonmedia.com/>
> Ofer Shem Tov
> 
> Distinguished Software Dev Engineer
> Media Platform
> 
> M +972548842664
> 2A Jabotinsky St.
> Amot Atrium 36th Floor
> Ramat Gan
> 
>  <http://www.facebook.com/verizonmedia>   <http://twitter.com/verizonmedia>   <https://www.linkedin.com/company/verizon-media/>   <http://www.instagram.com/verizonmedia>
> 
> -- 
> Hls-interest mailing list
> Hls-interest@ietf.org <mailto:Hls-interest@ietf.org>
> https://www.ietf.org/mailman/listinfo/hls-interest