Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Widevine DRM Requests are sent twice #6636

Closed
5 tasks done
Benny739 opened this issue Aug 19, 2024 · 4 comments · Fixed by #6640 · May be fixed by Muhammetmyrat/video-plyr-hls#2
Closed
5 tasks done

Widevine DRM Requests are sent twice #6636

Benny739 opened this issue Aug 19, 2024 · 4 comments · Fixed by #6640 · May be fixed by Muhammetmyrat/video-plyr-hls#2

Comments

@Benny739
Copy link

Benny739 commented Aug 19, 2024

What version of Hls.js are you using?

1.5.14

What browser (including version) are you using?

128

What OS (including version) are you using?

MacOs 14.6.1

Test stream

https://codepen.io/benny739/pen/gONvBbw

Configuration

{
  "enableWorker": true,
  "lowLatencyMode": true,
  "widevineLicenseUrl": "https://drm-widevine-licensing.axtest.net/AcquireLicense",
  "emeEnabled": true,
  licenseXhrSetup: (
          xhr,
          url,
          keyContext,
          licenseChallenge,
        ) => {
            xhr.setRequestHeader('x-axdrm-message', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJiZWdpbl9kYXRlIjoiMjAwMC0wMS0wMVQwMDo1MTowNCswMzowMCIsImV4cGlyYXRpb25fZGF0ZSI6IjIwMjUtMTItMzFUMjM6NTk6NDArMDM6MDAiLCJjb21fa2V5X2lkIjoiZGRhYjgyZWMtMDM0YS00OGYxLWI1MmYtYWQ2YjAxNzI1NDBmIiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsInZlcnNpb24iOjIsImxpY2Vuc2UiOnsiZHVyYXRpb24iOjE3MjgwMCwiYWxsb3dfcGVyc2lzdGVuY2UiOnRydWV9LCJjb250ZW50X2tleV91c2FnZV9wb2xpY2llcyI6W3sibmFtZSI6IlBvbGljeSBBIiwiZmFpcnBsYXkiOnsiaGRjcCI6Ik5PTkUifX1dLCJjb250ZW50X2tleXNfc291cmNlIjp7ImlubGluZSI6W3siaWQiOiI2ZDgwYjcxNS1kOGQzLTQ1NmYtYjFiZC0zZTNhOGU4MDg3ZGUiLCJ1c2FnZV9wb2xpY3kiOiJQb2xpY3kgQSJ9XX0sInNlc3Npb24iOnsidXNlcl9pZCI6IkE5UEM4RUEzeHFiRjV4RmZ0RzZaTzM0S0JlMjMifX0sImlhdCI6MTcyNDA4NzAyOH0.yj5MnErR7qzi3ueiFurZ3MN4Duiqi3A35xPNKDXXn2E');
          }
}

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Load the codepen
  2. There are 4 requests sent to the AcquireLicense endpoint, it should only be 2 (dashjs and shaka send 2)

Expected behaviour

2 Requests are sent

What actually happened?

4 requests sent

Console output

hls.js@latest:1 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.5.14
hls.js@latest:1 [log] > stopLoad
hls.js@latest:1 [log] > loadSource:https://vod-qa-hdd-01.b-cdn.net/3InDYWsdUyklwEfMCl9j/6d80b715-d8d3-456f-b1bd-3e3a8e8087de/hls.m3u8
hls.js@latest:1 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.js@latest:1 [log] > attachMedia
hls.js@latest:1 [log] > [buffer-controller] created media source: MediaSource
hls.js@latest:1 [log] > [level-controller]: manifest loaded, 3 level(s) found, first bitrate: 821624
hls.js@latest:1 [log] > setting initial bwe to 821624
hls.js@latest:1 [log] > [buffer-controller] 2 bufferCodec event(s) expected
hls.js@latest:1 [log] > startLoad(-1)
hls.js@latest:1 [log] > [abr] picked start tier {"codecSet":"avc1,mp4a","videoRanges":["SDR"],"preferHDR":false,"minFramerate":29.97,"minBitrate":821624}
hls.js@latest:1 [info] > [abr] switch candidate:0->0 adjustedbw(821624)-bitrate=0 ttfb:0.1 avgDuration:0.0 maxFetchDuration:4.0 fetchDuration:0.1 firstSelection:true codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:-1
hls.js@latest:1 [log] > [level-controller]: Switching to level 0 (480p SDR avc1,mp4a @821624) from level -1
hls.js@latest:1 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in group(s): audio/mp4a
hls.js@latest:1 [log] > [audio-track-controller]: Switching to audio-track 0 "Deutsch" lang:de group:audio/mp4a channels:undefined
hls.js@latest:1 [log] > [audio-stream-controller]: Reset loading state
hls.js@latest:1 [log] > [audio-stream-controller]: STOPPED->IDLE
hls.js@latest:1 [log] > [level-controller]: Loading level index 0 with https://vod-qa-hdd-01.b-cdn.net/3InDYWsdUyklwEfMCl9j/6d80b715-d8d3-456f-b1bd-3e3a8e8087de/video-avc1-1.m3u8
hls.js@latest:1 [log] > [stream-controller]: STOPPED->IDLE
hls.js@latest:1 [log] > [audio-track-controller]: loading audio-track playlist 0 "Deutsch" lang:de group:audio/mp4a
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->STOPPED
hls.js@latest:1 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
hls.js@latest:1 [log] > [subtitle-stream-controller]: STOPPED->IDLE
hls.js@latest:1 [log] > [buffer-controller] Media source opened
gONvBbw:1 <meta name="apple-mobile-web-app-capable" content="yes"> is deprecated. Please include <meta name="mobile-web-app-capable" content="yes">Understand this warning
Third-party cookie will be blocked in future Chrome versions as part of Privacy Sandbox.Understand this warning
hls.js@latest:1 [log] > [stream-controller]: Level 0 loaded [0,50][part-50--1], cc [0, 0] duration:301.5679333333332
hls.js@latest:1 [log] > [buffer-controller] Updating Media Source duration to 301.568
hls.js@latest:1 [log] > [eme] Selecting key-system from fragment (sn: 0 main: 0) key formats com.apple.streamingkeydelivery, urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed
hls.js@latest:1 [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.64001F\"","robustness":"","encryptionScheme":null},{"contentType":"video/mp4; codecs=\"avc1.640028\"","robustness":"","encryptionScheme":null}]}]
hls.js@latest:1 It is recommended that a robustness level be specified. Not specifying the robustness level could result in unexpected behavior.
hls.js@latest:1 [log] > [stream-controller]: Loading fragment initSegment cc: 0 of [0-50] level: 0, target: 0
hls.js@latest:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
hls.js@latest:1 [log] > [audio-track-controller]: Audio track 0 "Deutsch" lang:de group:audio/mp4a loaded [0-50]
hls.js@latest:1 [log] > [audio-stream-controller]: Audio track 0 loaded [0,50][part-50--1],duration:301.54666666666657
hls.js@latest:1 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment initSegment cc: 0 of [0-50] track: 0, target: 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
hls.js@latest:1 [log] > [eme] Access for key-system "com.widevine.alpha" obtained
hls.js@latest:1 [log] > [eme] No Server Certificate in config.drmSystems["com.widevine.alpha"]
hls.js@latest:1 [log] > [eme] Create media-keys for "com.widevine.alpha"
hls.js@latest:1 [log] > [eme] Media-keys created for "com.widevine.alpha"
gONvBbw:1 Unchecked runtime.lastError: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was receivedUnderstand this error
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 0 of [0-50], level 0
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [eme] Starting session for key (keyId: 3162642d336533613865383038376465 format: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" method: SAMPLE-AES uri: data:text/plain;base64,AAAAhHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGQSEG2AtxXY00Vvsb0+Oo6Ah94aJDBjNmJjY2IxLTY4ZWQtNGY3OS04Nzc5LTM5Y2Y2OTMyMTJhOSIkNmQ4MGI3MTUtZDhkMy00NTZmLWIxYmQtM2UzYThlODA4N2RlSPPGiZsG)
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-50] level: 0, target: 0
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [eme] Handle encrypted media sn: 0 main: 0 using key (keyId: 3162642d336533613865383038376465 format: "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" method: SAMPLE-AES uri: data:text/plain;base64,AAAAhHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGQSEG2AtxXY00Vvsb0+Oo6Ah94aJDBjNmJjY2IxLTY4ZWQtNGY3OS04Nzc5LTM5Y2Y2OTMyMTJhOSIkNmQ4MGI3MTUtZDhkMy00NTZmLWIxYmQtM2UzYThlODA4N2RlSPPGiZsG)
hls.js@latest:1 [log] > [eme] Setting media-keys for "com.widevine.alpha"
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 0 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-50] track: 0, target: 0
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [eme] Media-keys set for "com.widevine.alpha"
hls.js@latest:1 [log] > [eme] Creating key-system session "com.widevine.alpha" keyId: 3162642d336533613865383038376465
hls.js@latest:1 [log] > [eme] Generating key-session request for "playlist-key": 3162642d336533613865383038376465 (init data type: cenc length: 132)
hls.js@latest:1 [log] > [eme] Request generated for key-session "BA9782E64B3D3C360227A72443E63229" keyId: 3162642d336533613865383038376465
hls.js@latest:1 [log] > [eme] "license-request" message event for session "BA9782E64B3D3C360227A72443E63229" message size: 2
hls.js@latest:1 [log] > [eme] Sending license request to URL: https://drm-widevine-licensing.axtest.net/AcquireLicense
pen.js:15 https://drm-widevine-licensing.axtest.net/AcquireLicense {decryptdata: t, keySystem: 'com.widevine.alpha', mediaKeys: MediaKeys, mediaKeysSession: MediaKeySession, keyStatus: 'status-pending', …} 2
hls.js@latest:1 [log] > [eme] License received 706
hls.js@latest:1 [log] > [eme] Updating key-session "BA9782E64B3D3C360227A72443E63229" for keyID 3162642d336533613865383038376465
      } (data length: 706)
