Skip to content

v1.3.0-beta.2

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 19 Dec 01:26
· 1555 commits to master since this release
9d977b7

Summary

HLS.js v1.3.0-beta.2 is a preview release highlighting improved DRM support coming to HLS.js version 1.3.

This release introduces support for FairPlay Streaming with modern EME, PlayReady support, and improved Widevine support.

Changes Since The Last Release

v1.3.0-beta.1...v1.3.0-beta.2

Demo Page

https://hls-js-b4e1fa26-a33d-4724-9f7b-f21b7340aa0c.netlify.app/

API Changes

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

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)

Feedback

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