Releases: video-dev/hls.js
v1.3.2
Summary
HLS.js v1.3.2 includes bug fixes and improvements over the last release.
Changes Since The Last Release
Demo Page
https://hls-js-9d74a5c2-3291-4a44-abf0-7f63f15151e7.netlify.app/demo/
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.
v1.3.1
Summary
HLS.js v1.3.1 includes bug fixes and improvements over the last release.
Changes Since The Last Release
Demo Page
https://hls-js-a5d39a35-ea77-4679-a258-b854c8ea6f78.netlify.app/
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.
v1.3.0
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
New Features
- Multi-DRM Support (#4930) @robwalch
- Add support for com.apple.fps (#4474) @valotvince
- Implement
maxHdcpLevel
HDCP-LEVEL capping and EME error handling (#5150) @robwalch
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
- downgrade
netlify-cli
for now as it breaks netlify (#5114) @tjenkinson - Update GitHub stale bot rules (#5138) @robwalch
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 certificatesdrmSystems['com.widevine.alpha'].licenseUrl
replaceswidevineLicenseUrl
(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
MediaKeySessiongenerateRequest
is called
drmSystemOptions
takes additional optional arguments used for definingMediaKeySystemConfiguration
licenseXhrSetup
- includes additional
keyContext
andlicenseChallenge
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)
- includes additional
licenseResponseCallback
includes an additionalkeyContext
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
- A new
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
RemovedKEY_SYSTEM_NO_INIT_DATA
from beta.1KEY_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 includessessionKeys
MANIFEST_PARSED
event data includessessionData
andsessionKeys
KEY_LOADED
event data includeskeyInfo
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.
v1.3.0-beta.2
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
- DRM documentation and FairPlay support improvements (#5117) @robwalch
- downgrade
netlify-cli
for now as it breaks netlify (#5114) @tjenkinson
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 certificatesdrmSystems['com.widevine.alpha'].licenseUrl
replaceswidevineLicenseUrl
(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
MediaKeySessiongenerateRequest
is called
drmSystemOptions
takes additional optional arguments used for definingMediaKeySystemConfiguration
licenseXhrSetup
- includes additional
keyContext
andlicenseChallenge
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)
- includes additional
licenseResponseCallback
includes an additionalkeyContext
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
- A new
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
RemovedKEY_SYSTEM_NO_INIT_DATA
from beta.1KEY_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 includessessionKeys
MANIFEST_PARSED
event data includessessionData
andsessionKeys
KEY_LOADED
event data includeskeyInfo
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.
v1.3.0-beta.1
Summary
HLS.js v1.3.0-beta.1 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
- Multi-DRM Support (#4930) @robwalch
- Add support for com.apple.fps (#4474) @valotvince
- Eagerly match segments without tolerance offset (#5084) @robwalch
- Fix audio and subtitle controller loading incorrect segments before player seeks to startPosition (VOD) (#5095) @robwalch
(included in v1.2.9 via #5098) - Parallelize key and segment requests (#4861) @robwalch
Demo Page
https://hls-js-b1cb1eb0-2e11-40ac-808b-56bf07ffda6a.netlify.app/demo/
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 certificatesdrmSystems['com.widevine.alpha'].licenseUrl
replaceswidevineLicenseUrl
(deprecated but still supported)
drmSystemOptions
takes additional optional arguments used for definingMediaKeySystemConfiguration
licenseXhrSetup
- includes additional
keyContext
andlicenseChallenge
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)
- includes additional
licenseResponseCallback
includes an additionalkeyContext
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
- A new
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_SERVER_CERTIFICATE_REQUEST_FAILED
KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED
KEY_SYSTEM_NO_INIT_DATA
KEY_SYSTEM_SESSION_UPDATE_FAILED
KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED
KEY_SYSTEM_STATUS_INTERNAL_ERROR
Event object additions
MANIFEST_LOADED
event data includessessionKeys
MANIFEST_PARSED
event data includessessionData
andsessionKeys
KEY_LOADED
event data includeskeyInfo
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.
v1.2.9
Summary
HLS.js v1.2.9 includes bug fixes and improvements over the last release.
Changes Since The Last Release
Demo Page
https://hls-js-1ddaca7e-016f-45b6-aaea-7c0f72e4e974.netlify.app/
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.
v1.2.8
Summary
HLS.js v1.2.8 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Improve webworkify handling of named functions where name is in quotes (#5036) by @robwalch
- Resolves #5015 (v1.2.5 throws an error in a next.js production build)
- Bugfix: Fragment LoadStats total set to 0 with
progressive: true
(#5054) by @robwalch- Fixes #5050 (LoadStats properties loaded and total is 0 for a download fragment when using FetchLoader)
- Document new gap controller behaviour on v1.x (#5066) by @itsjamie
- In response to #4066 (Playback does not Start in 1.0.x Versions with A/V Offset in First Segment)
Demo Page
https://hls-js-c7fd2a21-dc83-431c-ba38-cdfc9ae85a20.netlify.app/demo/
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.
v1.2.7
Summary
HLS.js v1.2.7 includes bug fixes and improvements over the last release.
Changes Since The Last Release
Demo Page
https://hls-js-c26d5ecc-3c7e-4c1c-81dd-05648534771d.netlify.app/
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.
v1.2.6
Summary
HLS.js v1.2.6 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Update fragPrevious when attempting to load an already-buffered fragment (#5013) @erkreutzer
- Fallback to inline demuxing on Worker error (#5016) @robwalch
Demo Page
https://hls-js-ca8b2d52-fcac-4573-8aa7-4d4f55f49361.netlify.app/
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.
v1.2.5
Summary
HLS.js v1.2.5 includes bug fixes and improvements over the last release.
Changes Since The Last Release
Bugfixes and Improvements
- ID3: add duration to metadata samples, mimic Safari behavior on unbounded cues (#4967) @jprjr
- Bugfix: Subtitles not working on live with EXT-X-PROGRAM-DATE-TIME gaps (#4999) @erankor
- Bugfix: Exception when xhr.response is null (#4980) @asashakira
- Bugfix: MPEG-2 TS segments not starting with TS packet sync byte (#5006) @robwalch
- Bugfix: MPEG-2 TS DTS/PTS overlap between segments #4976 (#4977) @robwalch
- Bugfix: HEVC 608 captions (#4972) @erankor
- Bugfix: Support Opus lowercase CODECS entry (#4526) @stolen
- Bugfix: Live stream not seeking to start position (#4951) @kmamal
Tasks
- Remove redundant discardEPB call & impl in tsdemuxer (#4983) @erankor
- Webpack 5 Upgrade (#5007) @robwalch
Documentation
Demo Page
https://hls-js-acf592b8-566a-4553-aa84-d2d6adcdc0db.netlify.app/
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.