Commit Graph

11458 Commits

Author SHA1 Message Date
Rob Walch 6fd1d1d21e Get keyId from init segment tenc box instead of generating one or using flakey wv guess
Fixes #7541
2025-09-18 20:16:38 -07:00
Rob Walch 6f91d50a7e Use Widevine KEYID or parse Playready when level keys are present
Update keyUriToKeyIdMap set after KEY_LOADING
Fixes #7541 #7542
2025-09-18 17:21:14 -07:00
Tom Jenkinson 785c0a5105 Update npm to v11 before publish
Because the OIDC flow needs v11
2025-09-18 10:49:52 -07:00
Tom Jenkinson e49270c4c0 Use GitHub release env for npm publish (#7544)
* Use GitHub `release` env for npm publish

As this is used for npm OIDC. Also stops passing the token given OIDC doesn't need it

* Do not write token to config
2025-09-18 10:49:38 -07:00
Rob Walch c4d9bf3848 Fix "Missing format identifier #EXTM3U" playlist parsing errors
Fixes #7531
v1.6.12
2025-09-09 08:01:53 -07:00
Rob Walch 0919731d84 Merge pull request #7530 from video-dev/bugfix/audio-only-main
Setup as audio-only when main segment has no video
2025-09-09 07:20:27 -07:00
Rob Walch 0638d9aa0a Setup as audio-only when main segment has no video
Fixes #7524
2025-09-08 12:41:57 -07:00
Rob Walch a3c63bd39e Multivariant Playlist parsing fixes (#7523)
* Move unknown codecs handling to playlist-loader

* Add `stats.parsing.end` timing prior to emitting MANIFEST_PARSED on MANIFEST_LOADED (or MANIFEST_PARSING_ERROR)
Resolves #7518

* Add mvp loading and parsing test with `stats.parsing.end` assertion (#7518)

* Fix incorrect LEVEL_LOADED `level` index when lower level removed while loading
2025-09-05 20:42:40 -07:00
Rob Walch 5a6228024b Error handling for PlayReady key with no status change (#7527)
* Error handling for PlayReady key with no status change
#7508

* Remove hanging promises (except for renewal)

* Log append queing
2025-09-05 18:17:49 -07:00
Shubham Sharma 4a334e9d31 Fix PlayReady key endianness (#7510)
(cherry picked from commit f9e23c0446)
2025-08-29 18:50:36 -07:00
yajin2021 947cbd81af Parse keyid from multi-key widevine PSSH (#7415)
(cherry picked from commit 3fd4bf3a40)
2025-08-28 14:22:17 -07:00
Rob Walch 178333c022 Add ESLint syntax rules to restrict async syntax, no-floating-promises, and no-misused-promises (#7480)
ESlint error messages explain reasoning
v1.6.11
2025-08-24 19:10:26 -07:00
Rob Walch 82e46956dd Improve functional test logs (#7481) 2025-08-24 18:42:10 -07:00
Rob Walch b2d73913c1 Defer segment requests when network connection is lost (#7476)
* Wait to retry fragment request when `navigator.onLine` is false
(uses polling for Firefox where "online" event never fires)
Fixes #7471
* Only treat no-alternate segment request failures as gaps in live playlists (#7464, #7410)
* Retry once per seeking out of current fragment range (even when offline)
* Do not exhaust retries in tick loop while seeking
* Only schedule immediate tick on seeking when buffer is empty and state is idle (#7472)
2025-08-22 16:13:19 -07:00
Rob Walch 4ebd6d2431 Handle EME key status errors such as "internal-error" and "output-restricted" before appending media (#7414)
* Handle EME key status errors before appending segments
Fixes #7413 (playback/switching fails on KEY_SYSTEM_STATUS_INTERNAL_ERROR 'internal-error' key status)

* Fix handling of one-to-many KEY URI to Key IDs
#7413

* Remove levels with "internal-error" key status errors and optimize key-bytes comparison
Add "FIXME" comments for future MediaKeySessionContext multi-key handling improvements

* Do not throw fatal keyLoadingPromise error when context changes on KEY_LOADING
reproducible with `hls.once(Hls.Events.KEY_LOADING, () => hls.removeLevel(hls.loadLevel))`
2025-08-22 14:55:59 -07:00
Rob Walch f9a6dbffea Merge pull request #7478 from video-dev/bugfix/interstitials-program-ended-undefined 2025-08-22 13:17:17 -07:00
Rob Walch d42eccee09 Fix exception when seeking to program end 2025-08-22 12:22:21 -07:00
Rob Walch 1e3453e1b1 Fix interstitial asset events not firing when attaching primary early for playout-limit change (#7467)
* Fix interstitial asset events not firing when attaching primary early for playout-limit change
* Add log message helper for timeline position updates
2025-08-20 16:08:06 -07:00
Tristan Matthews c64313bd2d Fix syntax in recoverMediaError example in API.md
This also addresses some formatting issues found by prettier.
2025-08-19 12:09:58 -07:00
Rob Walch b21b6de9f6 Allow base and query URI differences in segment mismatch error check (#7465) v1.6.10 2025-08-14 11:39:01 -07:00
Matt Joiner 5ea8f781be Minor improvements to docs (#7459) 2025-08-14 10:00:37 -07:00
Rob Walch b829dd3b00 Do not treat HTTP status 0 frag load errors as gaps
Fixes #7410
2025-08-14 09:59:25 -07:00
Rob Walch e3c4f1ddc0 Merge new Date Ranges in Delta Update when last details have none
Fixes #7461
2025-08-14 09:01:48 -07:00
Rob Walch 59ede999a2 Disable part loading for subtitle playlists (not supported in subtitle-stream-controller, timeline-contoller, fragment-tracker...)
Stop gap measure for #7460
2025-08-14 08:18:24 -07:00
Rob Walch d2c81f03d8 Force schedule update on asset or interstitial error (#7451)
* Force schedule update on asset or interstitial error (in case playout duration is not changed by error but schedule update is needed)

* Handle seeking back in interstitial with faulty assets
v1.6.9
2025-08-07 00:53:30 -07:00
Rob Walch 053c42b36c Remove unnecessary conditionals (#7455)
Use instance logger in level-helper functions
2025-08-06 21:25:57 -07:00
Rob Walch 3206822e37 Detect unhandled encryption and fallback or error
Don't error if mediaKeys are set in case of custom EME integration
2025-08-06 19:51:16 -07:00
Rob Walch a37db2fc08 Prevent exception when mapping date ranges that referenced dropped PDT (#7450) 2025-08-06 19:19:39 -07:00
Rob Walch 84e4fbdc3f Improve recoverMediaError documentation in API.md (#7447) v1.6.8 2025-08-04 16:08:08 -07:00
Rob Walch a19f42425d Interstitials improvements and fixes (#7425)
* Interstitials improvements
- Fix DateRange mapping in Live with fragment reference sliding (use `frag.setStart` over `frag.start =` to update tagAnchor ref)
- Skip gaps between interstitial assets
- Make MEDIA_ATTACHED async on transferMedia (this.media undefined in id3-track-controller onMediaAttached otherwise)
- Add metadata cue timing to assets for better event timing
- Removed unnecessary conditionals in changed files (added looser typing in cases where object[index] result may be undefined)
Fixes #7426

* Fix `fragment.byteLength` with no byte range

* Load next asset m3u8 on asset-list loaded (w/o append-in-place)

* Prevent schedule from advancing past interstitials loading asset-lists (with no duration)

* Handle append-in-line interstitials with shorter that playout-limit fill

* Advance asset player buffering on asset error prior to starting interstitial

* Update asset duration on first playlist update

* Workaround asset buffered to end edge cases

* Do not flush when QuotaExceededError is received by asset players while playing primary

* Handle seeking to unplayable range caused by truncated interstitial
2025-08-04 15:41:12 -07:00
Rob Walch d5ddabae2a Unblock audio appends when video source buffer is at EoS 2025-07-31 19:41:13 -07:00
Rob Walch d46bf0e311 Fix FairPlay Streaming "encrypted" event handling regression
Fixes regression introduced in v1.6.7 with #7380
2025-07-31 10:27:00 -07:00
Rob Walch 8d1053cd94 Timestamp offset stability fix for muxed audiovideo mp4 (#7436)
* Fix resetting of initPTS when muxed "audiovideo" sample start times are inconsistent
Fixes #7431

* Continue loading parts even with gaps and warn when frag selects fallback likely due to a gap
2025-07-31 00:08:43 -07:00
Rob Walch 2fb519b645 Schedule renovate to run on the 28th day of the month (#7439) 2025-07-29 12:18:44 -07:00
hlsjs-ci 3db93e6bd7 Merge pull request #7438 from video-dev/renovate/wrangler-4.x
chore(deps): update dependency wrangler to v4.26.1
2025-07-29 19:46:08 +01:00
renovate[bot] e0e07ab034 chore(deps): update dependency wrangler to v4.26.1 2025-07-29 18:31:03 +00:00
hlsjs-ci 850b1039b6 Merge pull request #7437 from video-dev/renovate/wrangler-4.x
chore(deps): update dependency wrangler to v4.25.1
2025-07-29 19:30:07 +01:00
renovate[bot] 986b3eafbb chore(deps): update dependency wrangler to v4.25.1 2025-07-29 18:13:45 +00:00
hlsjs-ci 3687209f69 Merge pull request #7435 from video-dev/renovate/svta-common-media-library-0.x
chore(deps): update dependency @svta/common-media-library to v0.17.1
2025-07-29 03:55:03 +01:00
renovate[bot] a7b7e08123 chore(deps): update dependency @svta/common-media-library to v0.17.1 2025-07-29 02:40:10 +00:00
hlsjs-ci 9176b392eb Merge pull request #7434 from video-dev/renovate/typescript-eslint-monorepo
chore(deps): update typescript-eslint monorepo to v8.38.0
2025-07-28 20:51:45 +01:00
renovate[bot] 07ac7456e5 chore(deps): update typescript-eslint monorepo to v8.38.0 2025-07-28 19:36:38 +00:00
hlsjs-ci 86096d84de Merge pull request #7428 from video-dev/renovate/eslint-config-prettier-10.x
chore(deps): update dependency eslint-config-prettier to v10.1.8
2025-07-25 19:56:15 +01:00
renovate[bot] e51bc871ce chore(deps): update dependency eslint-config-prettier to v10.1.8 2025-07-25 18:41:25 +00:00
Rob Walch ff2f417c07 Merge pull request #7422 from video-dev/renovate/node-22.x 2025-07-23 08:33:06 -07:00
renovate[bot] 51c4784c7d chore(deps): update node.js to v22.17.1 2025-07-23 03:10:13 +00:00
hlsjs-ci 7f98b85ec8 Merge pull request #7423 from video-dev/renovate/chromedriver-138.x
chore(deps): update dependency chromedriver to v138.0.3
2025-07-23 04:09:35 +01:00
renovate[bot] 67b62e9b20 chore(deps): update dependency chromedriver to v138.0.3 2025-07-23 02:53:47 +00:00
Rob Walch 99358d85ad Merge pull request #7418 from devoldemar/fix_issue_7392
Ignore offsets related to default_display_window_flag in HEVC-TS demuxer
2025-07-19 15:11:48 -07:00
devoldemar cbe5f89037 Ignore offsets related to default_display_window_flag in HEVC-TS demuxer 2025-07-19 14:57:32 +05:00