HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.
HLS.js v1.5.8 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.7...v1.5.8
https://e867d9c3.hls-js-dev.pages.dev/demo/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.7 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.6...v1.5.7
https://e655f194.hls-js-dev.pages.dev/demo/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.6 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.5...v1.5.6
https://50c883ad.hls-js-dev.pages.dev/demo/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.5 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.4...v1.5.5
https://62e182dc.hls-js-dev.pages.dev/demo/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.4 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.3...v1.5.4
startLevel
above max level index (#6190)https://a68faad5.hls-js-dev.pages.dev/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.3 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.2...v1.5.3
https://c4ee6181.hls-js-dev.pages.dev/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.2 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.1...v1.5.2
https://7ed4d72b.hls-js-dev.pages.dev/demo/
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.1 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.5.0...v1.5.1
https://2400e6db.hls-js-dev.pages.dev/demo/
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.
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.5.0 includes playback and API enhancements that support HLS assets containing multiple codec variants, HDR video variants, and multi-channel audio renditions. Support for MediaCapabilities and ManagedMediaSource has also been adopted.
Media segment codec parsing is available for direct playback of media playlists as well as proper setup of MediaSource buffers for AV1, HEVC, HEVC with DolbyVision, AVC, AC3, EC3, Apple Lossless (ALAC), AAC, FLAC and Opus.
MediaCapabilities decodeInfo
checks are performed after the initial start before switching to UHD, HDR, and Multi-channel audio options.
Note that auto-switching between codec families is not supported. HLS.js will attempt to start on the most efficient supported codec set available within the initial bandwidth estimate range (up to 500kbps). However, switching between variants with incompatible codecs requires manual intervention by the user or application. Constraining playback to compatible codecs maintains maximum compatibility and stable playback. changeType
is used when necessary but avoided for auto-switching because it is not always stable or smooth between all combinations or on all platforms.
ManagedMediaSource support adds the ability to run HLS.js on iOS 17.1 and up. HLS.js in Safari on iOS, iPadOS, and MacOS leverages ManagedMediaSource to start and stop streaming for power-efficient use of wireless connections.
https://github.com/video-dev/hls.js/compare/v1.4.14...v1.5.0
hls.firstLevel
) or any variant of a preferred codec if its BANDWIDTH exceeds abrEwmaDefaultEstimateMax
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 resolutionhls.allAudioTracks
and hls.allSubtitleTracks
hls.setAudioOption()
and config.audioPreference
have been added to simplify audio selection based on user preferences and playback settingshls.setSubtitleOption()
and config.subtitlePreference
have been added to simplify subtitle selection based on user preferences and playback settings. Only subtitle media options (hls.allSubtitleTracks
) are subject to selection criteria. Captions are assigned a TextTrack or emitted through events when native rendering is disabled.config.videoPreference.preferHDR
and preferHDR
have been added to override the default SDR/HDR selection behaviorbandwidthEstimate
that resets estimator to a new starting valueconfig.useMediaCapabilities
(defaults to true
)config.useMediaCapabilities
to false
to disable the use of MediaCapabilities.decodingInfo
isSupported()
has been expanded to test alternate baseline codecs (#6006)
isMSESupported()
, a subroutine of isSupported()
, checks for MediaSource API without isTypeSupported checks.getMediaSource()
, which returns the preferred MSE interface or undefined when unavailableisSupported
, isMSESupported
, and getMediaSource
STEERING_MANIFEST_LOADED
event when loading a Content Steering Manifest (#5417) @guillemcabrerafrontBufferFlushThreshold
(#5761) @iamboorritomaxAutoLevel
change (#5763) @robwalchshouldRetry
predicate in retryConfig
(#5658) @PavelFomin90 (completed in #5762)config.abrEwmaDefaultEstimateMax
option, which limits how high the initial default value may be adjusted
Separate peak and average bitrates of Level objectsLevel.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).Level.frameRate
returns parsed FRAME-RATE number or 0.Level.codecs
returns parsed CODECS or empty string.Level.score
returns parsed SCORE number or 0.preferManagedMediaSource
. Set it to false
to use MediaSource
rather than ManagedMediaSource
on platforms with both.cmcd
config option with cmcd.includeKeys
. Takes an array of CMCD keys to include in client requests. (#5903) @littlespex0
(#5714) @jhonalinoself
from enableLogger
(#5936)LoaderContext
in type Loader
(#5494) @lvnam96playsInline
to video elements on demo pages (#5556) @tjenkinsonkarma-rollup-preprocessor
to version that works in watch mode (#5991).gitignore
(#5635) @softworkzhttps://d977f407.hls-js-dev.pages.dev/demo/
If you are upgrading from version v0.14.17 or lower, see the MIGRATING guide for API changes between v0.14.x and v1.x.
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.
HLS.js v1.4.14 includes bug fixes and improvements over the last release.
https://github.com/video-dev/hls.js/compare/v1.4.13...v1.4.14
https://00e6b582.hls-js-dev.pages.dev/demo/
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.
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our CONTRIBUTING guide.