CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Releases: video-dev/hls.js
v1.6.7
Compare
Summary
HLS.js v1.6.7 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Fix Widevine KEYID parsing (#7380) @robwalch
- Resolves No Playback of fmp4 + CBCS w/ Widevine (#7369) @Trevor-Uplynk
- Fix
requireKeySystemAccessOnStart
with Live HLS or start offset (#7383) @grabofus - Initialize key-system access on first segment request with encrypted segments (#7384) @robwalch
Demo Page
https://4e5546da.hls-js-dev.pages.dev/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.
Assets 3
v1.6.6
0e842b1
Compare
Summary
HLS.js v1.6.6 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Fix parse PSSH box error (#7320) @yajin2021
- Use SourceBuffer
timestampOffset
(#7311) @robwalch- Resolves audible artifacts on first audio segment boundary (#7310) @cjpillsbury
- MediaCapabilities enhancements (#7354)
- Support interstitial schedule navigation on INTERSTITIAL_ASSET_ENDED (#7329)
- Fix QuotaExceededError regression caused by change in Chrome 138 (#7368)
- Resolves stalling caused by change to QuotaExceededError
code
(22 -> 0) shipped in Chome 138 (#7367) @spiralman
- Resolves stalling caused by change to QuotaExceededError
- Fix unnecessary setting of MediaSource duration with stale value (#7326)
- Resolves LL-HLS buffer append errors where playlist duration is shorter than latest append (#7321) @SangwonOh
- Fix errors in SourceBuffer creation when media parsed codec is unsupported (#7304)
- Resolves playback failure when unable to parse AAC mp4a codec correctly (#7302) @denivladislav and (#7355) @doublex
- Fix subtitle segment loading at live start (#7349)
- Update next load position if currentTime is not being used on seek (#7342)
- Resolves loading correct segments after seeking in rare startup scenarios (#7327) @AlexanderSlesarenko
- Functional test runner setup changes for running in Safari locally (#7313)
Demo Page
https://6fdff299.hls-js-dev.pages.dev/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.
Assets 3
v1.6.5
Compare
Summary
HLS.js v1.6.5 includes bug fixes and improvements over the last release.
Changes Since The Last Release
Demo Page
https://7127ae6b.hls-js-dev.pages.dev/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.
Assets 3
v1.6.4
Compare
Summary
HLS.js v1.6.4 fixes a regression in fragmented mp4 audio segment handling introduced in v1.6.3.
Changes Since The Last Release
- Fix mp4 audio sample duration calculation regression (#7290) @robwalch
- #7199 introduced a regression by skipping sample based duration calculation for audio tracks
Demo Page
https://5f099c29.hls-js-dev.pages.dev/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.
Assets 3
v1.6.3
Compare
Summary
HLS.js v1.6.3 includes bug fixes and improvements over the last release.
Changes Since The Last Release
New configuration options
- Added config
preserveManualLevelOnError
option (#7280) @brodiddev - Added config
requireKeySystemAccessOnStart
(EME clear to encrypted transition) (#7216) @grabofus - Added config
startOnSegmentBoundary
synchronizing live start position with program boundary (#7211) @krseager - Added config
liveSyncMode?: 'edge' | 'buffered'
to change live catch up seek behavior (#7210) @whdudtod1273
Interstitials
- Fixed appending of Interstitials in place that exceed X-PLAYOUT-LIMIT (#7182) @robwalch
- Support late X-PLAYOUT-LIMIT update with append-in-place interstitials (#7257)
- Skip Interstitial assets that error rather than falling back to primary for entire break (#7263)
- Fixed interstitial "_HLS_primary_id" value in asset requests (#7260)
EME
- Setting
requireKeySystemAccessOnStart
fixes Chrome PIPELINE_DECODE_ERROR on clear to encrypted transition (#7216) @grabofus - Prevent same MediaKeys from being set on media element by eme-controller (#7284) @robwalch
- Fix MediaKeys cleanup on player destroy and reuse (#7287)
MSE and codec selection
- Prevent overlapping track appends in muxed fmp4 on discontinuity (#7199, #7247) @robwalch
- Fixed seeking into jagged discontinuity sequence boundary (#7274)
- Fix handling of variants with mixed video codecs starting with "avc1" (#7205)
- Improved HEVC codec parsing (#7177)
Misc
- Added missing type exports for modules exported in hls.mjs (#7225) @robwalch
- ESLint "for of" loops with no-for-loops (#7202) @satyam73
- Documentation: added note regarding ESM use with old browsers (#7203) @nebutch
- Added iptvplayer.stream to README.md (#7212) @korchix
Demo Page
https://b96cca92.hls-js-dev.pages.dev/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.
Assets 3
v1.6.2
Compare
Summary
HLS.js v1.6.2 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Fix live "discontinuity sequence mismatch" regression (#7168) @robwalch
- Do not skip loading of parts that were previously buffered (#7167)
Demo Page
https://e5abc373.hls-js-dev.pages.dev/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.
Assets 3
v1.6.1
Compare
Summary
HLS.js v1.6.1 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Fix streaming interruption from exception thrown setting MediaSource duration (#7148) @robwalch
- Make appendBuffer errors fatal when HTMLMediaElement.error is present (#7147)
- Guard against exceptions when parsing incomplete codec boxes (#7146)
- Warn on muxed mp4 with alt-audio (unsupported media configuration) (#7153)
- Support disabling alternate audio with config (#7154)
- Timeout
mediakeySession.remove()
and only call for persistent-license sessions (#7050) @JackPu - Add workaround for Xbox One
keyStatuses.forEach
callback not work well (#7150)
Demo Page
https://26b6689f.hls-js-dev.pages.dev/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.
Assets 3
v1.6.0
Compare
Summary
HLS.js v1.6.0 introduces support for HLS Interstitials with new API features, media support, and playback enhancements.
New features in release version 1.6
- HLS Interstitials Support (#6591, #6756, #6852, #6894, #6898, #6900, #6903, #6904, #6905, #6913, #6914, #6915, #6991, #7002, #7014, #7024, #7030, #7049, #7077, #7124, #7131) @robwalch, @matvp91
- Improved support for DolbyVision profiles 8 and 10 with supplemental codecs parsing (#7120, #7095) @timitt, @robwalch
- AES-256 and AES-256-CTR encryption methods (#6018) @jvary
- H.265/HEVC in MPEG2-TS (#5847, #6724, #6194, #6268, #6940) @devoldemar
- CMAF KLV Metadata (set
enableEmsgKLVMetadata
totrue
to enable) (#6674) @glynd - Added APIC ID3 parsing via @svta/common-media-library ID3 refactor (#6260) @felipeYoungi
- Support playback of unknown CODECS with browser mime-type support (#6620) @robwalch
- #EXT-X-BITRATE support (#6843)
- CMCD "nor" added (#6091) @littlespex
- Improved stall detection and buffer gap handling (#6941)
- Flush MSE rendering pipeline when crossing video buffer holes with audio (#6972)
- Media Playlist parser validation errors (#7119)
API changes in release version 1.6
- Added
config.detectStallWithCurrentTimeMs
used to specify the maximum amount of time in milliseconds before aBUFFER_STALLED_ERROR
is reported when the media elementscurrentTime
has not advanced while playing (#6941) - Added
config.nudgeOnVideoHole
whether or not to nudge the playhead when crossing over video buffer gaps to flush the rendering pipeline and ensure smooth playback through video buffered ranges (#6972) - Added
config.enableInterstitialPlayback
set to false to disable Interstitial playback without turning off Interstitials parsing and events - Added
config.interstitialsController
set tonull
to disable Interstitials support completely - Added
config.interstitialAssetListLoadPolicy
defines the loading policy of X-ASSET-LIST JSON - Added
config.liveSyncOnStallIncrease
(#6455) @vk342 - Added
config.maxDevicePixelRatio
to limit browser value when capping level to media element dimensions (#6825) @signalwerk - Added
config.videoPreference.videoCodec
video codec selection preference option (#6483) - Added config options specifically for Interstitial asset player instances:
config.primarySessionId
identifies the parent player session that spawned the asset player (read fromhls.sessionId
)config.assetPlayerId
identifies logs from asset playersconfig.timelineOffset
offsets MSE appends for gapless playback
- Support
config.fetchSetup
optional async result (#6714) @zce - Added
hls.bufferedToEnd
read-only indicates when EOS has been appended (media is buffered from currentTime to end of stream) - Added
hls.bufferingEnabled
read-only flag toggled withpauseBuffering()
andresumeBuffering()
- Added
hls.hasEnoughToStart
getter returns whether enough is buffered to seek to start position (#6571) - Added
hls.inFlightFragments
- Added
hls.interstitialsManager
read-onlyInterstitialsManager
ornull
. TheInterstitialsManager
is an interface for accessing program information and methods for seeking across items and skipping Interstitials. - Added
hls.latestLevelDetails
read-onlyLevelDetails
object of the most up-to-date HLS variant Playlist data - Added
hls.loadLevelObj
read-onlyLevel
object of selected level (variant) ornull
- Added
hls.loadingEnabled
read-only flag toggled withhls.startLoad()
andhls.stopLoad()
- Added
hls.pathwayPriority
Content-Steering setting (#6295) @PavelFomin90 - Added
hls.pathways
getter (#6997) @grabofus - Added
hls.sessionId
read-onlyHls
instance UUID - used to assign a value to the _HLS_primary_id query parameter of interstitial requests - Added
hls.startPosition
read-only the resolvedstartPosition
that playback will begin at once media is appended - Support setting
hls.targetLatency
(#6473) @vk342 - Added
hls.transferMedia()
detaches and returns MediaSource and SourceBuffers non-destructively - Added
hls.url
read-only value of the currently playing url (fromhls.loadSource(url)
) (#6411) @ibobo - Added
Events.MEDIA_ENDED
event (#6141) - Added
Events.STALL_RESOLVED
event (#6941) - Added
Events.EVENT_CUE_ENTER
Used internally to determine when the playhead has entered a time-range replaced by an Interstitial event. - Added
levelInfo: Level
toLevelLoadingData
andLevelLoadedData
event data - Added
track: MediaPlaylist
toTrackLoadingData
andTrackLoadedData
event data (audio and subtitle events) - Added
withoutMultiVariant: boolean
toLevelLoadedData
event - Added
LevelDetais.expired
read-only indicates live playlist data is no longer valid for fragment loading - Added
LevelDetais.requestScheduled
to improve live playlist reload scheduling - Added read-only
Fragment.bitrate
andFragment.byteLength
getters - Several
Fragment
properties have been replaced with accessors:get baseurl()
,get/set stats()
,get/set programDateTime()
. Class property accessors are not enumerable. This impacts copying object properties and serialization.Fragment.stats
remain enumerable with (#6999) - Enhancements:
hls.startLoad()
takes a second optional argument to skip seeking on start (otherwise, HLS.js seeks following to the first optionalstartPosition
argument on append)hls.attachMedia()
supports transferring MediaSource and SourceBuffers fromHls
instances withhls.transferMedia()
hls.recoverMediaError()
seeks to the value ofcurrentTime
before the source reset is performed (#6297)
- New Events:
ASSET_LIST_LOADING
when a request is made for an X-ASSET-LIST JSON objectASSET_LIST_LOADED
when a response is received for an X-ASSET-LIST JSON objectINTERSTITIALS_UPDATED
when Interstitials are added, removed, or the schedule is updated following a variant playlist update or updated asset durations from X-ASSET-LIST JSON or asset playlist and media parsingINTERSTITIALS_BUFFERED_TO_BOUNDARY
when the forward buffer reaches the boundary of the following schedule item (Interstitial event or primary segment)INTERSTITIAL_ASSET_PLAYER_CREATED
when an asset player instance is created to stream an Interstitial asset (will always be before attaching media to the asset player)INTERSTITIAL_STARTED
when streaming of an Interstitial event containing one or more assets has begun (may occur before X-ASSET-LIST JSON is loaded or playback has started)INTERSTITIAL_ENDED
when streaming of an Interstitial event containing one or more assets has ended - before resuming primary or starting the next eventINTERSTITIAL_ASSET_STARTED
when streaming of an Interstitial asset has begun (following the beginning of the event or the end of the last asset)INTERSTITIAL_ASSET_ENDED
when streaming of an Interstitial asset has ended (before the next asset or the event ending)INTERSTITIAL_ASSET_ERROR
when an error occurs starting or streaming an Interstitial asset (this can include non-fatal errors such as stalling and errors that will end streaming of the asset, resulting in the schedule advancing to the next asset or fallback to primary)INTERSTITIALS_PRIMARY_RESUMED
when playback of primary content has begun or resumed from an Interstitial eventBUFFERED_TO_END
when the last audio and video segments in the playlist have been appended (EOS signaled on all SourceBuffers)AUDIO_TRACK_UPDATED
similar to LEVEL_UPDATED fired for any update to audio group playlistsSUBTITLE_TRACK_UPDATED
similar to LEVEL_UPDATED fired for any update to subtitle group playlists
- Updated Events
MEDIA_ATTACHING
,MEDIA_ATTACHED
,MEDIA_DETACHING
, andMEDIA_DETACHED
include additional information (depending on whether media is being transferred)
- New Errors
- Type:
NETWORK_ERROR
- details:
ASSET_LIST_LOAD_ERROR
network error loading asset list - details:
ASSET_LIST_LOAD_TIMEOUT
network timeout error loading asset list - details:
ASSET_LIST_PARSING_ERROR
asset list was not valid JSON or missing required data
- details:
- Type:
OTHER_ERROR
- details:
INTERSTITIAL_ASSET_ITEM_ERROR
an issue interrupted or prevented asset playback. This will result in skipping the remainder of the asset or falling back to primary content. The eventerror
will contain more details. This type of error differs from theINTERSTITIAL_ASSET_ERROR
events forwarded from asset player errors. - details:
ATTACH_MEDIA_ERROR
when callingattachMedia
with falseymedia
argument (#6556) @agajassi
- details:
- Type:
Enhancements
- Reduce workers across instances (#6550) @robwalch
- Upgrade TypeScript to 5.8 (#7084, #7099)
- Update all type imports to explicitly use the type keyword. (#6332) @cjpillsbury
- Tidy import statements with linter rules (#6378) @robwalch
- Add strict type checking for Uint8Array/ArrayBuffer (#5849) @robwalch
- Log playback rate adjustments. (#7115) @mstyura
- Separate the calculation of the next level into a protected method (#7040) @Kouji-Koike
- Do not close key session on detach (wait until destroy) (#6966) @JackPu
- Make latency-controllers getters safe to call after destroyed (#7015) @robwalch
- Use WebCrypto by default for AES decryption (#6015) @robwalch
- Lazy init CEA608 parsers (#6127) @robwalch
- Use unique logger configurations across instances (#6131, #6198, #6242) @robwalch
- Use average for level sorting and abandon rules check (#6135, #6146) @robwalch
- Handle
ManagedMediaSource
"endstreaming" events without aborting requests (#6186) @robwalch - ...
Assets 3
v1.6.0-rc.2
e55fecd
Compare
Summary
HLS.js v1.6.0-rc.2 includes bug fixes and improvements over the last release.
Changes Since The Last Release
- Added support for supplemental codec with muxed audio-video segments (#7120) @timitt
- Log playback rate adjustments. (#7115) @mstyura
- Allow primary segment prefetching for interstitial resumption (#7124) @robwalch
- Fix fmp4 track timestamp alignment for non-av tracks (#7126)
- Media Playlist parser validation errors (#7119)
See the previous release candidate release notes for more v1.6 changes:
https://github.com/video-dev/hls.js/releases/tag/v1.6.0-rc.1
Demo Page
https://9951b1e2.hls-js-dev.pages.dev/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.
Assets 3
v1.6.0-rc.1
f70ecdc
Compare
Summary
HLS.js v1.6.0-rc.1 is a feature complete prerelease for preview and testing ahead of the v1.6.0 release.
Changes since the last release
- Supplemental codecs support (#7095) @robwalch
- Fix seek during live start on low-power devices (#7063) @grabofus
- Fix loop loading of empty segment with worker disabled (#7090)
- Fix interstitial playback with media source transfer (#7077)
- Upgrade TypeScript to 5.8 with peer dependencies (#7084)
- TypeScript 5.8 and ESLint cleanup (#7099)
Demo page
https://c0f457c7.hls-js-dev.pages.dev/demo/
New features in release version 1.6
- HLS Interstitials Support (#6591) @robwalch
- Improve support for DolbyVision profiles 8 and 10 (#7095)
- Support playback of unknown CODECS with browser mime-type support (#6620)
- #EXT-X-BITRATE support (#6843)
- AES-256 and AES-256-CTR encryption methods (#6018) @jvary
- H.265/HEVC in MPEG2-TS (#5847) @devoldemar
- CMAF KLV Metadata (set
enableEmsgKLVMetadata
totrue
to enable) (#6674) @glynd - CMCD "nor" added (#6091) @littlespex
- Improved stall detection and buffer gap handling (#6941)
API changes in release version 1.6
- Added
config.detectStallWithCurrentTimeMs
- Added
config.nudgeOnVideoHole
- Added
config.enableInterstitialPlayback
set to false to disable Interstitial playback without turning off Interstitials parsing and events - Added
config.interstitialsController
set tonull
to disable Interstitials support completely - Added
config.interstitialAssetListLoadPolicy
defines the loading policy of X-ASSET-LIST JSON - Added
config.liveSyncOnStallIncrease
(#6455) @vk342 - Added
config.maxDevicePixelRatio
to limit browser value when capping level to media element dimensions (#6825) @signalwerk - Added
config.videoPreference.videoCodec
video codec selection preference option (#6483) - Added config options specifically for Interstitial asset player instances:
config.primarySessionId
identifies the parent player session that spawned the asset player (read fromhls.sessionId
)config.assetPlayerId
identifies logs from asset playersconfig.timelineOffset
offsets MSE appends for gapless playback
- Support
config.fetchSetup
optional async result (#6714) @zce - Added
hls.bufferedToEnd
read-only indicates when EOS has been appended (media is buffered from currentTime to end of stream) - Added
hls.bufferingEnabled
read-only flag toggled withpauseBuffering()
andresumeBuffering()
- Added
hls.hasEnoughToStart
getter returns whether enough is buffered to seek to start position (#6571) - Added
hls.inFlightFragments
- Added
hls.interstitialsManager
read-onlyInterstitialsManager
ornull
. TheInterstitialsManager
is an interface for accessing program information and methods for seeking across items and skipping Interstitials. - Added
hls.latestLevelDetails
read-onlyLevelDetails
object of the most up-to-date HLS variant Playlist data - Added
hls.loadLevelObj
read-onlyLevel
object of selected level (variant) ornull
- Added
hls.loadingEnabled
read-only flag toggled withhls.startLoad()
andhls.stopLoad()
- Added
hls.pathwayPriority
Content-Steering setting (#6295) @PavelFomin90 - Added
hls.pathways
getter (#6997) @grabofus - Added
hls.sessionId
read-onlyHls
instance UUID - used to assign a value to the _HLS_primary_id query parameter of interstitial requests - Added
hls.startPosition
read-only the resolvedstartPosition
that playback will begin at once media is appended - Support setting
hls.targetLatency
(#6473) @vk342 - Added
hls.transferMedia()
detaches and returns MediaSource and SourceBuffers non-destructively - Added
hls.url
read-only value of the currently playing url (fromhls.loadSource(url)
) (#6411) @ibobo - Added
Events.MEDIA_ENDED
event (#6141) - Added
Events.EVENT_CUE_ENTER
(for internal use) - Added
levelInfo: Level
toLevelLoadingData
andLevelLoadedData
event data - Added
track: MediaPlaylist
toTrackLoadingData
andTrackLoadedData
event data (audio and subtitle events) - Added
withoutMultiVariant: boolean
toLevelLoadedData
event - Added
LevelDetais.expired
read-only indicates live playlist data is no longer valid for fragment loading - Added
LevelDetais.requestScheduled
to improve live playlist reload scheduling - Added read-only
Fragment.bitrate
andFragment.byteLength
getters - Several
Fragment
properties have been replaced with accessors:get baseurl()
,get/set stats()
,get/set programDateTime()
. Class property accessors are not enumerable. This impacts copying object properties and serialization. - Enhancements:
hls.startLoad()
takes a second optional argument to skip seeking on start (otherwise, HLS.js seeks following to the first optionalstartPosition
argument on append)hls.attachMedia()
supports transferring MediaSource and SourceBuffers fromHls
instances withhls.transferMedia()
hls.recoverMediaError()
seeks to the value ofcurrentTime
before the source reset is performed (#6297)
- New Events:
ASSET_LIST_LOADING
when a request is made for an X-ASSET-LIST JSON objectASSET_LIST_LOADED
when a response is received for an X-ASSET-LIST JSON objectINTERSTITIALS_UPDATED
when Interstitials are added, removed, or the schedule is updated following a variant playlist update or updated asset durations from X-ASSET-LIST JSON or asset playlist and media parsingINTERSTITIALS_BUFFERED_TO_BOUNDARY
when the forward buffer reaches the boundary of the following schedule item (Interstitial event or primary segment)INTERSTITIAL_ASSET_PLAYER_CREATED
when an asset player instance is created to stream an Interstitial asset (will always be before attaching media to the asset player)INTERSTITIAL_STARTED
when streaming of an Interstitial event containing one or more assets has begun (may occur before X-ASSET-LIST JSON is loaded or playback has started)INTERSTITIAL_ENDED
when streaming of an Interstitial event containing one or more assets has ended - before resuming primary or starting the next eventINTERSTITIAL_ASSET_STARTED
when streaming of an Interstitial asset has begun (following the beginning of the event or the end of the last asset)INTERSTITIAL_ASSET_ENDED
when streaming of an Interstitial asset has ended (before the next asset or the event ending)INTERSTITIAL_ASSET_ERROR
when an error occurs starting or streaming an Interstitial asset (this can include non-fatal errors such as stalling and errors that will end streaming of the asset, resulting in the schedule advancing to the next asset or fallback to primary)INTERSTITIALS_PRIMARY_RESUMED
when playback of primary content has begun or resumed from an Interstitial eventBUFFERED_TO_END
when the last audio and video segments in the playlist have been appended (EOS signaled on all SourceBuffers)AUDIO_TRACK_UPDATED
similar to LEVEL_UPDATED fired for any update to audio group playlistsSUBTITLE_TRACK_UPDATED
similar to LEVEL_UPDATED fired for any update to subtitle group playlists
- Updated Events
MEDIA_ATTACHING
,MEDIA_ATTACHED
,MEDIA_DETACHING
, andMEDIA_DETACHED
include additional information (depending on whether media is being transferred)
- New Errors
- Type:
NETWORK_ERROR
- details:
ASSET_LIST_LOAD_ERROR
network error loading asset list - details:
ASSET_LIST_LOAD_TIMEOUT
network timeout error loading asset list - details:
ASSET_LIST_PARSING_ERROR
asset list was not valid JSON or missing required data
- details:
- type: OTHER_ERROR details:
INTERSTITIAL_ASSET_ITEM_ERROR
an issue interrupted or prevented asset playback. This will result in skipping the remainder of the asset or falling back to primary content. The eventerror
will contain more details. This type of error differs from theINTERSTITIAL_ASSET_ERROR
events forwarded from asset player errors.
- Type:
Design details
The InterstitialsController
encapsulates Interstitial functionality. It passes date range data to its scheduler to produce an array of Interstitial events and an array of event and primary items called the schedule
. The playback state across this schedule is exposed using hls.interstitialsManager
.
InterstitialsController
has:
- an
InterstitialsSchedule
which produces Interstitial events and a schedule of items on level update. TheInterstitialsSchedule
has- an array of
InterstitialEvent
objects. Each event contains properties and getters for finding its place on the playback timeline, as well as an array of interstitial assets
- an array of
- an array of
HLSAssetPlayer
instances call the player queue. EachHLSAssetPlayer
wraps a child instance ofHls
used to preload and stream Interstitial assets.
The InterstitialsController
adds a loader to the corresponding InterstitialEvent
while loading asset lists. Once the asset list request is complete, the loader is removed, and the asset list response is added to the InterstitialEvent
.
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.
If upgrading from version v1.3.x or lower, the introduction of ESM exports may require changes to hls.js import statements and WebWorker setup to achieve comparable performance (#7106 (comment)).
Feedback
Please provide feedback via Issues in GitHub. For more details on how to contribute to HLS.js, see our [CONTRIBUTING guide](https://github.com/video-dev/hls.js/blob/maste...