github video-dev/hls.js v1.3.0

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

Summary

HLS.js v1.3.0 adds support for FairPlay and PlayReady in addition to improved support for Widevine DRM. Improvements to key loading, key-system selection, key rotation, and error reporting, make HLS.js a robust choice for playing protected content.

Changes Since The Last Release

v1.2.9...v1.3.0

New Features

Bug Fixes and Improvements

  • Parallelize key and segment requests (#4861) @robwalch
  • Manage End of Stream state after flushing buffer (#5131) @robwalch
  • Eagerly match segments without tolerance offset (#5084) @robwalch
  • m3u8-parser: fill missing rendition report attrs (#5110) @erankor
  • Fix: Rendition Report switching with unnormalized relative URLs (#5124) @robwalch
  • Fix Low-Latency HLS next part selection when switching mid segment (#5122) @robwalch
  • Prevent missed software decrypt from skipping MP3 segment timestamp offset from being set (#5142) @robwalch
  • Remove SIDX playlist MAP patching (#5139) @robwalch

Documentation

  • API.md: DRM documentation and FairPlay support improvements (#5117) @robwalch
  • API.md: Clarify when LEVEL_LOADING is not called (#5144) @robwalch
  • release-process.md: Mention that you need to be an admin or maintainer to push version tag (#5137) @tjenkinson
  • README: Add kaltura player to players list (#5125) @giladna
  • README: Added another modern IPTV player example (#5123) @JaroslavHerber

Tasks

Demo Page

https://hls-js-75bc380c-9334-4db4-80bd-c8023729c6f3.netlify.app/

API Changes

See https://github.com/video-dev/hls.js/blob/v1.3.0/docs/API.md for API details and examples.

API additions

  • Added top-level hls.maxHdcpLevel getter-setter

Config changes

  • Added drmSystems for defining key-system specific license urls and certificates
    • drmSystems['com.widevine.alpha'].licenseUrl replaces widevineLicenseUrl (deprecated but still supported)
    • Use optional drmSystems['com.apple.fps'].serverCertificateUrl to specify FairPlay certificate url
    • Use optional drmSystems[KEY-SYSTEM].generateRequest to map initData or generate initData for playlist keys before
      MediaKeySession generateRequest is called
  • drmSystemOptions takes additional optional arguments used for defining MediaKeySystemConfiguration
  • licenseXhrSetup
    • includes additional keyContext and licenseChallenge arguments
    • is optionally async: takes a return value of a Uint8Array, a Promise which resolves with a Uint8Array or undefined (returning a value transforms the licenseChallenge license request body)
  • licenseResponseCallback includes an additional keyContext argument
  • Changes to the integration of EMEController and KeyLoader may impact custom config.emeController implementations
    • A new keyLoader constructor argument has been added to StreamController, AudioStreamController, and SubtitleStreamController via BaseStreamController (this allows all stream controllers to share a common KeyLoader instance)
    • KeyLoader utilizes an instance of EMEController for handling HLS Keys

New Error Event ErrorDetails constants have been added to help with identifying issues when negotiating with CDMs

  • New KEY_SYSTEM_ERROR type error details:
    • KEY_SYSTEM_NO_CONFIGURED_LICENSE Removed KEY_SYSTEM_NO_INIT_DATA from beta.1
    • KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED
    • KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED
    • KEY_SYSTEM_SESSION_UPDATE_FAILED
    • KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED
    • KEY_SYSTEM_STATUS_INTERNAL_ERROR

Event object additions

  • MANIFEST_LOADED event data includes sessionKeys
  • MANIFEST_PARSED event data includes sessionData and sessionKeys
  • KEY_LOADED event data includes keyInfo

Fragment object changes

  • The levelkey property has been replaced by an array: levelkeys
    • (levelkey has been deprecated and will not be supported)

LevelDetails object additions

  • encryptedFragments property has been added (assists in dealing with "clear-lead" streams where initial segments are not encrypted)

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.