Welcome to another alpha release of v1.0.0. This is an early preview release of version 1.0. It includes a refactor of the buffering pipeline and support for Apple Low-Latency HLS. Features related to maintaining a latency target near the edge of a live stream are still in progress.
This release was cut from the feature/v1.0.0 branch for which there is an open PR #3072. Please provide feedback there.
New Features
- Apple Low-Latency manifest and playlist handling
- Low-latency HLS Manifest parsing
- Low-latency Part Loading
- Playlist Request Query Parameters (Blocking Reload with Delivery Directives)
- Playlist Delta Updates
- CDN Tune-in
- Latency controller with
video.playbackRate
adjustment to maintain latency target - Basic IMSC1 support (experimental)
Bug Fixes
- Buffer fmp4 parts and segments without waiting for next starting moof when not in
progressive
buffering mode - All changes and fixes in master up to 2020/11/16 (v0.15.0-canary b3ed002...ee70fd8)
Demo Page
- LL-HLS Parts are displayed in the timeline
- LL-HLS dark mode matches system settings
API Changes
lowLatencyMode
is set totrue
by default enabling LL-HLS playlist part refresh and loading- Event order and content has changed with the refactor. See Breaking Changes below and please report any issues with breaking changes that impact your integrations.
Breaking Changes
- The
stats
object has changedtrequest
,tfirst
,tload
have been replaced byloading: HlsProgressivePerformanceTiming
tparsed
has been replaced byparsing: HlsProgressivePerformanceTiming
BUFFER_CODECS
data has changed from{ tracks: { video?, audio? } }
to simply{ video?, audio? }
BUFFER_APPENDING
data has changed from{ type, data, parent, content }
to{ type, data, frag, chunkMeta }
BUFFER_APPENDED
data has changedFRAG_
events are fired for part loading, parsing and buffering withpart
andfrag
object properties- Event binding should remain unchanged using the public API, but refer to #2395 if experiencing issue with changes to event constants.
- On the
Fragment
object:hasElementaryStream
function has been removedsetElementaryStream
and_elementaryStreams
have been renamed (these are only for internal use)
- Promise support is now required. Please bring your own polyfill
Known Issues
- Playback rate adjustment is performed by default for all live streams. This can be disabled by changing the current default
minLiveSyncPlaybackRate
of0.5
andmaxLiveSyncPlaybackRate
of1.5
both to1
. The next release will include additional low latency mode options and should not change the rate on standard-latency or "DVR" event live streams by default. - Part loading and playback rate adjustment is still performed even when playback is positioned far back from the part list.
EXT-X-PRELOAD-HINT
is not supported and won't be until after v1.0.0.
Summary
v1.0.0-alpha.1...v1.0.0-alpha.2
To provide feedback see #3072