hls.js@latest:1 [log] > [eme] "license-request" message event for session "BA9782E64B3D3C360227A72443E63229" message size: 3986
hls.js@latest:1 [log] > [eme] Sending license request to URL: https://drm-widevine-licensing.axtest.net/AcquireLicense
pen.js:15 https://drm-widevine-licensing.axtest.net/AcquireLicense {decryptdata: t, keySystem: 'com.widevine.alpha', mediaKeys: MediaKeys, mediaKeysSession: MediaKeySession, keyStatus: 'status-pending', …} 3986
pen.js:15 https://drm-widevine-licensing.axtest.net/AcquireLicense {decryptdata: t, keySystem: 'com.widevine.alpha', mediaKeys: MediaKeys, mediaKeysSession: MediaKeySession, keyStatus: 'status-pending', …} 3986
hls.js@latest:1 [log] > [eme] License received 609
hls.js@latest:1 [log] > [eme] Updating key-session "BA9782E64B3D3C360227A72443E63229" for keyID 3162642d336533613865383038376465
      } (data length: 609)
 [log] > [eme] key status change "usable" for keyStatuses keyId: 6d80b715d8d3456fb1bd3e3a8e8087de session keyId: 3162642d336533613865383038376465 uri: data:text/plain;base64,AAAAhHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAGQSEG2AtxXY00Vvsb0+Oo6Ah94aJDBjNmJjY2IxLTY4ZWQtNGY3OS04Nzc5LTM5Y2Y2OTMyMTJhOSIkNmQ4MGI3MTUtZDhkMy00NTZmLWIxYmQtM2UzYThlODA4N2RlSPPGiZsG
 [log] > injecting Web Worker for "main"
 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
        initSegmentChange: true
 [log] > injecting Web Worker for "audio"
 [log] > [audio-stream-controller]: Unknown video PTS for cc 0, waiting for video PTS before demuxing audio frag 0 of [0 ,50],track 0
 [log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
 [log] > [stream-controller]: Loaded fragment 0 of level 0
 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
 [log] > Debug logs enabled for "audio" in hls.js version 1.5.14
 [log] > Debug logs enabled for "main" in hls.js version 1.5.14
 [log] > [stream-controller]: FRAG_LOADING->PARSING
 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.64001F/avc1.64001F]
 [log] > [buffer-controller] 1 bufferCodec event(s) expected video
 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 0
 [log] > [audio-stream-controller]: WAITING_INIT_PTS->FRAG_LOADING
 [log] > [transmuxer-interface, audio]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 0
        initSegmentChange: true
 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[level/parsed]=[mp4a.40.2/mp4a.40.2]
