Summary
HLS.js v1.6.0-beta.3 includes bug fixes and improvements over the last release. These changes focus on interstitials and playback stability.
Changes Since The Last Release
Interstitial changes
- Improved Interstitial fragment loading and buffering (#7002) @robwalch
- Fix live duration override by interstitials (#6991)
- Trigger INTERSTITIALS_PRIMARY_RESUMED after ending interstitial with CUE ONCE (#6915)
- Interstitials: Fix additional asset player creation between assets at start (#6914)
- Fix Interstitial asset inline buffering with other items buffered ahead (#6913)
Bug fixes
- Gap controller fixes (#6941) @robwalch
- Flush MSE rendering pipeline when crossing video buffer holes with audio (#6972)
- Fix seeking into and over multiple EXT-X-GAP segments (#6988)
- Make Fragment.stats enumerable (#6999)
- Split the _close method from mediaDetach (#6966) @JackPu
- Workaround Safari "ended" event not firing when EoS is marked before seek on start (#6980) @robwalch
- Fix reset of "ended" state after main muxed audio flush (#6921
- Fix audio track switch where only characteristics differ (#6963)
- Fix delta updates with discontinuity tags (#6950)
- Fix assumptions in multi-drm cases where only playready is available for playback. (#6946) @cjpillsbury
- Support HEVC VPS coming after SPS (#6940) @devoldemar
- Exclude AC3 and HEVC remuxing from light build (#6944) @robwalch
- Add shortcut for
lightversion (#6925) @denisx - Do not adjust initPTS without accurate playlist time offset (#6922) @robwalch
- Replace non-null assertions in xhr-loader and gate evoking of loader callbacks (#6942)
Demo Page
https://e97fbb95.hls-js-dev.pages.dev/demo/
Additional features
- Flush back buffer when
backBufferLengthis set to 0 (#6781) (#6784) @tmiller02 - Configure
maxDevicePixelRatioto limit browser value (#6825) @signalwerk - Additional key-system cleanup error details (#6807) @JackPu
- #EXT-X-BITRATE support (#6843) @robwalch
API
- Added
config.detectStallWithCurrentTimeMs - Added
config.nudgeOnVideoHole - Added
hls.pathwaysgetter (#6997) @grabofus - Added
hls.inFlightFragments - Added
hjs.loadLevelObj - Added
hls.loadingEnabled(toggled withhls.startLoad()andhls.stopLoad()- for internal use) - Added
Events.EVENT_CUE_ENTER(for internal use) - Added
levelInfo: LeveltoLevelLoadingDataandLevelLoadedDataevent data - Added
track: MediaPlaylisttoTrackLoadingDataandTrackLoadedDataevent data (audio and subtitle events) - Added
withoutMultiVariant: booleantoLevelLoadedDataevent - Added
LevelDetais.expired: booleanreadonly getter - Added
LevelDetais.requestScheduled: numberproperty (for internal use) - Added readonly
Fragment.bitrateandFragment.byteLengthgetters - Several
Fragmentproperties have been changed to readonly getters or getter/setters:get baseurl(),get/set stats(),get/set programDateTime(). This impacts serialization and extension of these properties (statswill not be copied with spread operator orObject.assign).
Feedback
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.