LHLS Proposal Primer

video-dev: @johnBartos

Hls.js is a free and open-source JavaScript HLS Client

This talk is about the details of Hls.js' LHLS proposal

But first, a condensed history to catch you up

Problem: HLS is high latency (30s+)

Solution: Build LHLS (~2s)

LHLS in 4 steps:

  1. Low-latency segments are advertised in the playlist
  2. Clients initiate connections to them via Chunked Transfer Encoding
  3. Servers push segment chunks fresh off the transcoder
  4. Clients immediately buffer each chunk

Problem: No single & agreed-upon way to structure an LHLS playlist

Solution: Open Standard

Why make an open standard?

  1. Gain consensus on how to structure LHLS
  2. Work together on the implementation

Ok, time for the details.

(If you have questions please chase me down afterwards)

Where does Latency Come From?

https://tools.ietf.org/html/draft-pantos-hls-rfc8216bis-03

Other source of latency

  • Fundamental HTTP/TCP latency
    • TCP Handshake
    • Flow/Congestion control
    • Retransmission
  • Client code
    • Plain old nonperformant code
    • Discrete segments only
  • Connection latency
    • Preflight requests
  1. Backwards compatibility
    1. iOS included
  2. ~2s of latency under good conditions

Design Goals

New Tags:

(all playlist level)

#EXT-X-PREFETCH: <URI>
#EXT-X-PREFETCH-DISCONTINUITY

Advertise a prefetch segment

Advertise a prefetch discontinuity

Please Participate!

Input is needed from:

  1. Vendors wanting to use Hls.js as their LHLS client
  2. Player devs who want to adopt this proposal
  3. Hls.js collaborators (or future collaborators)
  4. Anyone with an opinion or experience willing to help out

Questions?

LHLS Talk - FOMS 2018

By John Bartos

LHLS Talk - FOMS 2018

  • 599