hls.js@latest:1 [log] > [buffer-controller] 0 bufferCodec event(s) expected audio
hls.js@latest:1 [log] > [buffer-controller] creating sourceBuffer(video/mp4;codecs=avc1.64001F)
hls.js@latest:1 [log] > [buffer-controller] creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
hls.js@latest:1 [log] > [stream-controller]: Alternate track found, use video.buffered to schedule main fragment loading
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [eme] Setting media-keys for "com.widevine.alpha"
hls.js@latest:1 [log] > [eme] Media-keys set for "com.widevine.alpha"
hls.js@latest:1 [log] > [eme] Creating key-system session "com.widevine.alpha" keyId: 456fb1bd3e3a8e8087de1a2430633662
hls.js@latest:1 [log] > [eme] Generating key-session request for "encrypted-event-no-match": 456fb1bd3e3a8e8087de1a2430633662 (init data type: cenc length: 132)
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 (frag:[0.000-6.016] > buffer:[0.000-5.995])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 1 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 1 cc: 0 of [0-50] track: 0, target: 6.016
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 0 of level 0 (frag:[0.000-6.006] > buffer:[0.000-6.006])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [info] > [abr] switch candidate:0->2 adjustedbw(13655022)-bitrate=10894791 ttfb:0.0 avgDuration:6.0 maxFetchDuration:6.0 fetchDuration:1.3 firstSelection:false codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:0
hls.js@latest:1 [log] > [stream-controller]: Adapting to level 2 from level 0
hls.js@latest:1 [log] > [level-controller]: Switching to level 2 (1080p SDR avc1,mp4a @2760231) from level 0
hls.js@latest:1 [log] > [level-controller]: Loading level index 2 with https://vod-qa-hdd-01.b-cdn.net/3InDYWsdUyklwEfMCl9j/6d80b715-d8d3-456f-b1bd-3e3a8e8087de/video-avc1-3.m3u8
hls.js@latest:1 [log] > [stream-controller]: IDLE->WAITING_LEVEL
hls.js@latest:1 [log] > [eme] Request generated for key-session "4672899F3150C155F90C1EE82E5CF53B" keyId: 456fb1bd3e3a8e8087de1a2430633662
hls.js@latest:1 [log] > [eme] "license-request" message event for session "4672899F3150C155F90C1EE82E5CF53B" message size: 2
hls.js@latest:1 [log] > [eme] Sending license request to URL: https://drm-widevine-licensing.axtest.net/AcquireLicense
pen.js:15 https://drm-widevine-licensing.axtest.net/AcquireLicense {decryptdata: t, keySystem: 'com.widevine.alpha', mediaKeys: MediaKeys, mediaKeysSession: MediaKeySession, keyStatus: 'status-pending', …} 2
hls.js@latest:1 [log] > [stream-controller]: Level 2 loaded [0,50][part-50--1], cc [0, 0] duration:301.5679333333332
hls.js@latest:1 [log] > [stream-controller]: WAITING_LEVEL->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading fragment initSegment cc: 0 of [0-50] level: 2, target: 0
hls.js@latest:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
hls.js@latest:1 [log] > [eme] License received 706
hls.js@latest:1 [log] > [eme] Updating key-session "4672899F3150C155F90C1EE82E5CF53B" for keyID 456fb1bd3e3a8e8087de1a2430633662
      } (data length: 706)
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 1 of level 0
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 1 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-50] level: 2, target: 6.006
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 1 of track 0 (frag:[6.016-12.011] > buffer:[0.000-11.989])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 2 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 2 cc: 0 of [0-50] track: 0, target: 12.011
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [eme] "license-request" message event for session "4672899F3150C155F90C1EE82E5CF53B" message size: 3986
hls.js@latest:1 [log] > [eme] Sending license request to URL: https://drm-widevine-licensing.axtest.net/AcquireLicense
pen.js:15 https://drm-widevine-licensing.axtest.net/AcquireLicense {decryptdata: t, keySystem: 'com.widevine.alpha', mediaKeys: MediaKeys, mediaKeysSession: MediaKeySession, keyStatus: 'status-pending', …} 3986
pen.js:15 https://drm-widevine-licensing.axtest.net/AcquireLicense {decryptdata: t, keySystem: 'com.widevine.alpha', mediaKeys: MediaKeys, mediaKeysSession: MediaKeySession, keyStatus: 'status-pending', …} 3986
hls.js@latest:1 [log] > [eme] License received 609
hls.js@latest:1 [log] > [eme] Updating key-session "4672899F3150C155F90C1EE82E5CF53B" for keyID 456fb1bd3e3a8e8087de1a2430633662
      } (data length: 609)
