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:
- Low-latency segments are advertised in the playlist
- Clients initiate connections to them via Chunked Transfer Encoding
- Servers push segment chunks fresh off the transcoder
-
Clients immediately buffer each chunk
Problem: No single & agreed-upon way to structure an LHLS playlist
Solution: Open Standard
Why make an open standard?
- Gain consensus on how to structure LHLS
- 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
- Backwards compatibility
- iOS included
- ~2s of latency under good conditions
Design Goals
The Proposal:
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:
- Vendors wanting to use Hls.js as their LHLS client
- Player devs who want to adopt this proposal
- Hls.js collaborators (or future collaborators)
- Anyone with an opinion or experience willing to help out
Questions?
LHLS Talk - FOMS 2018
By John Bartos
LHLS Talk - FOMS 2018
- 599