github video-dev/hls.js v1.5.0-alpha.1

latest releases: v1.5.17, v1.6.0-beta.1, v1.5.16...
pre-release13 months ago

Summary

HLS.js v1.5.0-alpha.1 includes bug fixes and improvements over the last release.

Changes Since v1.5.0-alpha.0

v1.5.0-alpha.0...v1.5.0-alpha.1

Documentation

  • API docs: add more info around backBufferLength (#5841, #5842) @cmugla
  • Add preferManagedMediaSource API.md doc entry for ManagedMediaSource usage (#5828) @robwalch

Project and CI

Changes Since The Last Release (v1.4.12)

v1.4.12...v1.5.0-alpha.0

Codec Support

Preferred Codec Selection

  • Base initial bandwidth estimate on first level bitrate by @robwalch in #5649
  • Initial selection and level filtering based on preferred codecs and MediaCapabilities by @robwalch in #5704

MSE on iPhone

API Enhancements

  • Fire STEERING_MANIFEST_LOADED event when loading a Content Steering Manifest by @guillemcabrera in #5417
  • Add config flag for maximum front buffer frontBufferFlushThreshold by @iamboorrito in #5761
  • Implement event for maxAutoLevel change by @robwalch in #5763
  • Specify custom shouldRetry predicate in retryConfig by @PavelFomin90 in #5658 (completed in #5762)
  • Default estimate enhancements #5649
    • Add config.abrEwmaDefaultEstimateMax option which limits how high default value can be adjusted to.
      Separate peak and average bitrates of Level objects
  • Rendition selection enhancements #5704
    • HLS.js will no longer start on the first variant (hls.firstLevel), or any variant of a preferred codec, if its BANDWIDTH exceeds abrEwmaDefaultEstimateMax.
    • Add hls.firstAutoLevel getter, used internally to get the starting level index.
      hls.levels are sorted on height, frame rate, preferred codec, and video-range to infer order by quality. Height-first sorting allows cap-level-lontroller to set a max quality index at the maximum allowed resolution.
    • Add getters for all audio tracks and all subtitle tracks: hls.allAudioTracks and hls.allSubtitleTracks
  • Level properties
    • Level.bitrate uses variant BANDWIDTH (required peak bitrate) before falling back to optional AVERAGE-BANDWIDTH.
    • Level.averageBitrate returns parsed AVERAGE-BANDWIDTH. Falls back to runtime average Level.realBitrate (which is only set when config.abrMaxWithRealBitrate is enabled) and finally Level.bitrate (BANDWIDTH).
    • Added Level.frameRate returns parsed FRAME-RATE number or 0.
    • Added Level.codecs returns parsed CODECS or emptry string.
    • Added Level.score returns parsed SCORE number or 0.

Live Streaming Bug Fixes

  • Fix Low-Latency HLS directives skipping part 0 @jhonalino in #5714
  • Fix support of skip directive without block reload by @robwalch in #5791
  • Fix live frag finding after detach and re-attach past live window by @robwalch in #5742
  • Handle #EXT-X-ENDLIST appended to live playlist without new segment by @robwalch in #5778

Captions, Subtitles, and Metadata Bug Fixes

  • Clear CEA-608 captions on discontinuity by @robwalch in #5557
  • Fix DateRange metadata cue duration with ID3 cues that overlap by @robwalch in #5546
  • Use input timescale when remuxing inband captions by @robwalch in #5675

Bug Fixes (Misc)

  • Filter variants with any unsupported codecs by @robwalch in #5533
  • Fix two AV1 parsing issues by @nyanmisaka in #5774
  • Push AUD units to fix decode errors with some TS segments by @robwalch in #5696
  • Fail MP3 probe if AC3 or EC3 detected by @robwalch in #5695
  • Prevent ADTS probe false positives when bytes following ID3 are a match for MPEG audio by @robwalch in #5783
  • Reset init segment when M2TS video configuration changes by @robwalch in #5794
  • Fix capLevelToPlayerSize after hiding player and maintain stable selection when aspect ratio changes by @robwalch in #5614
  • Fix handling of segments at the discontinuities that do not start with a keyframe by @robwalch in #5659
  • Fix AC3 PES parsing by @softworkz in #5673
  • Fix issue #5632, where missing AUD units for keyframes causes them to be merged with their preceding frame by @Thulinma in #5652
  • Fix Safari decode errors with DTS not increasing when PTS decreases by @robwalch in #5710
  • Fix PlayReady DRM in Edge browser by @mikrohard in #5699
  • Do not jump start gaps when paused by @robwalch in #5502
  • Never back-track on first fragment to avoid loop loading by @robwalch in #5613
  • Use last discontinuity bounds when aligning playlists on PDT by @robwalch in #5681
  • Load last alt-audio segment even when is starts after the end of the main playlist by @robwalch in #5717
  • Do not exit from stall detection when playhead is at or past end of buffer by @robwalch in #5779
  • Error and switch on SourceBuffer append requests for non-existing tracks by @robwalch in #5485
  • Handle mixed sourcebuffer errors by @robwalch in #5623
  • Remove SourceBuffers on "updateend" when MediaSource is closed by @robwalch in #5731
  • Resume fragment loading after level switch follows level error by @robwalch in #5537
  • Prevent recursion in error event handlers that throw by @robwalch in #5549
  • Reset loading start on worker setup error by @robwalch in #5620

Minor Enhancements

Typescript Improvements

  • Correcting usage of extended generic type LoaderContext in type Loader (#5487) by @lvnam96 in #5494
  • Make loader context nullable and cleanup loader cleanup by @robwalch in #5552

Demo Page

Documentation

  • Add additional documentation for workerPath config by @mogzol in #5765

Project and CI

New Contributors

Demo Page

https://eb50102f.hls-js-dev.pages.dev/

API and Breaking Changes

If you are upgrading from version v0.14.17 or lower, see the MIGRATING guide for API changes between v0.14.x and v1.0.0.

Feedback

Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.

Don't miss a new hls.js release

NewReleases is sending notifications on new releases.