hls.js@latest:1 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 2 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 6.006
        initSegmentChange: true
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 1 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640028/avc1.640028]
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 1 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 2 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 2 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 2 of track 0 (frag:[12.011-18.027] > buffer:[0.000-18.005])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 1 of level 2 (frag:[6.006-12.012] > buffer:[0.000-12.012])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 2 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-50] level: 2, target: 12.012
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [eme] key status change "usable" for keyStatuses keyId: 6d80b715d8d3456fb1bd3e3a8e8087de session keyId: 456fb1bd3e3a8e8087de1a2430633662 uri: 456fb1bd3e3a8e8087de1a2430633662
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 3 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 3 cc: 0 of [0-50] track: 0, target: 18.027
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 3 of level 0
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 2 of level 2
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 3 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 2 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 3 of track 0 (frag:[18.027-24.021] > buffer:[0.000-24.000])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 2 of level 2 (frag:[12.012-18.018] > buffer:[0.000-18.018])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 3 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-50] level: 2, target: 18.018
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 4 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 4 cc: 0 of [0-50] track: 0, target: 24.021
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 3 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 3 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 3 of level 2 (frag:[18.018-24.024] > buffer:[0.000-24.024])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 4 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-50] level: 2, target: 24.024
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 4 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 4 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 4 of track 0 (frag:[24.021-30.037] > buffer:[0.000-30.016])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 4 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 4 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 4 of level 2 (frag:[24.024-30.030] > buffer:[0.000-30.030])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 5 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 5 cc: 0 of [0-50] level: 2, target: 30.03
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 5 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 5 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 5 of level 2 (frag:[30.030-36.036] > buffer:[0.000-36.036])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 6 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 6 cc: 0 of [0-50] level: 2, target: 36.036
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 5 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 5 cc: 0 of [0-50] track: 0, target: 30.037
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 5 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 5 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 5 of track 0 (frag:[30.037-36.032] > buffer:[0.000-36.011])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 6 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 6 cc: 0 of [0-50] track: 0, target: 36.032
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 6 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 6 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 6 of level 2 (frag:[36.036-42.042] > buffer:[0.000-42.042])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 7 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 7 cc: 0 of [0-50] level: 2, target: 42.042
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 6 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 6 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 6 of track 0 (frag:[36.032-42.048] > buffer:[0.000-42.027])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 7 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 7 cc: 0 of [0-50] track: 0, target: 42.048
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 7 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 7 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 7 of track 0 (frag:[42.048-48.043] > buffer:[0.000-48.021])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 7 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 7 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 7 of level 2 (frag:[42.042-48.048] > buffer:[0.000-48.048])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 8 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 8 cc: 0 of [0-50] level: 2, target: 48.048
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 8 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 8 cc: 0 of [0-50] track: 0, target: 48.043
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 8 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 8 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 8 of track 0 (frag:[48.043-54.059] > buffer:[0.000-54.037])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 8 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 8 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 8 of level 2 (frag:[48.048-54.054] > buffer:[0.000-54.054])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 9 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 9 cc: 0 of [0-50] level: 2, target: 54.054
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 9 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 9 cc: 0 of [0-50] track: 0, target: 54.059
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 9 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 9 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 9 of level 0
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 9 of level 2 (frag:[54.054-60.060] > buffer:[0.000-60.060])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 10 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 10 cc: 0 of [0-50] level: 2, target: 60.06
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 9 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 9 of track 0 (frag:[54.059-60.053] > buffer:[0.000-60.032])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 10 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 10 cc: 0 of [0-50] track: 0, target: 60.053
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 10 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 10 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 10 of track 0 (frag:[60.053-66.069] > buffer:[0.000-66.048])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 10 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 10 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 10 of level 2 (frag:[60.060-66.066] > buffer:[0.000-66.066])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 11 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 11 cc: 0 of [0-50] level: 2, target: 66.066
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 11 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 11 cc: 0 of [0-50] track: 0, target: 66.069
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 11 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 11 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 11 of track 0 (frag:[66.069-72.064] > buffer:[0.000-72.043])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 11 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 11 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 11 of level 2 (frag:[66.066-72.072] > buffer:[0.000-72.072])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 12 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 12 cc: 0 of [0-50] level: 2, target: 72.072
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 12 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 12 cc: 0 of [0-50] track: 0, target: 72.064
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 12 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 12 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 12 of track 0 (frag:[72.064-78.080] > buffer:[0.000-78.059])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 12 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 12 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 12 of level 2 (frag:[72.072-78.078] > buffer:[0.000-78.078])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 13 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 13 cc: 0 of [0-50] level: 2, target: 78.078
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 13 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 13 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 13 of level 2 (frag:[78.078-84.084] > buffer:[0.000-84.084])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 14 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 14 cc: 0 of [0-50] level: 2, target: 84.084
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 13 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 13 cc: 0 of [0-50] track: 0, target: 78.08
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 13 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 13 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 13 of track 0 (frag:[78.080-84.075] > buffer:[0.000-84.053])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 14 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 14 cc: 0 of [0-50] track: 0, target: 84.075
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 14 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 14 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 14 of level 2 (frag:[84.084-90.090] > buffer:[0.000-90.090])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 15 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 15 cc: 0 of [0-50] level: 2, target: 90.09
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 14 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 14 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 14 of track 0 (frag:[84.075-90.091] > buffer:[0.000-90.069])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 15 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 15 cc: 0 of [0-50] track: 0, target: 90.091
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 15 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 15 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 15 of track 0 (frag:[90.091-96.085] > buffer:[0.000-96.064])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 15 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 15 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 15 of level 2 (frag:[90.090-96.096] > buffer:[0.000-96.096])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 16 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 16 cc: 0 of [0-50] level: 2, target: 96.096
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 16 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 16 cc: 0 of [0-50] track: 0, target: 96.085
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 16 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 16 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 16 of track 0 (frag:[96.085-102.101] > buffer:[0.000-102.080])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 16 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 16 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 16 of level 2 (frag:[96.096-102.102] > buffer:[0.000-102.102])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 17 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 17 cc: 0 of [0-50] level: 2, target: 102.102
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 17 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 17 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 17 of level 2 (frag:[102.102-108.108] > buffer:[0.000-108.108])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 18 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 18 cc: 0 of [0-50] level: 2, target: 108.108
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 17 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 17 cc: 0 of [0-50] track: 0, target: 102.101
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 18 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 18 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 18 of level 2 (frag:[108.108-114.114] > buffer:[0.000-114.114])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 19 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 19 cc: 0 of [0-50] level: 2, target: 114.114
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 17 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 17 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 17 of track 0 (frag:[102.101-108.117] > buffer:[0.000-108.096])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 18 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 18 cc: 0 of [0-50] track: 0, target: 108.117
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 19 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 19 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 19 of level 2 (frag:[114.114-120.120] > buffer:[0.000-120.120])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 20 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 20 cc: 0 of [0-50] level: 2, target: 120.12
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 18 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 18 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 18 of track 0 (frag:[108.117-114.112] > buffer:[0.000-114.091])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 19 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 19 cc: 0 of [0-50] track: 0, target: 114.112
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 19 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 19 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 19 of track 0 (frag:[114.112-120.128] > buffer:[0.000-120.107])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 20 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 20 cc: 0 of [0-50] track: 0, target: 120.128
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 20 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 20 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 20 of level 2 (frag:[120.120-126.126] > buffer:[0.000-126.126])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 21 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 21 cc: 0 of [0-50] level: 2, target: 126.126
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 21 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 21 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 21 of level 2 (frag:[126.126-132.132] > buffer:[0.000-132.132])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 22 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 22 cc: 0 of [0-50] level: 2, target: 132.132
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 20 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 20 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 20 of track 0 (frag:[120.128-126.123] > buffer:[0.000-126.101])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 21 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 21 cc: 0 of [0-50] track: 0, target: 126.123
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
 [log] > [audio-stream-controller]: Loaded fragment 21 of level 0
 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
 [log] > [transmuxer.ts]: Flushed fragment 21 of level 0
 [log] > [audio-stream-controller]: PARSING->PARSED
 [log] > [audio-stream-controller]: Buffered audio sn: 21 of track 0 (frag:[126.123-132.139] > buffer:[0.000-132.117])
 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 22 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 22 cc: 0 of [0-50] track: 0, target: 132.139
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 22 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 22 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 22 of level 2 (frag:[132.132-138.138] > buffer:[0.000-138.138])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 23 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 23 cc: 0 of [0-50] level: 2, target: 138.138
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 22 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 22 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 22 of track 0 (frag:[132.139-138.133] > buffer:[0.000-138.112])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 23 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 23 cc: 0 of [0-50] track: 0, target: 138.133
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 23 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 23 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 23 of level 2 (frag:[138.138-144.144] > buffer:[0.000-144.144])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 24 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 24 cc: 0 of [0-50] level: 2, target: 144.144
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 23 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 23 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 23 of track 0 (frag:[138.133-144.149] > buffer:[0.000-144.128])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 24 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 24 cc: 0 of [0-50] track: 0, target: 144.149
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 24 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 24 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 24 of track 0 (frag:[144.149-150.144] > buffer:[0.000-150.123])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 24 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 24 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 24 of level 2 (frag:[144.144-150.150] > buffer:[0.000-150.150])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 25 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 25 cc: 0 of [0-50] level: 2, target: 150.15
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 25 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 25 cc: 0 of [0-50] track: 0, target: 150.144
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 25 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 25 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 25 of level 2 (frag:[150.150-156.156] > buffer:[0.000-156.156])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 26 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 26 cc: 0 of [0-50] level: 2, target: 156.156
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 25 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 25 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 25 of track 0 (frag:[150.144-156.160] > buffer:[0.000-156.139])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 26 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 26 cc: 0 of [0-50] track: 0, target: 156.16
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 26 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 26 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 26 of level 0
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 26 of level 2 (frag:[156.156-162.162] > buffer:[0.000-162.162])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 27 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 27 cc: 0 of [0-50] level: 2, target: 162.162
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 26 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 26 of track 0 (frag:[156.160-162.155] > buffer:[0.000-162.133])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 27 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 27 cc: 0 of [0-50] track: 0, target: 162.155
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 27 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 27 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 27 of track 0 (frag:[162.155-168.171] > buffer:[0.000-168.149])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 27 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 27 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 27 of level 2 (frag:[162.162-168.168] > buffer:[0.000-168.168])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [stream-controller]: Loading key for 28 of [0-50], level 2
hls.js@latest:1 [log] > [stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loading fragment 28 cc: 0 of [0-50] level: 2, target: 168.168
hls.js@latest:1 [log] > [stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [stream-controller]: Loaded fragment 28 of level 2
hls.js@latest:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 28 of level 2
hls.js@latest:1 [log] > [stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [stream-controller]: Buffered main sn: 28 of level 2 (frag:[168.168-174.174] > buffer:[0.000-174.174])
hls.js@latest:1 [log] > [stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 28 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 28 cc: 0 of [0-50] track: 0, target: 168.171
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 28 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 28 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 28 of track 0 (frag:[168.171-174.165] > buffer:[0.000-174.144])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE
hls.js@latest:1 [log] > [audio-stream-controller]: Loading key for 29 of [0-50], track 0
hls.js@latest:1 [log] > [audio-stream-controller]: IDLE->KEY_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loading fragment 29 cc: 0 of [0-50] track: 0, target: 174.165
hls.js@latest:1 [log] > [audio-stream-controller]: KEY_LOADING->FRAG_LOADING
hls.js@latest:1 [log] > [audio-stream-controller]: Loaded fragment 29 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
hls.js@latest:1 [log] > [transmuxer.ts]: Flushed fragment 29 of level 0
hls.js@latest:1 [log] > [audio-stream-controller]: PARSING->PARSED
hls.js@latest:1 [log] > [audio-stream-controller]: Buffered audio sn: 29 of track 0 (frag:[174.165-180.181] > buffer:[0.000-180.160])
hls.js@latest:1 [log] > [audio-stream-controller]: PARSED->IDLE

Chrome media internals output

No response

@Benny739 Benny739 added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Aug 19, 2024
@robwalch
Copy link
Collaborator

robwalch commented Aug 20, 2024

HI @Benny739,

License requests are made for each "license-request" event from EME. The reason there are four requests instead of two is that two key sessions are generated instead of one. The first is for the KEY URI in the playlist, and the second is for the key ID extracted from the "encrypted" event data. There is an expectation that these match. When that is not met, a second session is started (as seen in the logs above):

[eme] Generating key-session request for "playlist-key": 3162642d336533613865383038376465 (init data type: cenc length: 132)

[eme] Generating key-session request for "encrypted-event-no-match": 456fb1bd3e3a8e8087de1a2430633662 (init data type: cenc length: 132)

The keyId found in the media from the "encrypted" event (456f...) does not match the parsed playlist KEY URI (3162...). Since no match is found (let keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] > undefined) a new session is started for the second key.

Here is where eme-controller handles the "encrypted" event:

// Support clear-lead key-session creation (otherwise depend on playlist keys)
const psshInfo = parsePssh(initData);
if (psshInfo === null) {
return;
}
if (
psshInfo.version === 0 &&
psshInfo.systemId === KeySystemIds.WIDEVINE &&
psshInfo.data
) {
keyId = psshInfo.data.subarray(8, 24);
}
keySystemDomain = keySystemIdToKeySystemDomain(
psshInfo.systemId as KeySystemIds,
);
}
if (!keySystemDomain || !keyId) {
return;
}
const keyIdHex = Hex.hexDump(keyId);
const { keyIdToKeySessionPromise, mediaKeySessions } = this;
let keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex];
for (let i = 0; i < mediaKeySessions.length; i++) {
// Match playlist key
const keyContext = mediaKeySessions[i];
const decryptdata = keyContext.decryptdata;
if (decryptdata.pssh || !decryptdata.keyId) {
continue;
}
const oldKeyIdHex = Hex.hexDump(decryptdata.keyId);
if (
keyIdHex === oldKeyIdHex ||
decryptdata.uri.replace(/-/g, '').indexOf(keyIdHex) !== -1
) {
keySessionContextPromise = keyIdToKeySessionPromise[oldKeyIdHex];
delete keyIdToKeySessionPromise[oldKeyIdHex];
decryptdata.pssh = new Uint8Array(initData);
decryptdata.keyId = keyId;
keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] =
keySessionContextPromise.then(() => {
return this.generateRequestWithPreferredKeySession(
keyContext,
initDataType,
initData,
'encrypted-event-key-match',
);
});
break;
}
}
if (!keySessionContextPromise) {
// Clear-lead key (not encountered in playlist)
keySessionContextPromise = keyIdToKeySessionPromise[keyIdHex] =
this.getKeySystemSelectionPromise([keySystemDomain]).then(
({ keySystem, mediaKeys }) => {
this.throwIfDestroyed();
const decryptdata = new LevelKey(
'ISO-23001-7',
keyIdHex,
keySystemToKeySystemFormat(keySystem) ?? '',
);
decryptdata.pssh = new Uint8Array(initData);
decryptdata.keyId = keyId as Uint8Array;
return this.attemptSetMediaKeys(keySystem, mediaKeys).then(() => {
this.throwIfDestroyed();
const keySessionContext = this.createMediaKeySessionContext({
decryptdata,
keySystem,
mediaKeys,
});
return this.generateRequestWithPreferredKeySession(
keySessionContext,
initDataType,
initData,
'encrypted-event-no-match',

I'm not sure if the mismatch is unintentional or an issue in parsePssh not parsing the initData correctly.

There are 4 requests sent to the AcquireLicense endpoint, it should only be 2 (dashjs and shaka send 2)

Other player libraries may ignore playlist keys and only integrate with EME using the data in "encrypted" events. HLS.js has access to the playlist key data in advance and uses them to generate sessions on segment load. The encrypted event is to be reconciled later (or the reverse in the case of "clear-lead" where the KEY tag shows up after some number of clear segments with boxes that produce the "encrypted" event).

We could add an option to determine if both sources should be reconciled as they are now, or if only one (playlist or encrypted event keys) should be used. I prefer that the eme-controller be able to resolve this.

You can work around this by filtering which sessions are generated by adding a a generateRequest filter. Returning a result with null data will cause the key to be ignored:

(working example forked from above https://codepen.io/robwalch/pen/yLdvQbL)

var hls = new Hls({
  debug: true,
  enableWorker: true,
  emeEnabled: true,
  drmSystems: {
    'com.widevine.alpha': {
      licenseUrl: "https://drm-widevine-licensing.axtest.net/AcquireLicense",
      generateRequest: (initDataType, initData, keyContext) => {
        // Only generate sessions for playlist KEY-URIs.
        // Change filter to 'ISO-23001-7' to only allow "encrypted" event initData.
        if (keyContext.decryptdata.method === 'SAMPLE-AES') {
          return  { initDataType,  initData };
        } else {
          return { initDataType,  initData: null };
        }
      }
    }
  },
  licenseXhrSetup: (
    xhr,
    url,
    keyContext,
    licenseChallenge,
  ) => {
    if (licenseChallenge.length > 10) {
      xhr.open('POST', url, true);
      xhr.setRequestHeader('x-axdrm-message', '...');
    }
  }
});

Another option would be to remove the "encrypted" event listener on licenseXhrSetup:

if (keyContext.decryptdata.method = 'SAMPLE-AES') {
  hls.media.removeEventListener('encrypted', hls.emeController.onMediaEncrypted);
}

robwalch added a commit that referenced this issue Aug 21, 2024
robwalch added a commit that referenced this issue Aug 21, 2024
@robwalch robwalch added this to the 1.5.15 milestone Aug 21, 2024
@robwalch robwalch added Confirmed and removed Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Aug 21, 2024
@robwalch
Copy link
Collaborator

Hi @Benny739,

I got to the bottom of it and have a fix in #6640. If everything checks out I'll cherry-pick it into patch/v1.5.x and cut a patch (v1.5.15) so that you don't need a workaround to avoid the redundant session/license requests.

Thanks for reporting the issue and providing an example. It was a great help!

@robwalch robwalch added the DRM label Aug 21, 2024
@robwalch robwalch changed the title widevine DRM Requests are sent twice Widevine DRM Requests are sent twice Aug 21, 2024
robwalch added a commit that referenced this issue Aug 22, 2024
#6640)

* Parse multiple pssh from "encrypted" init data and fix Widevine key ID extraction for playlist match
Fixes #6636

* Logging and assertion improvements per @cjpillsbury's review

* Logging and assertion improvements per @cjpillsbury's review

(cherry picked from commit a960251)
@robwalch
Copy link
Collaborator

@Benny739 We've release v1.15.15 with a fix for this issue. Let me know if that works for you.

If you're able to I'd also like to verify that PlayReady is working with your asset if you could share the license URL. You can reach out directly on video-dev slack if you like. Thanks!

@Benny739
Copy link
Author

It works perfectly now, thank you for your help.
We're not using playready, so I'm sorry I can't help here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment