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

Ofer Shem Tov <ost@verizonmedia.com> Wed, 27 May 2020 15:41 UTC

Return-Path: <ost@verizonmedia.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 AAAFC3A0F60 for <hls-interest@ietfa.amsl.com>; Wed, 27 May 2020 08:41:02 -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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=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=verizonmedia.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 teL5ZtbGwky6 for <hls-interest@ietfa.amsl.com>; Wed, 27 May 2020 08:41:00 -0700 (PDT)
Received: from mail-il1-x12f.google.com (mail-il1-x12f.google.com [IPv6:2607:f8b0:4864:20::12f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C56D63A0F5C for <hls-interest@ietf.org>; Wed, 27 May 2020 08:41:00 -0700 (PDT)
Received: by mail-il1-x12f.google.com with SMTP id q18so3336516ilm.5 for <hls-interest@ietf.org>; Wed, 27 May 2020 08:41:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=verizonmedia.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=qrzoD/HOX3xuUwJ8vhEdY1VLO4Ek2KbvJsOXmLdY/e0=; b=GYjH1fIkAV+4rINfOL0Wh15nMTs9W5UQ8wxftijByRE2VXBuEd3nxu3jNVz8d6WWRJ EiBB6FSzkViXcfzC2mZMYvCypy89aiUpwAv6Rw4hxJuNtOln8IXEFr2aTyzUJ7VpinTU EduWmtCymhhCTNc8AR+kTnXX3i2R3JmQO1qOicbFbi5oNbikMMCmRihe91+L3IWO/dlD HVyCkd7DmkM3LRNsfzPZMHXSYrDvJf0b954lkh/juNwvnigzTQm6jZGHSET8bFt6eB8N +nDuiASj5HuiUN1/HrqACjO3yXzS1lzREF1A7sjQVEDPTCv2RelVm4JdDRdHqB26ttXY 5OOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qrzoD/HOX3xuUwJ8vhEdY1VLO4Ek2KbvJsOXmLdY/e0=; b=knXlJP4rr1acTwKPCX46PKrzAHDGzvsl5Y/8o4b2R0jc18nnHuCxCkppoBtG3ugghV TNTauuGWyMPUb9ecWqV5KWaXoXE5uo6G+CVSo4Vt62D5BlK8uYv4HtPFVzgZlXx544Mu 2dnvgiTFRhPrs1XgIO2CPX4wWmOtfmY35Cx27KiWkuMRuJIunQYGOW19pdY3dCWa+wEO dDivKyO42ZyopbQn8Nbs7LgERzz69Sufr9VLVQNo9Hx90k9YR/InbztPZE9zeQQtv1h3 ENcJd5hnSgqZbbgHp3pzQVYSUVkPrZEDGTWQXvuQyeiq0AyOxwi0rNxYsozAmFnOoB67 n0qA==
X-Gm-Message-State: AOAM530fwQvfUnrqhVkhlDZgtsxu3G06T49YEZ+VGNKOJ2GxYVL2abT6 R/f2OIX4Rud0VwePSw0uugwJvafIQ3PRfqODb1wgFgGKnqI=
X-Google-Smtp-Source: ABdhPJweAkBB5pr6dBZAQlkA8SM955+tuS18501/RL8aLF+X1kN82UiDsvuV2I+0DyJCtTfzzJP7H5znYuBXWS2ppB4=
X-Received: by 2002:a92:c401:: with SMTP id e1mr6517347ilp.134.1590594059305; Wed, 27 May 2020 08:40:59 -0700 (PDT)
MIME-Version: 1.0
From: Ofer Shem Tov <ost@verizonmedia.com>
Date: Wed, 27 May 2020 18:40:42 +0300
Message-ID: <CAHEE8LrXdNokr4qttx-9UMq_f-iwUz1VEci-h0m26EkYoj0QYw@mail.gmail.com>
To: hls-interest@ietf.org
Content-Type: multipart/alternative; boundary="000000000000e32c3b05a6a309f7"
Archived-At: <https://mailarchive.ietf.org/arch/msg/hls-interest/A8ruxtnQFM-oJi46r_EVVkdM7Zs>
Subject: [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: Wed, 27 May 2020 15:41:03 -0000

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. 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>