Skip to content

Error parsing DRM encoded streams using widevine #7541

Description

@AfLosada

What version of Hls.js are you using?

1.6.12

What browser (including version) are you using?

Version 140.0.7339.133 (Official Build) (arm64)

What OS (including version) are you using?

Macbook Pro M1 Max - OS Sequoia 15.6

Test stream

No response

Configuration

const config = {
    "lowLatencyMode": false,
    "backBufferLength": 20,
    "drmSystems": {
        "com.widevine.alpha": {
            "licenseUrl": "REDACT"
        }
    },
    "enableWorker": false,
    "emeEnabled": true,
    "debug": true
}

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Load a stream that is DRM encrypted with Widevine
  2. See the following error logs
[log] > [error-controller]: Banned key found in level 0 (1120000bps) or audio group "audio" (audio fragment) cea0fb6ad98c6262f51a05657a64726d
15:10:48.765 error-controller.ts:543 [log] > [error-controller]: Removing level 0 with key error (Error: key status changed to "internal-error")

Expected behaviour

In version 1.6.10, the video is able to reproduce without any issues.

What actually happened?

Video never starts and the HLS player stops by throwing an internal-error. The error seems to have been introduce in 1.6.11 as discussed in this issue.

Console output

15:10:41.232 client:733 [vite] connecting...
15:10:41.426 client:826 [vite] connected.
15:10:42.072 HlsJs.ts:40 HLS
15:10:42.073 HlsJs.ts:63 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.6.12
15:10:42.075 HlsJs.ts:72 [log] > stopLoad
15:10:42.075 HlsJs.ts:72 [log] > loadSource:<redact>
15:10:42.075 HlsJs.ts:72 [log] > [interstitials]: clear schedule state
15:10:42.076 HlsJs.ts:72 [log] > [stream-controller]: Trigger BUFFER_RESET
15:10:42.077 HlsJs.ts:73 [log] > attachMedia
15:10:42.077 HlsJs.ts:73 [log] > [buffer-controller]: created media source: MediaSource
15:10:42.078 GSPlayer.tsx:213 isLowLatency:  false
15:10:42.078 GSPlayer.tsx:214 isMultiTrack:  false
15:10:42.095 buffer-controller.ts:1546 [log] > [buffer-controller]: Media source opened
15:10:42.096 buffer-controller.ts:1375 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 0) {}
15:10:42.472 level-controller.ts:351 [log] > [level-controller]: manifest loaded, 1 level(s) found, first bitrate: 1120000
15:10:42.472 abr-controller.ts:65 [log] > [abr]: setting initial bwe to 1120000
15:10:42.472 buffer-controller.ts:266 [log] > [buffer-controller]: 2 bufferCodec event(s) expected.
15:10:42.472 playlist-loader.ts:397 [log] > auto startLoad with configured startPosition -1
15:10:42.473 hls.ts:556 [log] > startLoad(-1)
15:10:42.473 level-controller.ts:450 [log] > [level-controller]: Switching to level 0 (480p SDR avc1,mp4a @1120000) from level -1
15:10:42.473 audio-track-controller.ts:187 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in group(s): audio
15:10:42.474 audio-track-controller.ts:326 [log] > [audio-track-controller]: Switching to audio-track 0 "1" lang:undefined group:audio channels:2
15:10:42.474 base-stream-controller.ts:2054 [log] > [audio-stream-controller]: Reset loading state
15:10:42.474 level-controller.ts:655 [log] > [level-controller]: Loading level index 0 <redact>
15:10:42.474 base-stream-controller.ts:2230 [log] > [stream-controller]: STOPPED->IDLE
15:10:42.475 audio-track-controller.ts:421 [log] > [audio-track-controller]: Loading audio-track 0 "1" lang:undefined group:audio <redact>
15:10:42.475 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
15:10:42.475 base-stream-controller.ts:2230 [log] > [subtitle-stream-controller]: STOPPED->IDLE
15:10:42.562 stream-controller.ts:661 [log] > [stream-controller]: Level 0 loaded [1,45][part-45--1], cc [0, 0] duration:45.43999999999999
15:10:42.562 base-stream-controller.ts:1823 [log] > [stream-controller]: setting startPosition to 0 by default
15:10:42.562 interstitials-controller.ts:1036 [log] > [interstitials]: [checkStart] Advancing timeline position to 0
15:10:42.562 interstitials-controller.ts:1135 [log] > [interstitials]: setSchedulePosition 0, undefined ([primary: 0.00-45.44]) pos: 0
15:10:42.562 interstitials-controller.ts:2005 [log] > [interstitials]: INTERSTITIALS_BUFFERED_TO_BOUNDARY [primary: 0.00-45.44]
15:10:42.563 interstitials-controller.ts:1397 [log] > [interstitials]: resuming [primary: 0.00-45.44]
15:10:42.563 interstitials-controller.ts:1487 [log] > [interstitials]: [attachPrimary] Advancing timeline position to 0
15:10:42.563 buffer-controller.ts:1352 [log] > [buffer-controller]: Updating MediaSource duration to 45.440
15:10:42.564 eme-controller.ts:422 [log] > [eme]: Selecting key-system from fragment (sn: 1 main: 0) key formats urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed, com.apple.streamingkeydelivery
15:10:42.564 eme-controller.ts:260 [log] > [eme]: Requesting encrypted media "com.widevine.alpha" key-system access with config: [{"initDataTypes":["cenc"],"persistentState":"optional","distinctiveIdentifier":"optional","sessionTypes":["temporary"],"audioCapabilities":[{"contentType":"audio/mp4; codecs=mp4a.40.2","robustness":"","encryptionScheme":null}],"videoCapabilities":[{"contentType":"video/mp4; codecs=avc1.42C01E","robustness":"","encryptionScheme":null}]}]
15:10:42.564 HlsJs.ts:72 It is recommended that a robustness level be specified. Not specifying the robustness level could result in unexpected behavior.
requestMediaKeySystemAccess @ eme-controller.ts:242
getMediaKeysPromise @ eme-controller.ts:265
attempt @ eme-controller.ts:199
(anonymous) @ eme-controller.ts:221
attemptKeySystemAccess @ eme-controller.ts:189
getKeySystemSelectionPromise @ eme-controller.ts:595
(anonymous) @ eme-controller.ts:404
selectKeySystem @ eme-controller.ts:403
getKeyFormatPromise @ eme-controller.ts:442
selectKeySystemFormat @ eme-controller.ts:427
loadClear @ key-loader.ts:125
_doFragLoad @ base-stream-controller.ts:859
_loadInitSegment @ base-stream-controller.ts:639
loadFragment @ stream-controller.ts:392
doTickIdle @ stream-controller.ts:377
doTick @ stream-controller.ts:224
tick @ task-loop.ts:109
onLevelLoaded @ stream-controller.ts:720
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handlePlaylistLoaded @ playlist-loader.ts:790
handleTrackOrLevelPlaylist @ playlist-loader.ts:594
onSuccess @ playlist-loader.ts:352
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onLevelLoading @ playlist-loader.ts:175
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadingPlaylist @ level-controller.ts:663
scheduleLoading @ base-playlist-controller.ts:335
loadPlaylist @ level-controller.ts:641
set level @ level-controller.ts:499
set nextLoadLevel @ level-controller.ts:682
set nextLoadLevel @ hls.ts:776
startLoad @ stream-controller.ts:161
startLoad @ hls.ts:565
checkAutostartLoad @ playlist-loader.ts:400
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleMasterPlaylist @ playlist-loader.ts:517
onSuccess @ playlist-loader.ts:360
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onManifestLoading @ playlist-loader.ts:162
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadSource @ hls.ts:524
HlsJs @ HlsJs.ts:72
HlsPlayer @ HlsPlayer.ts:15
getVideoPlayer @ videoPlayerService.ts:144
init @ GSPlayer.tsx:219
(anonymous) @ GSPlayer.tsx:154
invokePassiveEffectCreate @ react-dom.development.js:23487
callCallback2 @ react-dom.development.js:3945
invokeGuardedCallbackDev @ react-dom.development.js:3994
invokeGuardedCallback @ react-dom.development.js:4056
flushPassiveEffectsImpl @ react-dom.development.js:23574
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
performSyncWorkOnRoot @ react-dom.development.js:22269
(anonymous) @ react-dom.development.js:11327
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushSyncCallbackQueueImpl @ react-dom.development.js:11322
flushSyncCallbackQueue @ react-dom.development.js:11309
flushPassiveEffectsImpl @ react-dom.development.js:23620
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
(anonymous) @ react-dom.development.js:23324
workLoop @ scheduler.development.js:417
flushWork @ scheduler.development.js:390
performWorkUntilDeadline @ scheduler.development.js:157
15:10:42.565 base-stream-controller.ts:865 [log] > [stream-controller]: [eme] blocking frag load until media-keys acquired
15:10:42.566 base-stream-controller.ts:965 [log] > [stream-controller]: Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [1-45], target: 0
15:10:42.566 base-stream-controller.ts:2230 [log] > [stream-controller]: IDLE->FRAG_LOADING
15:10:42.567 eme-controller.ts:280 [log] > [eme]: Access for key-system "com.widevine.alpha" obtained
15:10:42.567 eme-controller.ts:286 [log] > [eme]: Create media-keys for "com.widevine.alpha"
15:10:42.567 audio-track-controller.ts:101 [log] > [audio-track-controller]: Audio track 0 "1" lang:undefined group:audio loaded [1-46]
15:10:42.567 audio-stream-controller.ts:548 [log] > [audio-stream-controller]: Audio track 0 "1" of "audio" loaded [1,46][part-46--1],duration:45.440144
15:10:42.568 base-stream-controller.ts:1823 [log] > [audio-stream-controller]: setting startPosition to 0 by default
15:10:42.568 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
15:10:42.568 base-stream-controller.ts:865 [log] > [audio-stream-controller]: [eme] blocking frag load until media-keys acquired
15:10:42.568 base-stream-controller.ts:965 [log] > [audio-stream-controller]: Loading audio sn: initSegment of track 0 (frag:[0.000-0.000]) cc: 0 [1-46], target: 0
15:10:42.568 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
15:10:42.845 eme-controller.ts:289 [log] > [eme]: Media-keys created for "com.widevine.alpha"
15:10:42.845 eme-controller.ts:712 [log] > [eme]: Setting media-keys for "com.widevine.alpha"
15:10:42.845 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
15:10:42.845 base-stream-controller.ts:839 [log] > [audio-stream-controller]: Loading key for 1 of [1-46], track 0
15:10:42.845 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
15:10:42.845 key-loader.ts:221 [log] > [key-loader]: Loading keyId: cea0fb6ad98c6262f51a05657a64726d URI: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG from audio 0
15:10:42.846 eme-controller.ts:471 [log] > [eme]: Starting session for key (keyId: cea0fb6ad98c6262f51a05657a64726d format: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" method: SAMPLE-AES uri: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG)
15:10:42.846 base-stream-controller.ts:965 [log] > [audio-stream-controller]: Loading audio sn: 1 of track 0 (frag:[0.000-0.981]) cc: 0 [1-46], target: 0
15:10:42.846 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
15:10:42.846 eme-controller.ts:480 [log] > [eme]: Handle encrypted media sn: 1 audio: 0 using key (keyId: cea0fb6ad98c6262f51a05657a64726d format: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" method: SAMPLE-AES uri: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG)
15:10:42.846 eme-controller.ts:324 [log] > [eme]: Creating key-system session "com.widevine.alpha" keyId: cea0fb6ad98c6262f51a05657a64726d keyUri: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG
15:10:42.846 eme-controller.ts:774 [log] > [eme]: Generating key-session request for "playlist-key" keyId: cea0fb6ad98c6262f51a05657a64726d URI: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG (init data type: cenc length: 63)
15:10:42.847 eme-controller.ts:727 [log] > [eme]: Media-keys set for "com.widevine.alpha"
15:10:42.847 base-stream-controller.ts:2230 [log] > [stream-controller]: FRAG_LOADING->IDLE
15:10:42.847 base-stream-controller.ts:839 [log] > [stream-controller]: Loading key for 1 of [1-45], level 0
15:10:42.847 base-stream-controller.ts:2230 [log] > [stream-controller]: IDLE->KEY_LOADING
15:10:42.847 key-loader.ts:221 [log] > [key-loader]: Reloading keyId: cea0fb6ad98c6262f51a05657a64726d URI: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG from main 0
15:10:42.847 eme-controller.ts:471 [log] > [eme]: Starting session for key (keyId: cea0fb6ad98c6262f51a05657a64726d format: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" method: SAMPLE-AES uri: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG)
15:10:42.847 base-stream-controller.ts:965 [log] > [stream-controller]: Loading main sn: 1 of level 0 (frag:[0.000-1.040]) cc: 0 [1-45], target: 0
15:10:42.847 base-stream-controller.ts:2230 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
15:10:42.852 eme-controller.ts:925 [log] > [eme]: Request generated for key-session "27E4B17F5812A7221DFE8D415A912E1A" keyId: cea0fb6ad98c6262f51a05657a64726d URI: data:text/plain;base64,AAAAP3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB8SEM7KyAynHUXOoPtq2YxiYvUaBWV6ZHJtSPPGiZsG
15:10:42.853 eme-controller.ts:789 [log] > [eme]: "license-request" message event for session "27E4B17F5812A7221DFE8D415A912E1A" message size: 2
15:10:42.853 eme-controller.ts:1232 [log] > [eme]: Sending license request to URL: <redact>
15:10:42.896 VM1403:34 BetVision took 678.10ms to load and initialize.
15:10:43.527 eme-controller.ts:1246 [log] > [eme]: License received 716
15:10:43.528 eme-controller.ts:372 [log] > [eme]: Updating key-session "27E4B17F5812A7221DFE8D415A912E1A" for keyId cea0fb6ad98c6262f51a05657a64726d
      } (data length: 716)
15:10:43.558 eme-controller.ts:789 [log] > [eme]: "license-request" message event for session "27E4B17F5812A7221DFE8D415A912E1A" message size: 3927
15:10:43.558 eme-controller.ts:1232 [log] > [eme]: Sending license request to URL: redact
15:10:43.869 <link rel=preload> must have a valid `as` value
15:10:43.869 <link rel=preload> must have a valid `as` value
15:10:43.869 <link rel=preload> must have a valid `as` value
15:10:43.869 <link rel=preload> must have a valid `as` value
15:10:43.869 <link rel=preload> must have a valid `as` value
15:10:43.869 <link rel=preload> must have a valid `as` value
15:10:44.539 immersiveVideo.js:252  GET https://gsm-shared-assets.betstream.betgenius.com/shared/assets/translations/bet-vision-translations/customers/10934/en-US.json 404 (Not Found)
p @ immersiveVideo.js:252
(anonymous) @ immersiveVideo.js:252
e.a @ immersiveVideo.js:252
value @ immersiveVideo.js:322
(anonymous) @ immersiveVideo.js:322
Promise.then
value @ immersiveVideo.js:322
value @ immersiveVideo.js:322
value @ ReactGenius.js:1
value @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
value @ ReactGenius.js:1
value @ ReactGenius.js:1
value @ ReactGenius.js:1
i @ ReactGenius.js:1
value @ ReactGenius.js:1
f @ ReactGenius.js:1
setTimeout
value @ ReactGenius.js:1
init @ immersiveVideo.js:322
t @ immersiveVideo.js:322
(anonymous) @ immersiveVideo.js:322
Qr @ ReactGenius.js:1
t.unstable_runWithPriority @ ReactGenius.js:1
Nt @ ReactGenius.js:1
Wr @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
s @ ReactGenius.js:1
j.port1.onmessage @ ReactGenius.js:1
15:10:44.573 immersiveVideo.js:252  GET https://gsm-shared-assets.betstream.betgenius.com/shared/assets/translations/bet-vision-translations/customers/10934/en.json 404 (Not Found)
p @ immersiveVideo.js:252
(anonymous) @ immersiveVideo.js:252
e.a @ immersiveVideo.js:252
value @ immersiveVideo.js:322
(anonymous) @ immersiveVideo.js:322
Promise.then
value @ immersiveVideo.js:322
value @ immersiveVideo.js:322
value @ ReactGenius.js:1
value @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
value @ ReactGenius.js:1
value @ ReactGenius.js:1
value @ ReactGenius.js:1
value @ ReactGenius.js:1
t.d @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
t.a @ ReactGenius.js:1
GA @ immersiveVideo.js:374
mn @ ReactGenius.js:1
uu @ ReactGenius.js:1
Br @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
Vr @ ReactGenius.js:1
Tr @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
t.unstable_runWithPriority @ ReactGenius.js:1
Nt @ ReactGenius.js:1
Rt @ ReactGenius.js:1
_t @ ReactGenius.js:1
Qr @ ReactGenius.js:1
t.unstable_runWithPriority @ ReactGenius.js:1
Nt @ ReactGenius.js:1
Wr @ ReactGenius.js:1
(anonymous) @ ReactGenius.js:1
s @ ReactGenius.js:1
j.port1.onmessage @ ReactGenius.js:1
15:10:44.651 eme-controller.ts:1246 [log] > [eme]: License received 667
15:10:44.652 eme-controller.ts:372 [log] > [eme]: Updating key-session "27E4B17F5812A7221DFE8D415A912E1A" for keyId cea0fb6ad98c6262f51a05657a64726d
      } (data length: 667)
15:10:44.739 eme-controller.ts:982 [log] > [eme]: key status change "usable" for keyStatuses keyId: cecac80ca71d45cea0fb6ad98c6262f5 key-session "27E4B17F5812A7221DFE8D415A912E1A"
15:10:44.739 eme-controller.ts:904 [log] > [eme]: No status for keyId cea0fb6ad98c6262f51a05657a64726d ({"cecac80ca71d45cea0fb6ad98c6262f5":"usable"}).
15:10:48.533 eme-controller.ts:847 [Violation] 'keystatuseschange' handler took 3794ms
15:10:48.540 eme-controller.ts:897 [log] > [eme]: key status for cea0fb6ad98c6262f51a05657a64726d in key-session "27E4B17F5812A7221DFE8D415A912E1A" timed out after 0ms
15:10:48.544 eme-controller.ts:1453 [log] > [eme]: Remove licenses and keys and close session "27E4B17F5812A7221DFE8D415A912E1A" keyId: cea0fb6ad98c6262f51a05657a64726d
15:10:48.663 immersiveVideo.js:374 [Violation] 'setTimeout' handler took 98ms
15:10:48.680 betvision?123=123&otroID=deviceID:1 Uncaught SyntaxError: Unexpected number
15:10:48.764 HlsJs.ts:72 [error] > [eme]: key status changed to "internal-error" (cea0fb6ad98c6262f51a05657a64726d)
overrideMethod @ hook.js:608
handleError @ eme-controller.ts:543
(anonymous) @ eme-controller.ts:505
Promise.catch
loadKey @ eme-controller.ts:504
loadKeyEME @ key-loader.ts:262
loadInternal @ key-loader.ts:240
load @ key-loader.ts:165
_doFragLoad @ base-stream-controller.ts:844
_loadFragForPlayback @ base-stream-controller.ts:517
loadFragment @ base-stream-controller.ts:492
loadFragment @ audio-stream-controller.ts:1018
doTickIdle @ audio-stream-controller.ts:452
doTick @ audio-stream-controller.ts:243
tick @ task-loop.ts:109
completeInitSegmentLoad @ base-stream-controller.ts:718
(anonymous) @ base-stream-controller.ts:695
Promise.then
_loadInitSegment @ base-stream-controller.ts:648
loadFragment @ audio-stream-controller.ts:1004
doTickIdle @ audio-stream-controller.ts:452
doTick @ audio-stream-controller.ts:243
tick @ task-loop.ts:109
onAudioTrackLoaded @ audio-stream-controller.ts:606
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handlePlaylistLoaded @ playlist-loader.ts:802
handleTrackOrLevelPlaylist @ playlist-loader.ts:594
onSuccess @ playlist-loader.ts:352
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onAudioTrackLoading @ playlist-loader.ts:192
emit @ index.js:182
emit @ hls.ts:386
trigger @ hls.ts:394
loadingPlaylist @ audio-track-controller.ts:428
scheduleLoading @ base-playlist-controller.ts:335
loadPlaylist @ audio-track-controller.ts:407
startLoad @ base-playlist-controller.ts:52
startLoad @ hls.ts:565
checkAutostartLoad @ playlist-loader.ts:400
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleMasterPlaylist @ playlist-loader.ts:517
onSuccess @ playlist-loader.ts:360
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onManifestLoading @ playlist-loader.ts:162
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadSource @ hls.ts:524
HlsJs @ HlsJs.ts:72
HlsPlayer @ HlsPlayer.ts:15
getVideoPlayer @ videoPlayerService.ts:144
init @ GSPlayer.tsx:219
(anonymous) @ GSPlayer.tsx:154
invokePassiveEffectCreate @ react-dom.development.js:23487
callCallback2 @ react-dom.development.js:3945
invokeGuardedCallbackDev @ react-dom.development.js:3994
invokeGuardedCallback @ react-dom.development.js:4056
flushPassiveEffectsImpl @ react-dom.development.js:23574
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
performSyncWorkOnRoot @ react-dom.development.js:22269
(anonymous) @ react-dom.development.js:11327
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushSyncCallbackQueueImpl @ react-dom.development.js:11322
flushSyncCallbackQueue @ react-dom.development.js:11309
flushPassiveEffectsImpl @ react-dom.development.js:23620
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
(anonymous) @ react-dom.development.js:23324
workLoop @ scheduler.development.js:417
flushWork @ scheduler.development.js:390
performWorkUntilDeadline @ scheduler.development.js:157
15:10:48.765 error-controller.ts:538 [log] > [error-controller]: Banned key found in level 0 (1120000bps) or audio group "audio" (audio fragment) cea0fb6ad98c6262f51a05657a64726d
15:10:48.765 error-controller.ts:543 [log] > [error-controller]: Removing level 0 with key error (Error: key status changed to "internal-error")
15:10:48.766 hls.ts:579 [log] > stopLoad
15:10:48.766 base-stream-controller.ts:2230 [log] > [stream-controller]: FRAG_LOADING->STOPPED
15:10:48.766 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: FRAG_LOADING->STOPPED
15:10:48.766 base-stream-controller.ts:2230 [log] > [subtitle-stream-controller]: IDLE->STOPPED
15:10:48.766 HlsJs.ts:167 {type: 'keySystemError', details: 'keySystemStatusInternalError', fatal: true, decryptdata: _LevelKey, error: Error: key status changed to "internal-error"
    at new EMEKeyError (https://localhost:3000/@fs/Us…, …}
overrideMethod @ hook.js:608
(anonymous) @ HlsJs.ts:167
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleError @ eme-controller.ts:548
(anonymous) @ eme-controller.ts:505
Promise.catch
loadKey @ eme-controller.ts:504
loadKeyEME @ key-loader.ts:262
loadInternal @ key-loader.ts:240
load @ key-loader.ts:165
_doFragLoad @ base-stream-controller.ts:844
_loadFragForPlayback @ base-stream-controller.ts:517
loadFragment @ base-stream-controller.ts:492
loadFragment @ audio-stream-controller.ts:1018
doTickIdle @ audio-stream-controller.ts:452
doTick @ audio-stream-controller.ts:243
tick @ task-loop.ts:109
completeInitSegmentLoad @ base-stream-controller.ts:718
(anonymous) @ base-stream-controller.ts:695
Promise.then
_loadInitSegment @ base-stream-controller.ts:648
loadFragment @ audio-stream-controller.ts:1004
doTickIdle @ audio-stream-controller.ts:452
doTick @ audio-stream-controller.ts:243
tick @ task-loop.ts:109
onAudioTrackLoaded @ audio-stream-controller.ts:606
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handlePlaylistLoaded @ playlist-loader.ts:802
handleTrackOrLevelPlaylist @ playlist-loader.ts:594
onSuccess @ playlist-loader.ts:352
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onAudioTrackLoading @ playlist-loader.ts:192
emit @ index.js:182
emit @ hls.ts:386
trigger @ hls.ts:394
loadingPlaylist @ audio-track-controller.ts:428
scheduleLoading @ base-playlist-controller.ts:335
loadPlaylist @ audio-track-controller.ts:407
startLoad @ base-playlist-controller.ts:52
startLoad @ hls.ts:565
checkAutostartLoad @ playlist-loader.ts:400
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleMasterPlaylist @ playlist-loader.ts:517
onSuccess @ playlist-loader.ts:360
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onManifestLoading @ playlist-loader.ts:162
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadSource @ hls.ts:524
HlsJs @ HlsJs.ts:72
HlsPlayer @ HlsPlayer.ts:15
getVideoPlayer @ videoPlayerService.ts:144
init @ GSPlayer.tsx:219
(anonymous) @ GSPlayer.tsx:154
invokePassiveEffectCreate @ react-dom.development.js:23487
callCallback2 @ react-dom.development.js:3945
invokeGuardedCallbackDev @ react-dom.development.js:3994
invokeGuardedCallback @ react-dom.development.js:4056
flushPassiveEffectsImpl @ react-dom.development.js:23574
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
performSyncWorkOnRoot @ react-dom.development.js:22269
(anonymous) @ react-dom.development.js:11327
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushSyncCallbackQueueImpl @ react-dom.development.js:11322
flushSyncCallbackQueue @ react-dom.development.js:11309
flushPassiveEffectsImpl @ react-dom.development.js:23620
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
(anonymous) @ react-dom.development.js:23324
workLoop @ scheduler.development.js:417
flushWork @ scheduler.development.js:390
performWorkUntilDeadline @ scheduler.development.js:157
15:10:48.766 HlsJs.ts:72 [error] > [eme]: key status changed to "internal-error" (cea0fb6ad98c6262f51a05657a64726d)
overrideMethod @ hook.js:608
handleError @ eme-controller.ts:543
(anonymous) @ eme-controller.ts:520
Promise.catch
loadKey @ eme-controller.ts:513
loadKeyEME @ key-loader.ts:262
loadInternal @ key-loader.ts:240
load @ key-loader.ts:165
_doFragLoad @ base-stream-controller.ts:844
_loadFragForPlayback @ base-stream-controller.ts:517
loadFragment @ base-stream-controller.ts:492
loadFragment @ stream-controller.ts:399
doTickIdle @ stream-controller.ts:377
doTick @ stream-controller.ts:224
tick @ task-loop.ts:109
completeInitSegmentLoad @ base-stream-controller.ts:718
(anonymous) @ base-stream-controller.ts:695
Promise.then
_loadInitSegment @ base-stream-controller.ts:648
loadFragment @ stream-controller.ts:392
doTickIdle @ stream-controller.ts:377
doTick @ stream-controller.ts:224
tick @ task-loop.ts:109
onLevelLoaded @ stream-controller.ts:720
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handlePlaylistLoaded @ playlist-loader.ts:790
handleTrackOrLevelPlaylist @ playlist-loader.ts:594
onSuccess @ playlist-loader.ts:352
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onLevelLoading @ playlist-loader.ts:175
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadingPlaylist @ level-controller.ts:663
scheduleLoading @ base-playlist-controller.ts:335
loadPlaylist @ level-controller.ts:641
set level @ level-controller.ts:499
set nextLoadLevel @ level-controller.ts:682
set nextLoadLevel @ hls.ts:776
startLoad @ stream-controller.ts:161
startLoad @ hls.ts:565
checkAutostartLoad @ playlist-loader.ts:400
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleMasterPlaylist @ playlist-loader.ts:517
onSuccess @ playlist-loader.ts:360
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onManifestLoading @ playlist-loader.ts:162
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadSource @ hls.ts:524
HlsJs @ HlsJs.ts:72
HlsPlayer @ HlsPlayer.ts:15
getVideoPlayer @ videoPlayerService.ts:144
init @ GSPlayer.tsx:219
(anonymous) @ GSPlayer.tsx:154
invokePassiveEffectCreate @ react-dom.development.js:23487
callCallback2 @ react-dom.development.js:3945
invokeGuardedCallbackDev @ react-dom.development.js:3994
invokeGuardedCallback @ react-dom.development.js:4056
flushPassiveEffectsImpl @ react-dom.development.js:23574
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
performSyncWorkOnRoot @ react-dom.development.js:22269
(anonymous) @ react-dom.development.js:11327
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushSyncCallbackQueueImpl @ react-dom.development.js:11322
flushSyncCallbackQueue @ react-dom.development.js:11309
flushPassiveEffectsImpl @ react-dom.development.js:23620
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
(anonymous) @ react-dom.development.js:23324
workLoop @ scheduler.development.js:417
flushWork @ scheduler.development.js:390
performWorkUntilDeadline @ scheduler.development.js:157
15:10:48.767 base-stream-controller.ts:2230 [log] > [stream-controller]: STOPPED->ERROR
15:10:48.767 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: STOPPED->ERROR
15:10:48.767 error-controller.ts:538 [log] > [error-controller]: Banned key found in level 0 (1120000bps) or audio group "audio" (main fragment) cea0fb6ad98c6262f51a05657a64726d
15:10:48.767 error-controller.ts:543 [log] > [error-controller]: Removing level 0 with key error (Error: key status changed to "internal-error")
15:10:48.767 hls.ts:579 [log] > stopLoad
15:10:48.767 base-stream-controller.ts:2230 [log] > [stream-controller]: ERROR->STOPPED
15:10:48.767 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: ERROR->STOPPED
15:10:48.767 HlsJs.ts:167 {type: 'keySystemError', details: 'keySystemStatusInternalError', fatal: true, decryptdata: _LevelKey, error: Error: key status changed to "internal-error"
    at new EMEKeyError (https://localhost:3000/@fs/Us…, …}
overrideMethod @ hook.js:608
(anonymous) @ HlsJs.ts:167
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleError @ eme-controller.ts:548
(anonymous) @ eme-controller.ts:520
Promise.catch
loadKey @ eme-controller.ts:513
loadKeyEME @ key-loader.ts:262
loadInternal @ key-loader.ts:240
load @ key-loader.ts:165
_doFragLoad @ base-stream-controller.ts:844
_loadFragForPlayback @ base-stream-controller.ts:517
loadFragment @ base-stream-controller.ts:492
loadFragment @ stream-controller.ts:399
doTickIdle @ stream-controller.ts:377
doTick @ stream-controller.ts:224
tick @ task-loop.ts:109
completeInitSegmentLoad @ base-stream-controller.ts:718
(anonymous) @ base-stream-controller.ts:695
Promise.then
_loadInitSegment @ base-stream-controller.ts:648
loadFragment @ stream-controller.ts:392
doTickIdle @ stream-controller.ts:377
doTick @ stream-controller.ts:224
tick @ task-loop.ts:109
onLevelLoaded @ stream-controller.ts:720
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handlePlaylistLoaded @ playlist-loader.ts:790
handleTrackOrLevelPlaylist @ playlist-loader.ts:594
onSuccess @ playlist-loader.ts:352
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onLevelLoading @ playlist-loader.ts:175
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadingPlaylist @ level-controller.ts:663
scheduleLoading @ base-playlist-controller.ts:335
loadPlaylist @ level-controller.ts:641
set level @ level-controller.ts:499
set nextLoadLevel @ level-controller.ts:682
set nextLoadLevel @ hls.ts:776
startLoad @ stream-controller.ts:161
startLoad @ hls.ts:565
checkAutostartLoad @ playlist-loader.ts:400
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
handleMasterPlaylist @ playlist-loader.ts:517
onSuccess @ playlist-loader.ts:360
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:385
onManifestLoading @ playlist-loader.ts:162
emit @ index.js:203
emit @ hls.ts:386
trigger @ hls.ts:394
loadSource @ hls.ts:524
HlsJs @ HlsJs.ts:72
HlsPlayer @ HlsPlayer.ts:15
getVideoPlayer @ videoPlayerService.ts:144
init @ GSPlayer.tsx:219
(anonymous) @ GSPlayer.tsx:154
invokePassiveEffectCreate @ react-dom.development.js:23487
callCallback2 @ react-dom.development.js:3945
invokeGuardedCallbackDev @ react-dom.development.js:3994
invokeGuardedCallback @ react-dom.development.js:4056
flushPassiveEffectsImpl @ react-dom.development.js:23574
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
performSyncWorkOnRoot @ react-dom.development.js:22269
(anonymous) @ react-dom.development.js:11327
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushSyncCallbackQueueImpl @ react-dom.development.js:11322
flushSyncCallbackQueue @ react-dom.development.js:11309
flushPassiveEffectsImpl @ react-dom.development.js:23620
unstable_runWithPriority @ scheduler.development.js:468
runWithPriority$1 @ react-dom.development.js:11276
flushPassiveEffects @ react-dom.development.js:23447
(anonymous) @ react-dom.development.js:23324
workLoop @ scheduler.development.js:417
flushWork @ scheduler.development.js:390
performWorkUntilDeadline @ scheduler.development.js:157
15:10:48.767 base-stream-controller.ts:2230 [log] > [audio-stream-controller]: STOPPED->IDLE
15:10:48.767 base-stream-controller.ts:2230 [log] > [stream-controller]: STOPPED->IDLE

Chrome media internals output

{
  "properties": {
    "render_id": 852,
    "player_id": 1,
    "created": "2025-09-15 20:04:17.881934 UTC",
    "origin_url": "https://localhost:3000/",
    "kFrameUrl": "https://localhost:3000/",
    "kFrameTitle": "Genius Live Player",
    "url": "blob:https://localhost:3000/ff377fde-eecd-4d7a-a6a9-160e67af0795",
    "info": "ChunkDemuxer",
    "kRendererName": "RendererImpl",
    "pipeline_state": "kStopped",
    "error": "MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error. This may also occur as consequence of other MediaSource errors before HAVE_METADATA.",
    "event": "kWebMediaPlayerDestroyed"
  },
  "events": [
    {
      "time": 0,
      "key": "created",
      "value": "2025-09-15 20:04:17.881934 UTC"
    },
    {
      "time": 0.08500003814697266,
      "key": "origin_url",
      "value": "https://localhost:3000/"
    },
    {
      "time": 0.08800005912780762,
      "key": "kFrameUrl",
      "value": "https://localhost:3000/"
    },
    {
      "time": 0.09000003337860107,
      "key": "kFrameTitle",
      "value": "Genius Live Player"
    },
    {
      "time": 0.1380000114440918,
      "key": "url",
      "value": "blob:https://localhost:3000/ff377fde-eecd-4d7a-a6a9-160e67af0795"
    },
    {
      "time": 0.15400004386901855,
      "key": "info",
      "value": "ChunkDemuxer"
    },
    {
      "time": 0.16000008583068848,
      "key": "kRendererName",
      "value": "RendererImpl"
    },
    {
      "time": 0.38600003719329834,
      "key": "pipeline_state",
      "value": "kStarting"
    },
    {
      "time": 4643.199000000954,
      "key": "error",
      "value": "MediaSource endOfStream before demuxer initialization completes (before HAVE_METADATA) is treated as an error. This may also occur as consequence of other MediaSource errors before HAVE_METADATA."
    },
    {
      "time": 4643.37600004673,
      "key": "pipeline_state",
      "value": "kStopping"
    },
    {
      "time": 4643.398000001907,
      "key": "pipeline_state",
      "value": "kStopped"
    },
    {
      "time": 4643.379000067711,
      "key": "event",
      "value": "kWebMediaPlayerDestroyed"
    }
  ]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugDRMRegressionA bug introduced in a recent releaseRevisit-at-later-release-cycleWill revisit during release cycle indicated by the Milestone

    Type

    No type

    Projects

    Status
    Top priorities
    Status
    Done

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions