Interstitials

Main.Interstitials History

Hide minor edits - Show changes to output

Added lines 1-27:
* Overview of HLS Interstitials (led by Rob Walch)
  * Specification: https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis#appendix-D
  * Primary Purpose: Inserts ads and other breaks/secondary content into primary content
  * How it works:
    * Points to secondary assets in date range
      * This allows content to potentially vary without changing the primary content’s media playlists (aka caching considerations)
      * This also sidesteps spec-complaint constraints on encoding of secondary content
    * Specifies when to play content & resume
* Concern/Complication:
  * Limitation - SSAI + Ad blockers (easier to detect)
  * “play once” vs. “play every time” introduces unstable timeline when Interstitials are expected to occupy primary content timeline (doesn't map to HTMLMediaElement one time / stable timeline model)
  * No official interop with MPEG-DASH, leading to potential fragmentation
    * Possible options discussed: using xlink, using multi-period
    * Related github issue: https://github.com/Dash-Industry-Forum/AdInsertion/issues/83
  * Currently lacks wide support across playback environments
    * AVPlayer/AVFoundation has reasonable support (see: https://developer.apple.com/documentation/avkit/working_with_interstitial_content)
    * Hls.js has planned support upcoming (see: https://github.com/video-dev/hls.js/issues/5730)
    * Most (all?) other players or playback environments do not have any support
      * NOTE: This includes native browser playback in Safari
    * Implication: Using interstitials as, e.g., an ad insertion solution won’t currently work for most folks because it’s not universal enough (yet!)
  * Uncertain about level of support across common packagers, but general sentiment is that it’s minimal at best
    * Related concern: even as packagers implement, there may not be consistency in the details of interstitial packaging
* How should browsers handle Interstitials support?
  * Concern: Timelines/duration/etc.
    * Based on the spec, an HTMLMediaElement would not be guaranteed to “know” the total duration (and e.g. corresponding seekable start/end) of primary content + interstitials at the time of e.g. loaded metadata.
    * Given the complexities this introduces, any final solution should keep the primary content duration distinct from any interstitial content duration
  * After discussion w/Jer Noble and informal vote, any solution will likely need the HTMLMediaElement to “own” any API that will facilitate interstitials (or at least part of it)