Created
August 16, 2023 11:46
-
-
Save gordeyev/221f12459f99e8861e1dda84c72f63b9 to your computer and use it in GitHub Desktop.
Revisions
-
gordeyev created this gist
Aug 16, 2023 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,1104 @@ v0.10.1 hotfix FIXES IE11 exception in broken array-copy wrapper (error message: "Function.prototype.call: 'this' is not a Function object) We attempted to use the recommended technique where available to do shallow copy operations on Array-like types (assuming Array.from where available would be better). All recent browsers are implementing the Array.from method, why we noticed this bug too late. The way we were calling Array.prototype.slice on IE11 was ineffective: our compatiblity-wrapper function was crafted in the wrong manner - as we have learned in a painful way. See #1786 Our main take-away here is improving our CI acceptance testing in browser VMs, so we can have confident automated testing on IE11 as well, and notice such issues before we merge them :shipit: Also, we have now actually acknowledged that slice is usually more performant, which might be because of Array.from supporting a more wide range of parameters: https://jsperf.com/array-from-vs-array-prototype-slice v0.11.0 Breaking Changes The dist folder has been removed from master. dist assets are now included as an attachment to the release. This shouldn't affect those installing via npm; developers deploying locally will need to build it themselves. Developers wanting to run the demo locally will need to build the library first. New Features Added support for server-side rendered builds #1841 Enabled Typescript support in the codebase #1762 Automate release via Travis #1810 Added a bunch of new logos. Thanks for your support! Bugfixes Avoid fatal exception when the ABR controller sets up before the level has been loaded #1754 Fixes custom JSON parsing in metadata tags by splitting the regex on the first found colon #1815 Improve stall detection and resolution #1808 Stop and cleanup level capping on MEDIA_DETACHING in order to avoid out-of-bound exceptions #1809 Switch demo from HTTP to HTTPS to avoid mixed content errors #1839 Clean up broken fragment-loader objects when errored or timed out #1823 Fix PTS computation of AAC segments when the timestamp is 0 #1840 Fix a bunch of bugs related to stream synchronization via PROGRAM-DATE-TIME #1854 Only select a default audio track when not previously set by the API #1853 Reassign audio track IDs after filtering to avoid array index mismatches Fix AAC demuxing of alternate audio tracks with different timestamps Fix always-failing performance.now call #1867 Ensure that initial FRAG_CHANGED event is fired if the bitrate test fragment is buffered #1872 v0.12.0 New Features Added a new config option, liveBackBufferLength, which allows developers to set the maximum amount of buffer behind the playhead during a live stream. Any buffer beyond the set max will be evicted; this should help in cases where the browser's natural buffer eviction was not sufficient. See https://github.com/video-dev/hls.js/blob/master/docs/API.md#livebackbufferlength for more info. #1845 Enhancements Hls.js will now load VTT segments in sync with the corresponding media. This means that segments will load beginning at the playhead, and will only download up to the end of the buffer. Previous behaviour was to download and parse every VTT segment on start. #1882 Key load failures will now cause Hls.js to immediately downswitch to a new variant on failure, instead of retrying 3 times before switching. #1836 Bugfixes Ensure that streams are ended after the last fragment has buffered, even if has already been buffered. #2040 Remux according to the initial video PTS so that streams begin at 0. This may fix stalling in streams with very small segments. #2030 Fix missing alternate audio when the video codec is not specified in the manifest #1993 Fixed an exception using Set in browsers which do not natively support it. #1984 Restore response data in the load error events. #1977 Fix stalling in Chrome when an abort error happens after seeking. #1925 Fix playback of streams for which the segment URL looks like an mp4 fragment, but which are not mp4s. #1921 Fix exceptions caused by attempting to load embedded audio tracks found in a manifest. #1907 Fix parsing of segments which contain spaces in its URL. #1899 Reuse textTracks when the track order between manifests is different. #1869 Fix FRAG_CHANGED not firing on the first segment of the first level. #1872 Fix performance.now usage in workers. #1866 v0.12.1 Hotfix Fixed a bug where cue start times were not correctly calculated. #2044 V0.12.2 Happy holidays, Hls.js-ers! Santa left a bit of coal under the WebVTT-tree; luckily, we managed to sweep it away before too many good developers noticed (we hope). Hotfixes Fixed a bug where WebVTT did not show after a discontinuity #2056 Fixed a bug where WebVTT did not show when captions were enabled after a seek #2058. Thanks @mtoczko! v0.12.3 Hotfixes Fixed uncaught exceptions in IE caused by using unpolyfilled ES6 functions #2117 Addressed a few bugs with Live VTT subtitles #2148: Fixed subtitles disappearing after a few seconds Fixed VTT playlists continuing to refresh after being disabled, or while a live stream is paused v0.12.4 Hotfixes Fixed an exception thrown while destroying a stream containing alternate audio #2177. Thanks for the fix @Korilakkuma! v0.13.0 New Features Emit SEI packets with resolution payloadType 5 in FRAG_PARSING_USERDATA events #2126 Expose Hls.js' bandwidth estimate (in bits per second) via hls.bandwidthEstimate getter on the Hls instance #2086 Allow level capping (config.capLevelToPlayerSize) to be dynamically enabled/disabled #1986 Bugfixes Fix React builds breaking with WebWorkers #2174 Fix incorrect VTT cue offsets when X-TIMESTAMP-MAP is not present #2179 Fix Hls not choosing the correct startup segment for fmp4 streams #2196 Fix info and description fields being merged in TXXX ID3 frames #2217 Fix cue positioning in Firefox #2229 Fix Hls throwing exceptions when trying to load in non-MSE environments #2305 Fix Hls not playing after loading a stream with alt audio before attaching #2172 Fix startup stalling caused by alt audio tracks not loading at the correct time #2067 Fix null console reference when using the logger class in WebWorkers (affects Tizen 2.3) #2095 Fix RangeError exceptions ("Source is too large") when remuxing TS #2096 Fix ID3 timestamps causing exceptions in IE/Edge #2120 Fix timescale conversion in the remuxer #2354 Fix Calling detatchMedia() followed by attachMedia() causes audio to not play #2099 Fix Memory leak caused by VTT cues never being cleaned up, which caused long live streams to eventually crash #2309 Fix various issues and regressions on gap-skipping and other "playback/buffer stall" handling (fixes wrongly emitted buffer-stall error on seeks into unbuffered regions) as well as other playhead-tracking related functionnality, done essentially on GapController: #2453 Fix RangeError exception in TS demuxer #2415 Fix unnecessary seek on start resulting in playback stalling and repeated logs of first segment loading #2438 Fix #2400 - Cues doesn't show up on browsers which addCue doesn't throw error with invalid structure (WebOS) Misc. Improvements Huge strides have been made towards converting the codebase to TypeScript: #2144 #2130 #2129 #2119 #2107 #2106 #2097 #2076 #2075 #2073 Remove IE8 code #2128 Fix a bunch of ESLint warnings https://github.com/video-dev/hls.js/pulls/2116 v0.13.1 Improvements Added code of conduct #2482 Removed TypeScript types build step #2475 Bugfixes Fixed isSupported check in browsers missing SourceBuffer global #2490 Resolves issues #2430 and duplicate #2476 v0.13.2 Enhancements Start loading the audio playlist once the parent manifest is loaded, rather then waiting for the first level to load (#2340) TS demuxer will use PTS/DTS of last PES when current PES does not contain PTS/DTS (#2109) Bugfixes Prevent from seeking backward when liveMaxLatencyDuration or liveMaxLatencyDurationCount * targetduration is less than liveSyncDuration or liveSyncDurationCount * targetduration (#2506 fixes #2494) Fixed PIPELINE_ERROR_DECODE error in Chrome by improving PES ACC overflow handling (#2530 fixes #2528) Misc Updated dependencies (#2538) v0.14.0 Version 0.14 adds API features found in the feature/v1.0.0 branch. This is intended to make transitioning to v1.0.0 easier and also provide API parity for A/B testing the current release and next major update of hls.js. In addition to these features and bug fixes, we've made changes to how our CI versions preview builds which are published to npm to account for pre-releases while maintaining semver precedence. To do this, we have replaced the canary channel with an alpha channel. Previously, if we cut a beta or release candidate like 0.14.0-rc.2 the next commit would generate a canary, using the last release patch+1 - so 0.13.3-canary.5704. That worked following 0.13.2, but after 0.14.0-beta.1, it ignores that we are already heading on to the next minor release. To fix this, we now generate an alpha, using the last tag. So in the case of a prerelease - 0.14.0-rc.2.0.alpha.5718. And for releases we still increment the patch - so following this release you will see CI builds versions like 0.14.1-0.alpha.5720. Enhancements Add CEA-608 captions 4 channel support Adds config options for additional channels captionsTextTrack3Label, captionsTextTrack3LanguageCode, captionsTextTrack4Label, captionsTextTrack4LanguageCode Add renderTextTracksNatively config option (defaults to true) which allows for disabling the addition of captions/subtitle TextTracks to the video element for 608/VTT tracks When set to false rather than a new TextTrack being added for captions and subtitles, NON_NATIVE_TEXT_TRACKS_FOUND and CUES_PARSED events are emitted so that the application using hls.js can handle rendering of the track and its cue points. Add support for #EXT-X-SESSION-DATA tag in master playlist Add sessionData property to Hls.Events.MANIFEST_LOADED event Add removeLevel() method to API Can be used to remove a loaded level from the list of levels, or a level url in from a list of redundant level urls. Remove unnecessary files form the NPM distribution Only dist and src files are included in releases moving forward XHR loader and fetch loaders always read from globals window.XMLHttpRequest and window.fetch instead of once on script embed Add support for DRM system options audioRobustness and videoRobustness in hls.config. drmSystemOptions for requestMediaKeySystemAccess audioCapabilities and videoCapabilities configuration Media key sessions are closed and media keys cleared when media is detached Bugfixes Fix EME controller async error Fix an exception in a stream with an end fragment that contained only ID3 data and no valid elementary video or audio streams Fix false positive ADTS probes Improve handling of large start gaps Fix exception in abr-controller with missing levels Fix player size evaluation in cap-level-controller when video element includes width and height attributes that do not match actual size Fix Cannot read property 'realBitrate' of undefined exception Fix playback stops on short segment (DAI streams) Fix playback of audio-only streams (EXT-X-STREAM-INF) with with alternate audio tracks (EXT-X-MEDIA) Documentation Added entries for fpsDroppedMonitoringPeriod fpsDroppedMonitoringThreshold bufferController capLevelController fpsController emeEnabled widevineLicenseUrl drmSystemOptions requestMediaKeySystemAccessFunc Mark lowBufferWatchdogPeriod as deprecated Fix broken logo image urls and mixed content (insecure) urls Make the readme example work out of the box again Logging enhancements Include buffer size in playback stall warnings Reduce log output for unknown elementary stream types Fix audio gap output when injecting audio frames Distinguish functional test logs from player logs (CI) Misc Add Timeline chart tab to the demo page netlify CI improvements npm package updates TypeScript fixes Optional chaining Test improvements Functional tests run in a single browser session (CI) IE compatibility fixes "smooth switch" test improvements Add audio-only with alt audio track test streams v0.14.1 Bugfixes and Improvements Fix frame dropping after discontinuities #2873 For a list of MP4 remuxer improvements related to this patch see #2876 v0.14.2 Bugfixes and Improvements Fix IE11 regression in mp4 remuxer #2891 v0.14.3 Bugfixes and Improvements Fix gaps introduced in video buffer by remuxer work-around #2894 This release fixes a regression in v0.13.0+ that introduced buffer gaps at segment boundaries in streams with variable frame rates, or when adapting to another rendition where the target segment has a high composition time (cts) on the first video frame. See #2894 for more details. v0.14.4 Bugfixes and Improvements Fix playback disrupted when an audio stream uses multiple container formats #2900 resolves #2887 Fix Safari video playback, and fragment timing #2902 resolves #1801, #2122 This release comes with some long overdue improvements to how the start time of segment's media is estimated, which is key to the timing of each audio and video sample. When MSE buffering changed in Chrome 63 to report PTS times, this project switched from appending on DTS to PTS. The problem was, in one place in the mp4 remuxer, the next estimated PTS was being used to set the next estimated AVC DTS. This caused all sorts of errors, as workarounds, meant to fix bad streams, kicked in when they should not, misaligning video and audio and causing frames to be dropped or overwritten. That is now fixed, along with the estimated startPTS of the next segment. Fragment timing, the basis of the timeline hls.js uses to buffer media, is now much more stable. I hope this improves the stability of playback and reduces stalls in your apps. ✌️ v0.14.5 Bugfixes and Improvements Seek once into buffer start when starting a live stream #2907 resolves #2498, #2507, #1989 This release fixes a long standing bug with IE11/Edge where video was not rendering when seeking to the start of a live stream just short of the buffer start. The bug is in IE11/Edge (it should render video once playback enters the buffered range containing video - it just doesn't when we perform two seeks before "seeked" moves into the range where playback starts), but doing a clean seek right into the start of the buffer avoids it. This was common in streams that have segments where audio samples start before video samples - or the buffered start is later than the manifest start time. v0.14.6 Bugfixes and Improvements Fix stalling on discontinuity with audio track #2919 resolves #2913, #2545 Fix initial audio video desync for fMP4 #2832 Prevent immediate level switch from performing unnecessary pause and seeks #2918 Misc Functional test improvements #2921 This release is focused on stability in streams using alternate audio tracks. Live streams and streams with discontinuities frequently presented problems depending on the order in which playlists and media were received initially. With this release, regardless of that order, alt audio media will be synced to the variant playlist media, by deferring final parsing and appending of audio segments (not the fetching of) until they can be aligned with variant media PTS. v0.14.7 Bugfixes and Improvements Fix regression in streams with PTS wrapping prior to DTS #2929 Fix regression where stream duration became shorter prior to discontinuities in segments with misaligned audio and video #2932 Prevent negative DTS time ranges in fragments #2908 v0.14.8 Bugfixes and Improvements Fix edge-case in main audio-only with track descriptions #2943 resolves #2837 Fix PTS/DTS calculation on rollover #2930 resolves #1796 Require min cue duration of 0.25 on ID3 cues #2951 ensures that TextTrack "change" events fire for all appended VTTCues Fix audio remuxer out of sequence sample drop regression #2960 resolves #2959 Enhancements Silence redundant fragment selection logs Other Improvements Improve stability of function tests Minimal logging on functional tests Improve demo video size menu Show multiple demo test tabs using modifier key Big-big thanks to @itsjamie for the rollover timestamp handling and CI logging improvements, and all the review and feedback! 🥳 And many thanks to @jnatalzia for the id3 cue duration fix. ⌚ 👀 v0.14.9 Bugfixes and Improvements Only apply minimum ID3 cue duration when cue does not have one. #2964 resolves #2963 This patch fixes a regression introduced in v0.14.8 where we applied a minimum duration 0.25s to all metadata cues. All cues must have a positive duration, but we shouldn't modify valid ones, since those cue ranges may be considered critical to application logic. v0.14.10 Bugfixes Fix mp4-remuxer CHUNK_DEMUXER_ERROR_APPEND_FAILED in Chrome 74 and lower, as well as Chromium based browsers like Opera 58. Reduces composition time of initial video samples in older browsers so that moof base decode time starts at 0 or higher. #2995 This patch fixes a regression introduced around v0.14.4 where negative base decode times used to remove start gaps in the video track cause append errors: The video playback was aborted due to a corruption problem or because the video used features your browser did not support - CHUNK_DEMUXER_ERROR_APPEND_FAILED: video frame with PTS 40000us has negative DTS -40000us after applying timestampOffset, handling any discontinuity, and filtering against append window v0.14.11 Bugfixes Fix handling of NULL delimiter when parsing ID3 WXXX tags #3006 v0.14.12 Bugfixes Allow mp3 data that does not contain ID3. Fixes #3037 v0.14.13 Bugfixes Fix remuxing of AVC with bad PTS #3049 Misc Added saucelab-connect test fixes and updates to patch/v0.14.x branch v0.14.14 Bugfixes Fix for subtitle loading after hls.stopload() was used and skip segments seeked over #3063 Handle PTS rollover on initial sample of video or audio #3082 v0.14.15 Bugfixes Improve handling of PTS rollover initPTS calculation #3088 v0.14.16 Bugfixes Live to VOD playlist alignment #3124 Sample AES decryption with 48 AVC #3131 fixes #3102 v0.14.17 Bugfixes Parse all ID3 tags (not just standard PRIV, TXXX and WXXX tags) #3284 Misc Update workflow files in patch branch for releases v1.0.0-rc.6 Pre-release This is a preview release of version 1.0. It is feature complete and intended for testing purposes. Changes Since Last Release v1.0.0-rc.5...v1.0.0-rc.6 Add support for delta playlist updates without blocking reload #3670 resolves #3644 Improve fmp4 probing and codecs support #3672 resolves #3669 Improve handling of SourceBuffer creation errors for unsupported codecs not signaled in manifest Safely read playlist response "age" header (thank you @radiantmediaplayer) #3685 and #3686 resolves #3680 Calculate drift (live edge advance rate) and display live program date time in demo stats New Features Apple Low-Latency HLS support Improved support for redundant variants with tracks Improved audio and subtitle track selection with multiple media and stream variants containing different GROUP-ID values Improved support for fmp4 streams with alternate codecs Progressive streaming option (experimental) API Changes New config options: backBufferLength config applies to Live and VOD content. liveBackBufferLength is still supported but marked as deprecated. lowLatencyMode - set to false to disable Low-latency part loading and target latency playback rate adjustment progressive- (experimental) set to true to stream and append loaded audio and video data before each segment load completion. It is not recommended for production or small segments with only a single GoP or less. Event order and content have changed in some places. See Breaking Changes below, and please report any issues with breaking changes that impact your integrations hls.audioTracks and hls.subtitleTracks as well as AUDIO_TRACKS_UPDATED and SUBTITLE_TRACKS_UPDATED events only list tracks in the active level's audio/sub GROUP-ID after LEVEL_LOADING - #3293 Added groupId to audio and subtitle track loading and loaded events Added additional error details to help identify the source of certain network error events: SUBTITLE_LOAD_ERROR SUBTITLE_TRACK_LOAD_TIMEOUT UNKNOWN The FRAG_DECRYPT_ERROR event is no longer emitted and is instead surfaced as a FRAG_PARSING_ERROR Added fatal BUFFER_INCOMPATIBLE_CODECS_ERROR media error when all attempts to add SourceBuffers fail. BUFFER_CREATED no longer fires right after BUFFER_ADD_CODEC_ERROR. Breaking Changes See the new MIGRATING guide for API changes between v1.0 and v0.14. Known Issues TTFB is factored into overall bandwidth and can impact quality selection when streaming smaller segments or LL-HLS parts #3563 v1.0.0 HLS.js v1.0.0 has arrived! Thank you to everyone who contributed to this release and hls.js in general. New Features Apple Low-Latency HLS support Improved support for redundant variants with tracks Improved support for GROUP-ID audio and subtitle track selection sets Improved support for fmp4 streams (including those with alternate codecs) Chunk-Transfer "progressive" streaming option (experimental) All src modules have been converted to TypeScript API and Breaking Changes See the new MIGRATING guide for API changes between v0.14.x and v1.0.0. Changes Since The Last Release Candidate v1.0.0-rc.6...v1.0.0 Fixed PIPELINE_ERROR_DECODE error in streams with AAC segments - #3703 Improved end-of-stream handling - #3704 IE11, README v1, and Functional Test Fixes #3705 Added drift to public API IE11 Functional Test Fixes Updated README for v1 Fixed smooth switch stuck in PARSING state edge-case Code cleanup - #3687 What's Next? The Release Planning and Backlog project highlights issues that are a top priority. Expect to see these in an upcoming minor or patch. The LL-HLS project is still open. A lot of great feedback came in at the eleventh hour. The availability of sample streams and community contributions will be a significant factor in moving the project forward. The only features not implemented in v1.0.0 are "Hinted Part and Map Preloading" (EXT-X-PRELOAD-HINT). Bugs and enhancements will continue to be added to this project as necessary. Some have asked when and if v0.15 will be released. While there is a version milestone set and a patch/v0.15.x branch in GitHub for that release, there has been no date set. Work on v0.15 has been paused indefinitely. Please test upgrading to this release. If something is preventing you from upgrading but still a problem in v0.14.x, file an issue explaining why upgrading does not work for you. v1.0.1 Summary HLS.js v1.0.1 includes several bug fixes and improvements over the last release. Demo Page https://hls-js-214a1a90-214b-4c4d-a32a-d2d2f9d2824c.netlify.app/demo/ Changes Since The Last Release v1.0.0...v1.0.1 Fixed level and track switching after the last segment has been appended - #3774 Fixed playback failure when the order of audio tracks within each group is inconsistent in the manifest - #3731 Resolves #3729 Changed how the “age” header is accessed - #3763 Resolves #3680 Fixed recursion when calling loadSource() in MEDIA_ATTACHED event - #3754 Resolves #3732 Fixed use of config.startPosition to override live sync position in live streams - #3740 Resolves #3736 Fixed audio group switching with fmp4 segmented audio tracks - #3748 Resolves #3741 Improved detection of fmp4 segments in m3u8 parser for streams with SIDX and no EXT-X-MAP tags - #3758 Resolves #3756 Made startLoad() and stopLoad() no-ops after destroy() - #3710 Made a minor change to the Loader interface (see below) - #3711 Fixed progressive fetch loader leaves video artifacts or glitches - #3755 Resolves #3747 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. This release includes a change to the Loader interface. Loader.getResponseHeader() has been replaced with Loader.getCacheAge(). If you have developed a custom loader for v1.0.0 you may need to make changes for your build or type checks. There should be no runtime impact. We will try to avoid changes like this in patch versions in the future. v1.0.2 Summary HLS.js v1.0.2 includes several bug fixes and improvements over the last release. Demo Page https://hls-js-9de24021-304f-45c8-9b76-3d123c91c697.netlify.app/demo/ Changes Since The Last Release v1.0.1...v1.0.2 Fixed DEFAULT=YES on caption tracks not being respected - #3781 resolves #3780 Fixed audio-buffer stall with frequent audio group switching - #3800 resolves #3770 Fixed AES-128 in streams with alt-audio tracks - #3782 resolves #3772 Fixed setInterval/Timer regression in fps-controller - #3799 resolves #3790 Fixed playlist URL search params being sorted and re-encoded - #3787 resolves #3786 Fixed LL-HLS playlist requests with _HLS_part param starting at 0 for next sn - #3784 resolves #3571/#3771 Fixed blocking playlist requests with lowLatencyMode set to false - #3792 resolves #3566 Fixed fetch-loader progressive bandwidth sampling - #3801 resolves #3789 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. v1.0.3 Summary HLS.js v1.0.3 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.2...v1.0.3 Fixed immediate and prioritized quality switching in FMP4 streams which muxes audio/video. Fix subtitle loading after seeking in tracks with #EXT-X-PROGRAM-DATE-TIME. Fixed frequent reloading of segments in certain circumstances with missing video keyframes. Improved performance in streams with segments that do not start with a video keyframe by performing preemptive backtracking. Improved performance of the demo Timeline chart when interacting with the chart using the mouse. Updated README to highlight "Features" and "Getting started with development". v1.0.4 Summary HLS.js v1.0.4 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.3...v1.0.4 Fixed audio drift in live DAI/SSAI streams with overlapping AAC samples - #3901 Fixed redundant levels in streams with multiple CODECS and matching BANDWIDTH attributes - #3889 Resolves #3888 Added support for multiple EXT-X-MAP tags - #3859 Resolves #1990 Thanks to @elv-peter and @erkreutzer for contributing the multiple EXT-X-MAP fixes, @Sylvain228 for chiming in and providing a test vector, and to @ghouet for reporting the issue long ago. v1.0.5 Summary HLS.js v1.0.5 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.4...v1.0.5 Remove subtitle cues and data with the back-buffer - #3969 Replace live playlist sliding warnings with improved logging - #3967 Resolves #3933 Fixed last segment in live removed "context changed" error - #3965 Relates to #3913 Fixed application of EXT-X-START: TIME-OFFSET - #3962 Relates to #3913 Fixed forward buffer length estimation and error handling - #3961 Resolves #3914 Fixed incorrect audio track segments loaded before video segment with > 0 startPosition - #3951 Fixes #3950 Handle AAC overflow with error message - #3926 Resolves #3920 v1.0.6 Summary HLS.js v1.0.6 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.5...v1.0.6 Fixed regression that impacted duration with mid-stream insertion of missing AAC audio frames - #3997 Resolves #3976 Improved live subtitle and audio playlist alignment and fixed a regression where subtitle tracks were enabled when the backbuffer is cleared - #3993 Resolves #3987 Align live WebVTT subtitle playlists with main variant using playlist start when program-date-time is unavailable Fix a regression in v1.0.5 where a subtitle track is enabled after back-buffer removal sets a track's mode to "hidden" Update audio-stream alignment with main to be simpler. Both subtitle and audio live playlists will wait for main before being aligned and loading fragments Subtitle playlists will be realigned with main if they get into a state where a loading fragment candidate cannot be found v1.0.7 Summary HLS.js v1.0.7 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.6...v1.0.7 Fix subtitle segment loading with current time less than target-duration (#4023) Add Release Drafter to project workflows (#4024) Demo Page https://hls-js-9a58b3b6-df2d-4582-9c4d-6227c559081a.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. v1.0.9 Summary HLS.js v1.0.9 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.7...v1.0.9 Add missing fetchSetup in config.ts (#4217) @brvier use issue forms (#4093) @tjenkinson Only draft release on tag (#4056) @tjenkinson Update Release Drafter template for project workflows (#4025) @robwalch v1.0.10 Summary HLS.js v1.0.10 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.9...v1.0.10 Fix type for 'debug' field in config. (#4279) @jwalton v1.0.11 Summary HLS.js v1.0.11 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.10...v1.0.11 Update demo URL with pushState() (#4327) @Frenzie add space before version in demo page title (#4328) @tjenkinson Bugfix/live start bugs (#4303) @cjpillsbury v1.0.12 Summary HLS.js v1.0.12 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.0.11...v1.0.12 make it clear that the mux test stream is ll-hls fmp4 in the descript… (#4397) @cjpillsbury hold dependency updates back for 7 days (#4394) @tjenkinson add ll-hls stream from mux (#4392) @tjenkinson disable apple ll-hls streams that are unavailable (#4350) @tjenkinson v1.1.0 Summary HLS.js v1.1.0 adds a base level of CMCD support (disabled by default). See this issue for more information. Changes Since The Last Release v1.0.12...v1.1.0 Integrate CMCD data into outgoing requests. (#4346) @littlespex docs: Fix a few typos (#4415) @timgates42 v1.1.1 Summary HLS.js v1.1.1 fixes an error that happens when enabling CMCD with useHeaders: true. Changes Since The Last Release v1.1.0...v1.1.1 set headers after XMLHttpRequest OPEN (#4424) @tjenkinson v1.1.2 Summary HLS.js v1.1.2 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.1.1...v1.1.2 Fix design.md comments problem (#4461) @albertdaurell Fix subtitle loading after switching subtitles off and on (#4457) @robwalch Bugfix: CC of low latency streams not displayed correctly (#4298) @hongfeih-es Fix trackid for audio and id3 tracks as per iso/iec 14496-12 spec (#4156) @SeJIya Fix repeated requests for initialization segments (#4452) @erkreutzer Bugfix: hardware accelerated decoding apple silicon (#4412) @lpommers v1.1.3 Summary HLS.js v1.1.3 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.1.2...v1.1.3 Fix off-by-one error in SAMPLE-AES decryption (#4358) @loganek Bugfix: Initial segment change without discontinuity (#4238) @hongfeih-es clear cue start time on reset (#4479) @SivanA-Kaltura Report only 1 FRAG_PARSING_ERROR per parsed TS file (#4481) @albertdaurell issue/4483-CMCD-tb (#4484) @littlespex bugfix: Ignore program-date-time in subtitle track switch (#4399) @NickCis Bugfix: Added --static . in order to fix demo page (#4477) @NickCis fix segment duration for VFR (#4337) @nklhtv v1.1.4 Summary HLS.js v1.1.4 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.1.3...v1.1.4 Bugfix: Encrypted VTT subtitles not rendered (#4554) @mtoczko Fixes #4182 #4293 v1.1.5 Summary HLS.js v1.1.5 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.1.4...v1.1.5 Fixes a bug with ll-hls where ended events would not fire under certain conditions. v1.2.0 Summary HLS.js v1.2.0 adds enhanced interoperability and accessibility via improved support for various timed metadata, captions, and subtitle formats, along with bug fixes and improvements. Changes Since The Last Release v1.1.5...v1.2.0 Throttle audio stream controller based on main buffer state (#4809) @robwalch Make gap controller wait for active fragments while seeking (#4806) @robwalch Update functional test targets (#4812) @robwalch Bugfix: Use audio PTS over playlist time when aligned with video (#4808) @robwalch Simplify backtracking logic to handle segments without keyframes (#4807) @robwalch Remove Internet Explorer 11 support (#4802) @robwalch v1.2.0-beta.1...v1.2.0-beta.2 Paused-but-seeking video buffer hole gap jump support (#4667) @karendolan Fix loop loading of segments caused by backtracking logic (#4801) @robwalch Fix stalls in streams with segments that have no media (#4800) @robwalch Bugfix: Handle single sample MPEG2-TS video segments (#4794) @robwalch Bugfix: Slow start on stream with CAN-BLOCK-RELOAD=YES (#4793) @robwalch Bugfix: Include NAL filler data in AVC samples (#4789) @robwalch Guard against exceptions caused by destroying player in buffer stall error callbacks (#4786) @robwalch Bugfix: hls.subtitleDisplay doesn't toggle visibility until track selection (#4785) @robwalch Fix typos in design doc (#4790) @saikatmitra91 v1.1.5...v1.2.0-beta.1 Add Support for EXT-X-DATERANGE enhanced parsing and metadata TextTrack Cues (#4720) @robwalch Add support for emsg ID3 metadata in fmp4 segments (#4458) @robwalch Config options to disable metadata TextTrack Cue processing (#4782) @robwalch Add support for CMAF SEI Captions (#4459) @robwalch (Thanks to @gkolb for #2623 and @ioppermann for #4242) Add ignoreDevicePixelRatio configuration option (#3765) @i8beef Add alternate HEVC box to fallback codec string. (#4734) @itsjamie Do not allow cues with negative startTimes to be added to the text track (#4757) @littlespex Update ID3 cues to span until playlist end, or next cue with same tag type (value.key) on cue append (#4719) @robwalch Include Panasonic Smart TVs and other old browsers in positive DTS gate (#4780) @jeremies Allow exact bitrate matches for minAutoLevel getter (#4629) @littlespex Fix nudge retries happening one time fewer than nudgeRetry config (#4485) @tjenkinson Bugfix: Store track info when buffer codec switched (#4308) @albertdaurell Fix handling encrypted AAC frames when there's no encrypted data in a frame (#4514) @loganek Fix AAC overflow when it occurs at ADTS header (#4781) @robwalch Fix sidx parsing (#4334) @nklhtv Fix: level playlist parse error of ProgramDateTime (#4498) @hongfeih-es Bugfix: Incorrect manifest parsing around init segments (#4237) @hongfeih-es Bugfix: Low-Latency HLS endofstream (#4516) @cjpillsbury Bugfix: IAvoid _appendCues exception (#4552) @albertdaurell Bugfix: freeze after buffer full error occur (#4686) @hongfeih-es Bugfix: Network hangs on streaming level switch using fetch loader (#4729) @robwalch Fix exception in fetch-loader error handler (#3929) @softworkz Bugfix: Failed to execute 'update' on 'MediaKeySession (#4577) @hongfeih-es Bugfix: Segmented VTT captions cease downloading on live time shifted streams (#4688) @littlespex Retry aligning audio playlist with main playlist if levelloaded came too early (#4600) @Frenzie Fix: don't re-write baseMediaDecodeTime in tfdt v0 to a negative value (#4670) @jwbrandon Prevent base stream from logging after stop (#4564) @wehriam Bugfix: forwardBufferLength calculation (#4608) @hongfeih-es Bugfix/webvtt-parse: cue offset (subtitle stream without X-TIMESTAMP-MAP) (#4557) @mtoczko Bugfix: IMSC1 parsing error (#4218) @mtoczko Refactor: replace deprecated String.prototype.substr() (#4605) @CommanderRoot Prepare for supporting more audio codecs (#3930) @softworkz Resolve linting issue causing build to fail. (#4604) @itsjamie Fix esllnt not running on precommit (#4593) @tjenkinson Update jsdelivr urls in readme to point at canary and v1 (#4715) @tjenkinson Update documentation on testBandwidth. (#4641) @itsjamie Fix: typos (#4603) @FredZeng chore: replace png logo with svg (#4601) @jungdaniel Add Brid.tv as a player solution that utilizes hls.js in README.md. (#4597) @Sovica v1.2.1 Summary HLS.js v1.2.1 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.0...v1.2.1 Determine text track kind based on CHARACTERISTICS (#4850) @lpommers Add WebVTT EXT-X-MAP support (#4839) @robwalch Forward worker logs to main thread logs (#4820) @lpommers Fix audio demuxer contiguity with segments not carrying ID3 timestamps (#4847) @robwalch Fix sidx duration (#4849) @nklhtv Fix attach/detach and recoverMediaError resume with alt audio (#4816) @robwalch Cleanup stream controller logger statements (#4838) @robwalch Docs: Update Loader Composition code example with code that does not produce runtime errors (#4845) @littlespex CI: switch to W3C WebDriver protocol (#4834) @tjenkinson CI: Fix safari on sauce labs: lock selenium-webdriver to 4.1.0 for now (#4827) @tjenkinson CI: Update workflows to use Node.js v16 (#4821) @robwalch v1.2.2 Summary HLS.js v1.2.2 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.1...v1.2.2 Fix handling of negative composition timestamps (#4885) @robwalch Fix segment error handling with live streams (#4858) @robwalch Resume streaming after bitrate test with low max buffer (#4866) @robwalch Bugfix: segment loading order with gaps (#4864) @robwalch Fix seek to live start regression in dev (#4887) @robwalch Fix subtitle buffered check (#4863) @robwalch bail if new tag does not directly follow previous version (#4855) @tjenkinson Update transmux state before decryption which can return early (#4857) @robwalch v1.2.3 Summary HLS.js v1.2.3 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.2...v1.2.3 Bugfix: Caption missing after seeking back to start when stream is played from discontinuity break (#4889) @littlespex Bugfix: Load last VTT fragment in infinite loop (WebVTT with AES-128) (#4901) @mtoczko Bugfix: Initial timestamps must be unsigned for tfdt v1 box for Safari iPad OS 16/Ventura (#4900) @robwalch CI: Fix npm publishes not happening (#4892) @tjenkinson v1.2.4 Summary HLS.js v1.2.4 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.3...v1.2.4 Patch for abandonRulesCheck sudden quality drops (#4917) @robwalch Disable 608 captions on levels with CLOSED-CAPTIONS=NONE (#4916) @robwalch Fixes for Dolby Vision level codecs and filtering of unknown codecs (#4907) @robwalch Fix broken loader link in table of contents (#4924) @littlespex Fix the sampling and channel spellings. (#4896) @kuroishi v1.2.5 Summary HLS.js v1.2.5 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.4...v1.2.5 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 Added deprecated event descriptions to API.md and MIGRATING.md (#5009) @tailgo v1.2.6 Summary HLS.js v1.2.6 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.5...v1.2.6 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. v1.2.7 Summary HLS.js v1.2.7 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.6...v1.2.7 Bugfix: Fix ID3 in AAC start time regression introduced in v1.2.1 (#5014) @jprjr 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. v1.2.8 Summary HLS.js v1.2.8 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.7...v1.2.8 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) v1.2.9 Summary HLS.js v1.2.9 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.2.8...v1.2.9 Fix audio and subtitle controller loading before player seeks to startPosition (#5098) @robwalch 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 v1.2.9...v1.3.0 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 Log additional information for EOS tests (#5130) @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 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. v1.3.1 Summary HLS.js v1.3.1 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.3.0...v1.3.1 Update CONTRIBUTING.md (#5164) @vt-idiot Prioritize MP4 demux probe over MPEG-TS (#5157) @robwalch v1.3.2 Summary HLS.js v1.3.2 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.3.1...v1.3.2 Fix bitrate test with variants under ~500kbps (#5200) @robwalch v1.3.3 Summary HLS.js v1.3.3 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.3.2...v1.3.3 Support AES-128 Encrypted Low-Latency HLS Parts (#5214) @robwalch MPEG-TS probe improvements (#5186) @robwalch Log error if MediaSource 'sourceopen' is interrupted by media.src being changed (#5206) @robwalch v1.3.4 Summary HLS.js v1.3.4 includes bug fixes and improvements over the last release. Changes Since The Last Release Fix AES-128 key sharing across playlists (#5255) @yajin2021 Fix MPEG-TS probing when PAT and PMT are not present in the first three TS packets (#5252) @robwalch Full Changelog: v1.3.3...v1.3.4 v1.3.5 Summary HLS.js v1.3.5 includes bug fixes and improvements over the last release. Changes Since The Last Release Do not filter out TextTracks with kind of "captions" from API subtitle track selection (#5297) @dstreet26 Fixes #5292 (Tracks with CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog" or "public.accessibility.describes-music-and-sound" not displayed when selected via hls.subtitleTrack = trackIndex) Full Changelog: v1.3.4...v1.3.5 v1.4.0 Summary HLS.js v1.4.0 includes support for HLS Content Steering, EXT-X-DEFINE Variable Substitution, and preliminary support for GAP tags. An updated build process and packager provides ES module and worker script output with smaller script payloads. It also includes ABR improvements for short segments and Low-Latency HLS Parts, async xhrSetup support, new load policy error handling config options, and other bug fixes and enhancements. Demo Page https://eea405db.hls-js-dev.pages.dev/ Changes Since The Last Release New Features Support for HLS Content Steering (#5191) @robwalch GAP Tag/Attribute Support with FRAG_GAP Error (#5257) @robwalch Implement EXT-X-DEFINE Variable Substitution (#5161) @robwalch Support QUERYPARAM Variable Substitution (#5265) @robwalch Promisify xhrSetup (#5290) @fegauthier Error Handling controller and LoadPolicies (#5241) @robwalch Support AES-128 Encrypted Low-Latency HLS Parts (#5214) @robwalch Migrate to Rollup with new ESM target and UMD Worker injection (#5299) @robwalch and @tjenkinson Enhancements and Bug Fixes Add playlist RTT and time-to-load given buffer ahead (#5329) @iamboorrito Live reload level switch and error handling improvements (#5317) @robwalch Support partial RENDITION-REPORT URI matches fallback (#5176) @robwalch Fix current quality reporting when seeking back from edge in Low-Latency streams (#5102) @robwalch Treat TARGETDURATION as a decimal-integer assigned a minimum value of 1 (#5159) @robwalch Log error and detach if MediaSource 'sourceopen' is interrupted (#5206) @robwalch Fix for SourceBuffer full error handling (#5332) @robwalch Fix M2TS probing when PAT packet is not found in first three packets (#5252) @robwalch Fix fallback to inline worker when exception is thrown in worker (worker.onerror) (#5270) @robwalch Fix initPTS change between variants (timescale or basetime change) (#5235) @robwalch Handle invalid signed "tfdt" decode time values (#5333) @robwalch Add cue id for date-range cues (#5169) @yajin2021 Fix subtitle track selection when TextTrack kind is captions (#5297) @dstreet26 Cleanup config on destroy since callbacks can have references to the player instance or other objects in their scope (#5279) @robwalch Add ES5 syntax check for UMD builds (#5301) @thornbill Fix demo bandwidth calculation / show estimated bitrate as line in bitrate graph (#4904) @silltho Fix type name error (#5295) @JackPu Only allow large gaps to be skipped if start gap or all fragments in range are partial (#5366) @robwalch Content-Steering fix: Do not clear and reload bit-identical subtitle content (#5365) @robwalch Relax TTFB timeout on manifest request (#5364) @robwalch Light build optimizations and fixes (#5160) @robwalch Improve bandwidth estimation and adaptive switching (#4825) @robwalch Cleanup Attribute RegEx (#5208) @robwalch Fix switching back to main audio from additional audio (#5170) @yajin2021 Do not use optional chain operator for functional tests (#5246) @tjenkinson Play AES-128 stream failed sometimes (#5255) @yajin2021 Clear subtitle-stream-controller buffered list on detach (#5355) @robwalch Remove fragments from FragmentTracker after transmux complete if fragment context changed (#5350) @tpaszun Remove fragments from FragmentTracker on BUFFER_FULL (#5354) @robwalch Use optional chaining operator in more places (#5243) @tjenkinson TypeScript enum optimizations (#5271) @robwalch CI and Documentation Switch from netlify to CloudFlare Pages (#5305) @tjenkinson Set the git user email when updating deployments file (#5247) @tjenkinson Fix Netlify redirects (#5177) @tjenkinson Add a .node-version file and use in actions (#5178) @tjenkinson Switch to node 18, unpin netlify-cli, and workaround npm ci then being broken (#5180) @tjenkinson Switch back to official saucelabs action (#5179) @tjenkinson Add a link to open in stackblitz to the readme (#5307) @tjenkinson Documentation - Add interface for AbrController (#4842) @lpommers Replace ESDocs generated api-docs with api-documenter markdown (#5163) @robwalch API and Breaking Changes New API Features and Deprecations since v1.3 Note all deprecations are soft deprecations, meaning that none of the deprecated options or attributes were removed from the runtime player. They will remain available for backwards compatibility until v2.0. Added config.workerPath to support loading of a hosted hls.worker.js script over worker injection xhrSetup can optionally return a Promise for async setup of XMLHttpRequest instances ERROR Event enhancements: All ERROR events include an error property of type Error which references either a caught exception or an Error object instantiated at the point of failure with a friendly error message Added errorAction property to ERROR events, used by error-controller to resolve errors through retries and adaptive switching Added stats property to ERROR events, used to gather timing information from network errors Marked ERROR event err deprecated (replaced by error) Added LEVEL_PARSING_ERROR to ErrorDetails, triggered when the playlist parser encounters invalid HLS content (Variable Substitution) Added FRAG_GAP to ErrorDetails triggered when encountering a Segment or Part with a GAP tag or attribute, instead of attempting to load the media marked as unavailable. Error handling will attempt to switch renditions or jump the gap if a suitable replacement is not found. Marked lowBufferWatchdogPeriod as deprecated (implementation missing/removed) Deprecated loading timeout and retry config options in favor of new LoadPolicy options A warning is logged when configuring the player with the deprecated loading settings, as they are converted to the new load policy options. v1.4.1 Summary HLS.js v1.4.1 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.0...v1.4.1 Fix Low-Latency HLS Part and fragment tracking (#5423) @robwalch Fixes a v1.3.5 regression in Low-Latency HLS playback where additional segment are loaded while playing at the edge Fixes a v1.4.0 regression where partially loaded segments are not reloaded while catching up after seeking back Bugfix: Check for undefined audio track attribute in findTrackId() (#5431) @agajassi Fixes v1.4.0 regression that prevents initial audio track selection from being performed correctly when required option is not the first (#5430) Retry audio and subtitle media playlist loading when alternate is not found (#5420) @robwalch Fixes v1.4.0 regression where fragment loading retry settings are ignored for alternate audio and subtitle track segment loading errors (#5419) Bugfix: reset remainderData in resetContiguity (#5410) @WilliamChiu Fixes stalls after seeking with "progressive" option enabled on mp4 segmented content Fix incorrect HEVC main profile codec id (#5438) @StaZhu Always use MediaSource returned by utils module (#5448) @robwalch Setup npm provenance statements for signing builds (#5406) @tjenkinson Move package.json#exports types condition to the front (#5439) @Andarist Documentation: add Media Chrome for custom UI (#5391) @luwes Documentation: Fix readme logos & add Mux logo (#5390) @luwes v1.4.2 Summary HLS.js v1.4.2 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.1...v1.4.2 Allow live level loading to recover from network being suspended (#5473) @robwalch Fix AV desync regression in v1.4.0 with misaligned mp4 audio (#5471) @robwalch Fix handling of muxed mp4 ("audiovideo") segments in Low-Latency HLS and fragment-tracker (#5460) @TroyKomodo v1.4.3 Summary HLS.js v1.4.3 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.2...v1.4.3 Fix long VOD looping or seeking back to 0 after buffer ejection (#5480) @robwalch Remove startLoad() as recovery method from API.md doc (#5478) @robwalch v1.4.4 Summary HLS.js v1.4.4 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.3...v1.4.4 Fix regression in emsg metadata cue timing (#5505) @robwalch Fix regression where some AAC segments are treated as TS (#5503) @robwalch Fix regression where Playlist loading errors not fatal after all levels and retries exhausted (#5498) @robwalch Adjust parsed TS AVC samples when start PTS matches last DTS (#5500) @robwalch Provide light ESM dist file (#5486) @Chocobozzz v1.4.5 Summary HLS.js v1.4.5 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.4...v1.4.5 Resume fragment loading after level switch follows level error (f670acc cherry picked from #5537) @robwalch Fixes #5498 Do not adjust the end time of metadata cues that overlap with cues of another type (id3, emsg, daterange) (a41088c cherry picked from #5546) @robwalch Fixes #5531 v1.4.6 Summary HLS.js v1.4.6 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.5...v1.4.6 Keep level switch error actions within player constraints (#5570) @robwalch Fixes: Fatal error is never reached when capLevelToPlayerSize is true (#5566) @radiantmediaplayer v1.4.7 Summary HLS.js v1.4.7 includes bug fixes and improvements over the last release. Changes Since The Last Release v1.4.6...v1.4.7 Fix large subtitle target duration can result in subtitles not loading as needed (#5597) @robwalch Fixes subtitle segment finding when using start offset Improves subtitle segment finding at the start of discontinuity sequences Fixes subtitle segment loading when subtitle playlist does not have DISCONTINUITY tags matching media playlists Fix Multivariant Playlist and Key XHR loader retries (#5598) @robwalch Fixes XHR Loader retry logic (only used for key and MVP files) Fixes stream-controller state state change on key file errors that result in level switch