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

Stalling after a few seconds in Chrome with a Cloudflare Streams video #5797

Closed
5 tasks done
bhayward93 opened this issue Sep 4, 2023 · 13 comments
Closed
5 tasks done

Comments

@bhayward93
Copy link

bhayward93 commented Sep 4, 2023

What version of Hls.js are you using?

v1.4.11-0.canary.9504

What browser (including version) are you using?

Chrome Version 116.0.5845.96 (Official Build) (64-bit)

What OS (including version) are you using?

Ubuntu 20.04 (reported across a wide range of devices)

Test stream

https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9

Configuration

{
  "debug": true,
  "enableWorker": true,
  "lowLatencyMode": true,
  "backBufferLength": 90
}

Additional player setup steps

No additional steps, just note that I advise testing in Chrome as this issue is not present in Firefox.

Checklist

Steps to reproduce

  1. Visit the demo link
  2. Play, and wait for up to 6 seconds.

Expected behaviour

Video should continue playing.

What actually happened?

The video freezes after a few seconds.

Console output

main.js:339 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
logger.ts:74 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.4.11-0.canary.9504
hls.ts:418 [log] > stopLoad
hls.ts:386 [log] > loadSource:https://customer-gh08u53vbkhozibb.cloudflarestream.com/db17d0e8887c7c97743aed2764562074/manifest/video.m3u8
stream-controller.ts:569 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:356 [log] > attachMedia
buffer-controller.ts:186 [log] > [buffer-controller] created media source: MediaSource
level-controller.ts:320 [log] > [level-controller]: manifest loaded, 5 level(s) found, first bitrate: 2297540
abr-controller.ts:58 [log] > setting initial bwe to 2297540
buffer-controller.ts:175 [log] > [buffer-controller] 2 bufferCodec event(s) expected
abr-controller.ts:778 [info] > [abr] switch candidate:3->3 adjustedbw(2297540)-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.ts:407 [log] > startLoad(-1)
abr-controller.ts:778 [info] > [abr] switch candidate:3->3 adjustedbw(2297540)-bitrate=0 ttfb:0.1 avgDuration:0.0 maxFetchDuration:4.0 fetchDuration:0.1 firstSelection:true codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:-1
level-controller.ts:415 [log] > [level-controller]: Switching to level 3 (720p SDR avc1,mp4a @2297540) from level -1
audio-track-controller.ts:138 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in group:group_audio
audio-track-controller.ts:199 [log] > [audio-track-controller]: Switching to audio-track 0 "original" lang:en-4fd9e51c group:group_audio
base-stream-controller.ts:1640 [log] > [audio-stream-controller]: Reset loading state
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: STOPPED->IDLE
level-controller.ts:597 [log] > [level-controller]: Loading level index 3 with URI 1/1 https://customer-gh08u53vbkhozibb.cloudflarestream.com/db17d0e8887c7c97743aed2764562074/manifest/stream_t58648941e4e431930c231299899a5c6b_r503647696.m3u8?useMezzanine=false
base-stream-controller.ts:1784 [log] > [stream-controller]: STOPPED->IDLE
audio-track-controller.ts:279 [log] > [audio-track-controller]: loading audio-track playlist 0 "original" lang:en-4fd9e51c group:group_audio
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
base-stream-controller.ts:1784 [log] > [subtitle-stream-controller]: STOPPED->IDLE
buffer-controller.ts:971 [log] > [buffer-controller] Media source opened
stream-controller.ts:634 [log] > [stream-controller]: Level 3 loaded [0,258][part-258--1], cc [0, 0] duration:1035.89
buffer-controller.ts:850 [log] > [buffer-controller] Updating Media Source duration to 1035.890
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-258] level: 3, target: 0
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
timeline-chart.ts:754 Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true. See: https://html.spec.whatwg.org/multipage/canvas.html#concept-canvas-will-read-frequently
drawLineX @ timeline-chart.ts:754
drawCurrentTime @ timeline-chart.ts:728
afterRender @ timeline-chart.ts:73
notify @ Chart.js:8032
onComplete @ Chart.js:9785
render @ Chart.js:9811
update @ Chart.js:9681
update @ timeline-chart.ts:252
(anonymous) @ timeline-chart.ts:263
requestAnimationFrame (async)
updateOnRepaint @ timeline-chart.ts:263
updateLevelOrTrack @ timeline-chart.ts:464
(anonymous) @ main.js:1671
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
onLevelLoaded @ stream-controller.ts:670
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
handlePlaylistLoaded @ playlist-loader.ts:676
handleTrackOrLevelPlaylist @ playlist-loader.ts:498
onSuccess @ playlist-loader.ts:314
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:347
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
loadPlaylist @ level-controller.ts:613
set @ level-controller.ts:446
set @ level-controller.ts:631
set @ hls.ts:551
startLoad @ stream-controller.ts:143
(anonymous) @ hls.ts:410
startLoad @ hls.ts:409
filterAndSortMediaOptions @ level-controller.ts:359
onManifestLoaded @ level-controller.ts:172
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
handleMasterPlaylist @ playlist-loader.ts:424
onSuccess @ playlist-loader.ts:322
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:347
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
loadSource @ hls.ts:396
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 9 more frames
Show less
audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "original" lang:en-4fd9e51c group:group_audio loaded [0-258]
audio-stream-controller.ts:503 [log] > [audio-stream-controller]: Track 0 loaded [0,258][part-258--1],duration:1035.8896400000008
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-258] track: 0, target: 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:89 [log] > injecting Web Worker for "audio"
audio-stream-controller.ts:616 [log] > [audio-stream-controller]: Unknown video PTS for cc 0, waiting for video PTS before demuxing audio frag 0 of [0 ,258],track 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
transmuxer-interface.ts:89 [log] > injecting Web Worker for "main"
transmuxer-interface.ts:231 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 3 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
        initSegmentChange: true
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 0 of level 3
favicon.ico:1     GET https://hlsjs-dev.video-dev.org/favicon.ico 404
blob:https://hlsjs-dev.video-dev.org/22f6ea50-ed9a-42ef-a318-91eb63eb9530:544 [log] > Debug logs enabled for "audio" in hls.js version 1.4.11-0.canary.9504
blob:https://hlsjs-dev.video-dev.org/00173bcf-82e2-418e-919a-4b4d1e326b85:544 [log] > Debug logs enabled for "main" in hls.js version 1.4.11-0.canary.9504
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1300 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.4d4020/avc1.64001f]
audio-stream-controller.ts:128 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 3000
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: WAITING_INIT_PTS->FRAG_LOADING
transmuxer-interface.ts:231 [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
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 0 of level 3
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: reset next timestamp
transmuxer-interface.ts:383 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3
transmuxer-interface.ts:383 [log] > parsed codec:mp4a.40.5, rate:48000, channels:2
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:869 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[level/parsed]=[mp4a.40.2/mp4a.40.5]
buffer-controller.ts:930 [log] > [buffer-controller] creating sourceBuffer(video/mp4;codecs=avc1.4d4020)
buffer-controller.ts:930 [log] > [buffer-controller] creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
stream-controller.ts:845 [log] > [stream-controller]: Alternate track found, use video.buffered to schedule main fragment loading
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 (frag:[0.000-3.968] > buffer:[0.000-3.968])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 1 cc: 0 of [0-258] track: 0, target: 4.011
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 0 of level 3 (frag:[0.000-4.000] > buffer:[0.000-4.000])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
abr-controller.ts:778 [info] > [abr] switch candidate:3->4 adjustedbw(5216962)-bitrate=530093 ttfb:0.1 avgDuration:4.0 maxFetchDuration:4.0 fetchDuration:3.7 firstSelection:false codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:3
stream-controller.ts:261 [log] > [stream-controller]: Adapting to level 4 from level 3
level-controller.ts:415 [log] > [level-controller]: Switching to level 4 (1080p SDR avc1,mp4a @4686869) from level 3
level-controller.ts:597 [log] > [level-controller]: Loading level index 4 with URI 1/1 https://customer-gh08u53vbkhozibb.cloudflarestream.com/db17d0e8887c7c97743aed2764562074/manifest/stream_t58648941e4e431930c231299899a5c6b_r503651130.m3u8?useMezzanine=false
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->WAITING_LEVEL
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:383 [warn] > Audio frame @ 3.935s overlaps nextAudioPts by -33 ms.
onWorkerMessage @ transmuxer-interface.ts:383
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:92
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
stream-controller.ts:634 [log] > [stream-controller]: Level 4 loaded [0,258][part-258--1], cc [0, 0] duration:1035.89
base-stream-controller.ts:1784 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-258] level: 4, target: 4
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 1 of track 0 (frag:[3.935-7.945] > buffer:[0.000-7.945])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 2 cc: 0 of [0-258] track: 0, target: 7.945
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 2 of level 0
transmuxer-interface.ts:231 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 4 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 4
        initSegmentChange: false
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 1 of level 4
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 2 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 2 of track 0 (frag:[7.945-11.956] > buffer:[0.000-11.956])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1300 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.4d402a/avc1.4d402a]
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 1 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 1 of level 4 (frag:[3.967-7.967] > buffer:[0.000-3.917][3.967-7.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-258] level: 4, target: 7.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 2 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 2 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 3 cc: 0 of [0-258] track: 0, target: 11.956
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 3 of level 0
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 2 of level 4 (frag:[7.967-11.967] > buffer:[0.000-3.917][3.967-11.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-258] level: 4, target: 11.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 3 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 3 of track 0 (frag:[11.956-15.967] > buffer:[0.000-15.967])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 4 cc: 0 of [0-258] track: 0, target: 15.967
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 3 of level 4
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 4 of level 0
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 3 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 4 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 4 of track 0 (frag:[15.967-19.977] > buffer:[0.000-19.977])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 3 of level 4 (frag:[11.967-15.967] > buffer:[0.000-3.917][3.967-15.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-258] level: 4, target: 15.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 4 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 4 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 4 of level 4 (frag:[15.967-19.967] > buffer:[0.000-3.917][3.967-19.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 5 cc: 0 of [0-258] level: 4, target: 19.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 5 cc: 0 of [0-258] track: 0, target: 19.977
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 5 of level 4
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 5 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 5 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 5 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 5 of track 0 (frag:[19.977-23.988] > buffer:[0.000-23.988])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 6 cc: 0 of [0-258] track: 0, target: 23.988
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 6 of level 0
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 5 of level 4 (frag:[19.967-23.967] > buffer:[0.000-3.917][3.967-23.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 6 cc: 0 of [0-258] level: 4, target: 23.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 6 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 6 of track 0 (frag:[23.988-27.999] > buffer:[0.000-27.999])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 7 cc: 0 of [0-258] track: 0, target: 27.999
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 6 of level 4
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 7 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 7 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 6 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 7 of track 0 (frag:[27.999-32.009] > buffer:[0.000-32.009])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 6 of level 4 (frag:[23.967-27.967] > buffer:[0.000-3.917][3.967-27.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 7 cc: 0 of [0-258] level: 4, target: 27.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 7 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 7 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 7 of level 4 (frag:[27.967-31.967] > buffer:[0.000-3.917][3.967-31.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 8 cc: 0 of [0-258] level: 4, target: 31.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 8 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 8 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 8 cc: 0 of [0-258] track: 0, target: 32.009
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 8 of level 4 (frag:[31.967-35.967] > buffer:[0.000-3.917][3.967-35.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 9 cc: 0 of [0-258] level: 4, target: 35.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 8 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 8 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 9 of level 4
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 8 of track 0 (frag:[32.009-36.020] > buffer:[0.000-36.020])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 9 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 9 of level 4 (frag:[35.967-39.967] > buffer:[0.000-3.917][3.967-39.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 10 cc: 0 of [0-258] level: 4, target: 39.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 9 cc: 0 of [0-258] track: 0, target: 36.02
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 10 of level 4
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 9 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 9 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 10 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 9 of track 0 (frag:[36.020-40.031] > buffer:[0.000-40.031])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 10 of level 4 (frag:[39.967-43.967] > buffer:[0.000-3.917][3.967-43.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 11 cc: 0 of [0-258] level: 4, target: 43.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 11 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 11 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 10 cc: 0 of [0-258] track: 0, target: 40.031
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 11 of level 4 (frag:[43.967-47.967] > buffer:[0.000-3.917][3.967-47.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 12 cc: 0 of [0-258] level: 4, target: 47.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 10 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 10 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 12 of level 4
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 10 of track 0 (frag:[40.031-44.041] > buffer:[0.000-44.041])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 11 cc: 0 of [0-258] track: 0, target: 44.041
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 12 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 11 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 11 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 11 of track 0 (frag:[44.041-48.052] > buffer:[0.000-48.052])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 12 cc: 0 of [0-258] track: 0, target: 48.052
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 12 of level 0
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 12 of level 4 (frag:[47.967-51.967] > buffer:[0.000-3.917][3.967-51.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 13 cc: 0 of [0-258] level: 4, target: 51.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 12 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 12 of track 0 (frag:[48.052-52.063] > buffer:[0.000-52.063])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 13 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 13 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 13 of level 4 (frag:[51.967-55.967] > buffer:[0.000-3.917][3.967-55.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 14 cc: 0 of [0-258] level: 4, target: 55.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 14 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 14 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 14 of level 4 (frag:[55.967-59.967] > buffer:[0.000-3.917][3.967-59.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 15 cc: 0 of [0-258] level: 4, target: 59.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 15 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 15 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 13 cc: 0 of [0-258] track: 0, target: 52.063
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 13 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 13 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 13 of track 0 (frag:[52.063-56.073] > buffer:[0.000-56.073])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 14 cc: 0 of [0-258] track: 0, target: 56.073
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 14 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 15 of level 4 (frag:[59.967-63.967] > buffer:[0.000-3.917][3.967-63.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 16 cc: 0 of [0-258] level: 4, target: 63.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 14 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 14 of track 0 (frag:[56.073-60.084] > buffer:[0.000-60.084])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 15 cc: 0 of [0-258] track: 0, target: 60.084
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 15 of level 0
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 16 of level 4
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 15 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 16 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 15 of track 0 (frag:[60.084-64.095] > buffer:[0.000-64.095])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 16 of level 4 (frag:[63.967-67.967] > buffer:[0.000-3.917][3.967-67.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 17 cc: 0 of [0-258] level: 4, target: 67.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 17 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 17 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 16 cc: 0 of [0-258] track: 0, target: 64.095
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 17 of level 4 (frag:[67.967-71.967] > buffer:[0.000-3.917][3.967-71.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 18 cc: 0 of [0-258] level: 4, target: 71.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 16 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 16 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 18 of level 4
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 16 of track 0 (frag:[64.095-68.105] > buffer:[0.000-68.105])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 17 cc: 0 of [0-258] track: 0, target: 68.105
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 18 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 17 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 17 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 17 of track 0 (frag:[68.105-72.116] > buffer:[0.000-72.116])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 18 cc: 0 of [0-258] track: 0, target: 72.116
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 18 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 18 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 18 of track 0 (frag:[72.116-76.127] > buffer:[0.000-76.127])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 18 of level 4 (frag:[71.967-75.967] > buffer:[0.000-3.917][3.967-75.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 19 cc: 0 of [0-258] level: 4, target: 75.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 19 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 19 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 19 of level 4 (frag:[75.967-79.967] > buffer:[0.000-3.917][3.967-79.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 20 cc: 0 of [0-258] level: 4, target: 79.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 20 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 20 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 20 of level 4 (frag:[79.967-83.967] > buffer:[0.000-3.917][3.967-83.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 21 cc: 0 of [0-258] level: 4, target: 83.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 19 cc: 0 of [0-258] track: 0, target: 76.127
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 21 of level 4
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 19 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 19 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 21 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 19 of track 0 (frag:[76.127-80.137] > buffer:[0.000-80.137])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 20 cc: 0 of [0-258] track: 0, target: 80.137
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 20 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 20 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 20 of track 0 (frag:[80.137-84.148] > buffer:[0.000-84.148])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 21 cc: 0 of [0-258] track: 0, target: 84.148
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 21 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 21 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 21 of track 0 (frag:[84.148-88.159] > buffer:[0.000-88.159])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 21 of level 4 (frag:[83.967-87.967] > buffer:[0.000-3.917][3.967-87.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 22 cc: 0 of [0-258] level: 4, target: 87.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 22 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 22 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 22 of level 4 (frag:[87.967-91.967] > buffer:[0.000-3.917][3.967-91.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 23 cc: 0 of [0-258] level: 4, target: 91.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 23 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 23 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 22 cc: 0 of [0-258] track: 0, target: 88.159
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 23 of level 4 (frag:[91.967-95.967] > buffer:[0.000-3.917][3.967-95.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 24 cc: 0 of [0-258] level: 4, target: 95.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 22 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 22 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 24 of level 4
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 22 of track 0 (frag:[88.159-92.169] > buffer:[0.000-92.169])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 23 cc: 0 of [0-258] track: 0, target: 92.169
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 24 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 23 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 23 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 23 of track 0 (frag:[92.169-96.180] > buffer:[0.000-96.180])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 24 cc: 0 of [0-258] track: 0, target: 96.18
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 24 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 24 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 24 of track 0 (frag:[96.180-100.191] > buffer:[0.000-100.191])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 24 of level 4 (frag:[95.967-99.967] > buffer:[0.000-3.917][3.967-99.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 25 cc: 0 of [0-258] level: 4, target: 99.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 25 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 25 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 25 of level 4 (frag:[99.967-103.967] > buffer:[0.000-3.917][3.967-103.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 25 cc: 0 of [0-258] track: 0, target: 100.191
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 25 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 25 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 25 of track 0 (frag:[100.191-104.201] > buffer:[0.000-104.201])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
favicon.ico:1     GET https://hlsjs-dev.video-dev.org/favicon.ico 404
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 26 cc: 0 of [0-258] level: 4, target: 103.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 26 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 26 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 26 of level 4 (frag:[103.967-107.967] > buffer:[0.000-3.917][3.967-107.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 26 cc: 0 of [0-258] track: 0, target: 104.201
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 26 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 26 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 26 of track 0 (frag:[104.201-108.212] > buffer:[0.000-108.212])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [stream-controller]: Loading fragment 27 cc: 0 of [0-258] level: 4, target: 107.967
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 27 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 27 of level 4
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [stream-controller]: Buffered main sn: 27 of level 4 (frag:[107.967-111.967] > buffer:[0.000-3.917][3.967-111.967])
base-stream-controller.ts:1784 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:747 [log] > [audio-stream-controller]: Loading fragment 27 cc: 0 of [0-258] track: 0, target: 108.212
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 27 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 27 of level 0
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:559 [log] > [audio-stream-controller]: Buffered audio sn: 27 of track 0 (frag:[108.212-112.223] > buffer:[0.000-112.223])
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: PARSED->IDLE
gap-controller.ts:230 [warn] > Playback stalling at @6.846516 due to low buffer ({"len":105.12015000000001,"start":3.966666,"end":111.966666})
_reportStall @ gap-controller.ts:230
poll @ gap-controller.ts:154
checkBuffer @ stream-controller.ts:941
onTickEnd @ stream-controller.ts:211
doTick @ stream-controller.ts:206
tick @ task-loop.ts:106
setInterval (async)
setInterval @ task-loop.ts:68
startLoad @ stream-controller.ts:127
(anonymous) @ hls.ts:410
startLoad @ hls.ts:409
filterAndSortMediaOptions @ level-controller.ts:359
onManifestLoaded @ level-controller.ts:172
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
handleMasterPlaylist @ playlist-loader.ts:424
onSuccess @ playlist-loader.ts:322
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:347
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
loadSource @ hls.ts:396
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 2 more frames
Show less
main.js:734 Error event: {type: 'mediaError', details: 'bufferStalledError', fatal: false, error: Error: Playback stalling at @6.846516 due to low buffer ({"len":105.12015000000001,"start":3.966666…, buffer: 105.12015000000001, …}
(anonymous) @ main.js:734
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
_reportStall @ gap-controller.ts:231
poll @ gap-controller.ts:154
checkBuffer @ stream-controller.ts:941
onTickEnd @ stream-controller.ts:211
doTick @ stream-controller.ts:206
tick @ task-loop.ts:106
setInterval (async)
setInterval @ task-loop.ts:68
startLoad @ stream-controller.ts:127
(anonymous) @ hls.ts:410
startLoad @ hls.ts:409
filterAndSortMediaOptions @ level-controller.ts:359
onManifestLoaded @ level-controller.ts:172
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
handleMasterPlaylist @ playlist-loader.ts:424
onSuccess @ playlist-loader.ts:322
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:347
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:286
trigger @ hls.ts:294
loadSource @ hls.ts:396
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 3 more frames
Show less
hls.ts:418 [log] > stopLoad
base-stream-controller.ts:1784 [log] > [stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1784 [log] > [audio-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1784 [log] > [subtitle-stream-controller]: IDLE->STOPPED

Chrome media internals output

[
  {
    "properties": {
      "render_id": 14,
      "player_id": 0,
      "created": "2023-09-04 17:51:26.285 UTC",
      "origin_url": "https://hlsjs-dev.video-dev.org/",
      "kFrameUrl": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9",
      "kFrameTitle": "hls.js demo",
      "url": "blob:https://hlsjs-dev.video-dev.org/901431ff-e579-485a-a18b-069b7b508a9c",
      "kTextTracks": [],
      "info": "ChunkDemuxer",
      "kRendererName": "RendererImpl",
      "pipeline_state": "kStopped",
      "duration": 1035.89,
      "event": "kWebMediaPlayerDestroyed"
    },
    "events": [
      {
        "time": 0,
        "key": "created",
        "value": "2023-09-04 17:51:26.285 UTC"
      },
      {
        "time": 0.27799999713897705,
        "key": "origin_url",
        "value": "https://hlsjs-dev.video-dev.org/"
      },
      {
        "time": 0.28299999982118607,
        "key": "kFrameUrl",
        "value": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9"
      },
      {
        "time": 0.28699999675154686,
        "key": "kFrameTitle",
        "value": "hls.js demo"
      },
      {
        "time": 0.40799999982118607,
        "key": "url",
        "value": "blob:https://hlsjs-dev.video-dev.org/901431ff-e579-485a-a18b-069b7b508a9c"
      },
      {
        "time": 0.4129999987781048,
        "key": "kTextTracks",
        "value": []
      },
      {
        "time": 0.4259999990463257,
        "key": "info",
        "value": "ChunkDemuxer"
      },
      {
        "time": 0.43400000035762787,
        "key": "kRendererName",
        "value": "RendererImpl"
      },
      {
        "time": 2.494999997317791,
        "key": "pipeline_state",
        "value": "kStarting"
      },
      {
        "time": 340.714999999851,
        "key": "duration",
        "value": 1035.89
      },
      {
        "time": 1101.7109999991953,
        "key": "event",
        "value": "kWebMediaPlayerDestroyed"
      },
      {
        "time": 1101.9249999970198,
        "key": "pipeline_state",
        "value": "kStopping"
      },
      {
        "time": 1101.9289999976754,
        "key": "pipeline_state",
        "value": "kStopped"
      }
    ]
  },
  {
    "properties": {
      "render_id": 14,
      "player_id": 1,
      "created": "2023-09-04 17:51:27.401 UTC",
      "origin_url": "https://hlsjs-dev.video-dev.org/",
      "kFrameUrl": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9",
      "kFrameTitle": "hls.js demo",
      "url": "blob:https://hlsjs-dev.video-dev.org/db8a8391-6282-45d6-89a5-cec8fbe2919c",
      "kTextTracks": [],
      "info": "Effective playback rate changed from 0 to 1",
      "kRendererName": "RendererImpl",
      "pipeline_state": "kStopped",
      "kVideoTracks": [
        {
          "alpha mode": "is_opaque",
          "codec": "h264",
          "coded size": "1280x720",
          "color space": {
            "matrix": "BT709",
            "primaries": "BT709",
            "range": "LIMITED",
            "transfer": "BT709"
          },
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "hdr metadata": "unset",
          "natural size": "1280x720",
          "orientation": "",
          "profile": "h264 high",
          "visible rect": "0,0 1280x720"
        }
      ],
      "kAudioTracks": [
        {
          "bytes per channel": 2,
          "bytes per frame": 4,
          "channel layout": "STEREO",
          "channels": 2,
          "codec": "aac",
          "codec delay": 0,
          "discard decoder delay": false,
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "profile": "unknown",
          "sample format": "Signed 16-bit",
          "samples per second": 48000,
          "seek preroll": "0us"
        }
      ],
      "kIsAudioDecryptingDemuxerStream": false,
      "kAudioDecoderName": "FFmpegAudioDecoder",
      "kIsPlatformAudioDecoder": false,
      "kIsVideoDecryptingDemuxerStream": false,
      "kVideoDecoderName": "FFmpegVideoDecoder",
      "kIsPlatformVideoDecoder": false,
      "dimensions": "1280x720",
      "kResolution": "1280x720",
      "event": "kWebMediaPlayerDestroyed",
      "debug": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us.",
      "duration": 40.030666,
      "pipeline_buffering_state": {
        "for_suspended_start": false,
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      },
      "video_buffering_state": {
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      }
    },
    "events": [
      {
        "time": 0,
        "key": "created",
        "value": "2023-09-04 17:51:27.401 UTC"
      },
      {
        "time": 0.10200000181794167,
        "key": "origin_url",
        "value": "https://hlsjs-dev.video-dev.org/"
      },
      {
        "time": 0.10599999874830246,
        "key": "kFrameUrl",
        "value": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9"
      },
      {
        "time": 0.10700000077486038,
        "key": "kFrameTitle",
        "value": "hls.js demo"
      },
      {
        "time": 0.15799999982118607,
        "key": "url",
        "value": "blob:https://hlsjs-dev.video-dev.org/db8a8391-6282-45d6-89a5-cec8fbe2919c"
      },
      {
        "time": 0.16200000047683716,
        "key": "kTextTracks",
        "value": []
      },
      {
        "time": 0.17399999871850014,
        "key": "info",
        "value": "ChunkDemuxer"
      },
      {
        "time": 0.18200000002980232,
        "key": "kRendererName",
        "value": "RendererImpl"
      },
      {
        "time": 0.22100000083446503,
        "key": "pipeline_state",
        "value": "kStarting"
      },
      {
        "time": 198.4079999998212,
        "key": "kVideoTracks",
        "value": [
          {
            "alpha mode": "is_opaque",
            "codec": "h264",
            "coded size": "1280x720",
            "color space": {
              "matrix": "BT709",
              "primaries": "BT709",
              "range": "LIMITED",
              "transfer": "BT709"
            },
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "hdr metadata": "unset",
            "natural size": "1280x720",
            "orientation": "",
            "profile": "h264 high",
            "visible rect": "0,0 1280x720"
          }
        ]
      },
      {
        "time": 198.5109999999404,
        "key": "kAudioTracks",
        "value": [
          {
            "bytes per channel": 2,
            "bytes per frame": 4,
            "channel layout": "STEREO",
            "channels": 2,
            "codec": "aac",
            "codec delay": 0,
            "discard decoder delay": false,
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "profile": "unknown",
            "sample format": "Signed 16-bit",
            "samples per second": 48000,
            "seek preroll": "0us"
          }
        ]
      },
      {
        "time": 231.0379999987781,
        "key": "kIsAudioDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 231.0410000011325,
        "key": "kAudioDecoderName",
        "value": "FFmpegAudioDecoder"
      },
      {
        "time": 231.04199999943376,
        "key": "kIsPlatformAudioDecoder",
        "value": false
      },
      {
        "time": 231.05799999833107,
        "key": "info",
        "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
      },
      {
        "time": 231.13100000098348,
        "key": "info",
        "value": "Cannot select DecryptingVideoDecoder for video decoding"
      },
      {
        "time": 231.14499999955297,
        "key": "info",
        "value": "Cannot select VaapiVideoDecoder for video decoding"
      },
      {
        "time": 231.19500000029802,
        "key": "info",
        "value": "Cannot select VpxVideoDecoder for video decoding"
      },
      {
        "time": 231.21600000187755,
        "key": "info",
        "value": "Cannot select Dav1dVideoDecoder for video decoding"
      },
      {
        "time": 232.66200000047684,
        "key": "kIsVideoDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 232.6660000011325,
        "key": "kVideoDecoderName",
        "value": "FFmpegVideoDecoder"
      },
      {
        "time": 232.66699999943376,
        "key": "kIsPlatformVideoDecoder",
        "value": false
      },
      {
        "time": 232.68299999833107,
        "key": "info",
        "value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 232.71799999848008,
        "key": "pipeline_state",
        "value": "kPlaying"
      },
      {
        "time": 293.00899999961257,
        "key": "dimensions",
        "value": "1280x720"
      },
      {
        "time": 293.01500000059605,
        "key": "kResolution",
        "value": "1280x720"
      },
      {
        "time": 293.1350000016391,
        "key": "info",
        "value": "Effective playback rate changed from 0 to 1"
      },
      {
        "time": 293.1990000009537,
        "key": "event",
        "value": "kPlay"
      },
      {
        "time": 638.2060000002384,
        "key": "debug",
        "value": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us."
      },
      {
        "time": 18.175000000745058,
        "key": "duration",
        "value": 1035.89
      },
      {
        "time": 293.07699999958277,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "state": "BUFFERING_HAVE_ENOUGH"
        }
      },
      {
        "time": 4233.144000001252,
        "key": "video_buffering_state",
        "value": {
          "reason": "DEMUXER_UNDERFLOW",
          "state": "BUFFERING_HAVE_NOTHING"
        }
      },
      {
        "time": 7236.561999998987,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "reason": "DEMUXER_UNDERFLOW",
          "state": "BUFFERING_HAVE_NOTHING"
        }
      },
      {
        "time": 7728.662999998778,
        "key": "event",
        "value": "kPause"
      },
      {
        "time": 22758.776000000536,
        "key": "pipeline_state",
        "value": "kSuspending"
      },
      {
        "time": 22762.664999999106,
        "key": "pipeline_state",
        "value": "kSuspended"
      },
      {
        "time": 22762.752000000328,
        "key": "event",
        "value": "kSuspended"
      },
      {
        "time": 79155.73900000006,
        "key": "duration",
        "value": 40.030666
      },
      {
        "time": 79156.78599999845,
        "key": "event",
        "value": "kWebMediaPlayerDestroyed"
      },
      {
        "time": 79156.86100000143,
        "key": "pipeline_state",
        "value": "kStopping"
      },
      {
        "time": 79156.90100000054,
        "key": "pipeline_state",
        "value": "kStopped"
      }
    ]
  },
  {
    "properties": {
      "render_id": 14,
      "player_id": 2,
      "created": "2023-09-04 17:52:46.593 UTC",
      "origin_url": "https://hlsjs-dev.video-dev.org/",
      "kFrameUrl": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9",
      "kFrameTitle": "hls.js demo",
      "url": "blob:https://hlsjs-dev.video-dev.org/d78e5450-a35a-45d9-9138-70e407705ea6",
      "kTextTracks": [],
      "info": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 main, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}",
      "kRendererName": "RendererImpl",
      "pipeline_state": "kPlaying",
      "kVideoTracks": [
        {
          "alpha mode": "is_opaque",
          "codec": "h264",
          "coded size": "1280x720",
          "color space": {
            "matrix": "BT709",
            "primaries": "BT709",
            "range": "LIMITED",
            "transfer": "BT709"
          },
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "hdr metadata": "unset",
          "natural size": "1280x720",
          "orientation": "",
          "profile": "h264 high",
          "visible rect": "0,0 1280x720"
        }
      ],
      "kAudioTracks": [
        {
          "bytes per channel": 2,
          "bytes per frame": 4,
          "channel layout": "STEREO",
          "channels": 2,
          "codec": "aac",
          "codec delay": 0,
          "discard decoder delay": false,
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "profile": "unknown",
          "sample format": "Signed 16-bit",
          "samples per second": 48000,
          "seek preroll": "0us"
        }
      ],
      "kIsAudioDecryptingDemuxerStream": false,
      "kAudioDecoderName": "FFmpegAudioDecoder",
      "kIsPlatformAudioDecoder": false,
      "kIsVideoDecryptingDemuxerStream": false,
      "kVideoDecoderName": "FFmpegVideoDecoder",
      "kIsPlatformVideoDecoder": false,
      "dimensions": "1920x1080",
      "kResolution": "1920x1080",
      "event": "kPause",
      "debug": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us.",
      "duration": 1035.89,
      "pipeline_buffering_state": {
        "for_suspended_start": false,
        "state": "BUFFERING_HAVE_ENOUGH"
      },
      "video_buffering_state": {
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      },
      "seek_target": 7.042765
    },
    "events": [
      {
        "time": 0,
        "key": "created",
        "value": "2023-09-04 17:52:46.593 UTC"
      },
      {
        "time": 0.22100000083446503,
        "key": "origin_url",
        "value": "https://hlsjs-dev.video-dev.org/"
      },
      {
        "time": 0.23400000110268593,
        "key": "kFrameUrl",
        "value": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9"
      },
      {
        "time": 0.24000000208616257,
        "key": "kFrameTitle",
        "value": "hls.js demo"
      },
      {
        "time": 0.3660000003874302,
        "key": "url",
        "value": "blob:https://hlsjs-dev.video-dev.org/d78e5450-a35a-45d9-9138-70e407705ea6"
      },
      {
        "time": 0.3760000020265579,
        "key": "kTextTracks",
        "value": []
      },
      {
        "time": 0.409000001847744,
        "key": "info",
        "value": "ChunkDemuxer"
      },
      {
        "time": 0.4270000010728836,
        "key": "kRendererName",
        "value": "RendererImpl"
      },
      {
        "time": 0.4609999991953373,
        "key": "pipeline_state",
        "value": "kStarting"
      },
      {
        "time": 162.87299999967217,
        "key": "kVideoTracks",
        "value": [
          {
            "alpha mode": "is_opaque",
            "codec": "h264",
            "coded size": "1280x720",
            "color space": {
              "matrix": "BT709",
              "primaries": "BT709",
              "range": "LIMITED",
              "transfer": "BT709"
            },
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "hdr metadata": "unset",
            "natural size": "1280x720",
            "orientation": "",
            "profile": "h264 high",
            "visible rect": "0,0 1280x720"
          }
        ]
      },
      {
        "time": 162.93100000172853,
        "key": "kAudioTracks",
        "value": [
          {
            "bytes per channel": 2,
            "bytes per frame": 4,
            "channel layout": "STEREO",
            "channels": 2,
            "codec": "aac",
            "codec delay": 0,
            "discard decoder delay": false,
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "profile": "unknown",
            "sample format": "Signed 16-bit",
            "samples per second": 48000,
            "seek preroll": "0us"
          }
        ]
      },
      {
        "time": 164.23300000280142,
        "key": "kIsAudioDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 164.2360000014305,
        "key": "kAudioDecoderName",
        "value": "FFmpegAudioDecoder"
      },
      {
        "time": 164.23699999973178,
        "key": "kIsPlatformAudioDecoder",
        "value": false
      },
      {
        "time": 164.25,
        "key": "info",
        "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
      },
      {
        "time": 164.2910000011325,
        "key": "info",
        "value": "Cannot select DecryptingVideoDecoder for video decoding"
      },
      {
        "time": 164.29800000041723,
        "key": "info",
        "value": "Cannot select VaapiVideoDecoder for video decoding"
      },
      {
        "time": 164.32100000232458,
        "key": "info",
        "value": "Cannot select VpxVideoDecoder for video decoding"
      },
      {
        "time": 164.33000000193715,
        "key": "info",
        "value": "Cannot select Dav1dVideoDecoder for video decoding"
      },
      {
        "time": 165.37099999934435,
        "key": "kIsVideoDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 165.3720000013709,
        "key": "kVideoDecoderName",
        "value": "FFmpegVideoDecoder"
      },
      {
        "time": 165.37299999967217,
        "key": "kIsPlatformVideoDecoder",
        "value": false
      },
      {
        "time": 165.38399999961257,
        "key": "info",
        "value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 165.3969999998808,
        "key": "pipeline_state",
        "value": "kPlaying"
      },
      {
        "time": 215.117000002414,
        "key": "dimensions",
        "value": "1280x720"
      },
      {
        "time": 215.1220000013709,
        "key": "kResolution",
        "value": "1280x720"
      },
      {
        "time": 231.625,
        "key": "info",
        "value": "Effective playback rate changed from 0 to 1"
      },
      {
        "time": 231.65599999949336,
        "key": "event",
        "value": "kPlay"
      },
      {
        "time": 258.0060000009835,
        "key": "debug",
        "value": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us."
      },
      {
        "time": 45.03200000151992,
        "key": "duration",
        "value": 1035.89
      },
      {
        "time": 231.57499999925494,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "state": "BUFFERING_HAVE_ENOUGH"
        }
      },
      {
        "time": 4175.513000000268,
        "key": "video_buffering_state",
        "value": {
          "reason": "DEMUXER_UNDERFLOW",
          "state": "BUFFERING_HAVE_NOTHING"
        }
      },
      {
        "time": 7194.367000002414,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "reason": "DEMUXER_UNDERFLOW",
          "state": "BUFFERING_HAVE_NOTHING"
        }
      },
      {
        "time": 7639.125,
        "key": "event",
        "value": "kPause"
      },
      {
        "time": 22654.41500000283,
        "key": "pipeline_state",
        "value": "kSuspending"
      },
      {
        "time": 22658.451999999583,
        "key": "pipeline_state",
        "value": "kSuspended"
      },
      {
        "time": 22658.595000002533,
        "key": "event",
        "value": "kSuspended"
      },
      {
        "time": 139944.99700000137,
        "key": "event",
        "value": "kPlay"
      },
      {
        "time": 139945.1150000021,
        "key": "kRendererName",
        "value": "RendererImpl"
      },
      {
        "time": 139945.15900000185,
        "key": "pipeline_state",
        "value": "kResuming"
      },
      {
        "time": 139949.13500000164,
        "key": "kIsAudioDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 139949.14200000092,
        "key": "kAudioDecoderName",
        "value": "FFmpegAudioDecoder"
      },
      {
        "time": 139949.14499999955,
        "key": "kIsPlatformAudioDecoder",
        "value": false
      },
      {
        "time": 139949.18300000206,
        "key": "info",
        "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
      },
      {
        "time": 139949.33000000194,
        "key": "info",
        "value": "Cannot select DecryptingVideoDecoder for video decoding"
      },
      {
        "time": 139949.3509999998,
        "key": "info",
        "value": "Cannot select VaapiVideoDecoder for video decoding"
      },
      {
        "time": 139949.37900000066,
        "key": "info",
        "value": "Cannot select VpxVideoDecoder for video decoding"
      },
      {
        "time": 139949.4050000012,
        "key": "info",
        "value": "Cannot select Dav1dVideoDecoder for video decoding"
      },
      {
        "time": 139952.78400000185,
        "key": "kIsVideoDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 139952.7880000025,
        "key": "kVideoDecoderName",
        "value": "FFmpegVideoDecoder"
      },
      {
        "time": 139952.79000000283,
        "key": "kIsPlatformVideoDecoder",
        "value": false
      },
      {
        "time": 139952.8200000003,
        "key": "info",
        "value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 139952.85600000247,
        "key": "pipeline_state",
        "value": "kPlaying"
      },
      {
        "time": 139953.00300000235,
        "key": "info",
        "value": "video decoder config changed midstream, new config: codec: h264, profile: h264 main, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 139960.89699999988,
        "key": "kIsVideoDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 139960.90200000256,
        "key": "kVideoDecoderName",
        "value": "FFmpegVideoDecoder"
      },
      {
        "time": 139960.90399999917,
        "key": "kIsPlatformVideoDecoder",
        "value": false
      },
      {
        "time": 139960.94600000232,
        "key": "info",
        "value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 main, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 140248.9830000028,
        "key": "dimensions",
        "value": "1920x1080"
      },
      {
        "time": 140248.9920000024,
        "key": "kResolution",
        "value": "1920x1080"
      },
      {
        "time": 140260.36800000072,
        "key": "seek_target",
        "value": 7.042765
      },
      {
        "time": 140260.43300000206,
        "key": "pipeline_state",
        "value": "kSeeking"
      },
      {
        "time": 140261.50400000066,
        "key": "pipeline_state",
        "value": "kPlaying"
      },
      {
        "time": 140493.6860000007,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "state": "BUFFERING_HAVE_ENOUGH"
        }
      },
      {
        "time": 144285.53299999982,
        "key": "event",
        "value": "kPause"
      }
    ]
  },
  {
    "properties": {
      "render_id": 20,
      "player_id": 0,
      "created": "2023-09-04 17:55:17.759 UTC",
      "origin_url": "https://hlsjs-dev.video-dev.org/",
      "kFrameUrl": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9",
      "kFrameTitle": "hls.js demo",
      "url": "blob:https://hlsjs-dev.video-dev.org/272240ea-93ba-45ca-bb6c-104e6f9cc9ed",
      "kTextTracks": [],
      "info": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}",
      "kRendererName": "RendererImpl",
      "pipeline_state": "kStopped",
      "kVideoTracks": [
        {
          "alpha mode": "is_opaque",
          "codec": "h264",
          "coded size": "1280x720",
          "color space": {
            "matrix": "BT709",
            "primaries": "BT709",
            "range": "LIMITED",
            "transfer": "BT709"
          },
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "hdr metadata": "unset",
          "natural size": "1280x720",
          "orientation": "",
          "profile": "h264 high",
          "visible rect": "0,0 1280x720"
        }
      ],
      "kAudioTracks": [
        {
          "bytes per channel": 2,
          "bytes per frame": 4,
          "channel layout": "STEREO",
          "channels": 2,
          "codec": "aac",
          "codec delay": 0,
          "discard decoder delay": false,
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "profile": "unknown",
          "sample format": "Signed 16-bit",
          "samples per second": 48000,
          "seek preroll": "0us"
        }
      ],
      "kIsAudioDecryptingDemuxerStream": false,
      "kAudioDecoderName": "FFmpegAudioDecoder",
      "kIsPlatformAudioDecoder": false,
      "kIsVideoDecryptingDemuxerStream": false,
      "kVideoDecoderName": "FFmpegVideoDecoder",
      "kIsPlatformVideoDecoder": false,
      "dimensions": "1280x720",
      "kResolution": "1280x720",
      "debug": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us.",
      "duration": 83.966666,
      "pipeline_buffering_state": {
        "for_suspended_start": false,
        "state": "BUFFERING_HAVE_ENOUGH"
      },
      "event": "kWebMediaPlayerDestroyed"
    },
    "events": [
      {
        "time": 0,
        "key": "created",
        "value": "2023-09-04 17:55:17.759 UTC"
      },
      {
        "time": 0.28700000047683716,
        "key": "origin_url",
        "value": "https://hlsjs-dev.video-dev.org/"
      },
      {
        "time": 0.3150000013411045,
        "key": "kFrameUrl",
        "value": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9"
      },
      {
        "time": 0.3179999999701977,
        "key": "kFrameTitle",
        "value": "hls.js demo"
      },
      {
        "time": 0.44099999964237213,
        "key": "url",
        "value": "blob:https://hlsjs-dev.video-dev.org/272240ea-93ba-45ca-bb6c-104e6f9cc9ed"
      },
      {
        "time": 0.4450000002980232,
        "key": "kTextTracks",
        "value": []
      },
      {
        "time": 0.4609999991953373,
        "key": "info",
        "value": "ChunkDemuxer"
      },
      {
        "time": 0.471000000834465,
        "key": "kRendererName",
        "value": "RendererImpl"
      },
      {
        "time": 3.1900000013411045,
        "key": "pipeline_state",
        "value": "kStarting"
      },
      {
        "time": 311.35500000044703,
        "key": "kVideoTracks",
        "value": [
          {
            "alpha mode": "is_opaque",
            "codec": "h264",
            "coded size": "1280x720",
            "color space": {
              "matrix": "BT709",
              "primaries": "BT709",
              "range": "LIMITED",
              "transfer": "BT709"
            },
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "hdr metadata": "unset",
            "natural size": "1280x720",
            "orientation": "",
            "profile": "h264 high",
            "visible rect": "0,0 1280x720"
          }
        ]
      },
      {
        "time": 311.4259999990463,
        "key": "kAudioTracks",
        "value": [
          {
            "bytes per channel": 2,
            "bytes per frame": 4,
            "channel layout": "STEREO",
            "channels": 2,
            "codec": "aac",
            "codec delay": 0,
            "discard decoder delay": false,
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "profile": "unknown",
            "sample format": "Signed 16-bit",
            "samples per second": 48000,
            "seek preroll": "0us"
          }
        ]
      },
      {
        "time": 314.60200000181794,
        "key": "kIsAudioDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 314.60500000044703,
        "key": "kAudioDecoderName",
        "value": "FFmpegAudioDecoder"
      },
      {
        "time": 314.6060000024736,
        "key": "kIsPlatformAudioDecoder",
        "value": false
      },
      {
        "time": 314.62099999934435,
        "key": "info",
        "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
      },
      {
        "time": 314.8240000009537,
        "key": "info",
        "value": "Cannot select DecryptingVideoDecoder for video decoding"
      },
      {
        "time": 314.84100000187755,
        "key": "info",
        "value": "Cannot select VaapiVideoDecoder for video decoding"
      },
      {
        "time": 314.87900000065565,
        "key": "info",
        "value": "Cannot select VpxVideoDecoder for video decoding"
      },
      {
        "time": 314.8920000009239,
        "key": "info",
        "value": "Cannot select Dav1dVideoDecoder for video decoding"
      },
      {
        "time": 316.242000002414,
        "key": "kIsVideoDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 316.2439999990165,
        "key": "kVideoDecoderName",
        "value": "FFmpegVideoDecoder"
      },
      {
        "time": 316.2450000010431,
        "key": "kIsPlatformVideoDecoder",
        "value": false
      },
      {
        "time": 316.2580000013113,
        "key": "info",
        "value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 316.27899999916553,
        "key": "pipeline_state",
        "value": "kPlaying"
      },
      {
        "time": 412.3960000015795,
        "key": "dimensions",
        "value": "1280x720"
      },
      {
        "time": 412.402000002563,
        "key": "kResolution",
        "value": "1280x720"
      },
      {
        "time": 456.47700000181794,
        "key": "debug",
        "value": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us."
      },
      {
        "time": 84.68400000035763,
        "key": "duration",
        "value": 1035.89
      },
      {
        "time": 412.457000002265,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "state": "BUFFERING_HAVE_ENOUGH"
        }
      },
      {
        "time": 9030.949000000954,
        "key": "duration",
        "value": 83.966666
      },
      {
        "time": 9032.706000000238,
        "key": "event",
        "value": "kWebMediaPlayerDestroyed"
      },
      {
        "time": 9032.78200000152,
        "key": "pipeline_state",
        "value": "kStopping"
      },
      {
        "time": 9036.583000000566,
        "key": "pipeline_state",
        "value": "kStopped"
      }
    ]
  },
  {
    "properties": {
      "render_id": 20,
      "player_id": 1,
      "created": "2023-09-04 17:55:26.830 UTC",
      "origin_url": "https://hlsjs-dev.video-dev.org/",
      "kFrameUrl": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9",
      "kFrameTitle": "hls.js demo",
      "url": "blob:https://hlsjs-dev.video-dev.org/57bf7794-9c4b-40d2-bc85-5ce53f68ad41",
      "kTextTracks": [],
      "info": "Effective playback rate changed from 0 to 1",
      "kRendererName": "RendererImpl",
      "pipeline_state": "kSuspended",
      "kVideoTracks": [
        {
          "alpha mode": "is_opaque",
          "codec": "h264",
          "coded size": "1280x720",
          "color space": {
            "matrix": "BT709",
            "primaries": "BT709",
            "range": "LIMITED",
            "transfer": "BT709"
          },
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "hdr metadata": "unset",
          "natural size": "1280x720",
          "orientation": "",
          "profile": "h264 high",
          "visible rect": "0,0 1280x720"
        }
      ],
      "kAudioTracks": [
        {
          "bytes per channel": 2,
          "bytes per frame": 4,
          "channel layout": "STEREO",
          "channels": 2,
          "codec": "aac",
          "codec delay": 0,
          "discard decoder delay": false,
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "profile": "unknown",
          "sample format": "Signed 16-bit",
          "samples per second": 48000,
          "seek preroll": "0us"
        }
      ],
      "kIsAudioDecryptingDemuxerStream": false,
      "kAudioDecoderName": "FFmpegAudioDecoder",
      "kIsPlatformAudioDecoder": false,
      "kIsVideoDecryptingDemuxerStream": false,
      "kVideoDecoderName": "FFmpegVideoDecoder",
      "kIsPlatformVideoDecoder": false,
      "dimensions": "1280x720",
      "kResolution": "1280x720",
      "event": "kSuspended",
      "debug": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us.",
      "duration": 1035.89,
      "pipeline_buffering_state": {
        "for_suspended_start": false,
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      },
      "video_buffering_state": {
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      }
    },
    "events": [
      {
        "time": 0,
        "key": "created",
        "value": "2023-09-04 17:55:26.830 UTC"
      },
      {
        "time": 0.09299999848008156,
        "key": "origin_url",
        "value": "https://hlsjs-dev.video-dev.org/"
      },
      {
        "time": 0.09699999913573265,
        "key": "kFrameUrl",
        "value": "https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-gh08u53vbkhozibb.cloudflarestream.com%2Fdb17d0e8887c7c97743aed2764562074%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6ZmFsc2UsImxldmVsQ2FwcGluZyI6LTEsImxpbWl0TWV0cmljcyI6LTF9"
      },
      {
        "time": 0.09999999776482582,
        "key": "kFrameTitle",
        "value": "hls.js demo"
      },
      {
        "time": 0.15300000086426735,
        "key": "url",
        "value": "blob:https://hlsjs-dev.video-dev.org/57bf7794-9c4b-40d2-bc85-5ce53f68ad41"
      },
      {
        "time": 0.1600000001490116,
        "key": "kTextTracks",
        "value": []
      },
      {
        "time": 0.1719999983906746,
        "key": "info",
        "value": "ChunkDemuxer"
      },
      {
        "time": 0.18200000002980232,
        "key": "kRendererName",
        "value": "RendererImpl"
      },
      {
        "time": 0.19899999722838402,
        "key": "pipeline_state",
        "value": "kStarting"
      },
      {
        "time": 213.8289999999106,
        "key": "kVideoTracks",
        "value": [
          {
            "alpha mode": "is_opaque",
            "codec": "h264",
            "coded size": "1280x720",
            "color space": {
              "matrix": "BT709",
              "primaries": "BT709",
              "range": "LIMITED",
              "transfer": "BT709"
            },
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "hdr metadata": "unset",
            "natural size": "1280x720",
            "orientation": "",
            "profile": "h264 high",
            "visible rect": "0,0 1280x720"
          }
        ]
      },
      {
        "time": 213.99100000038743,
        "key": "kAudioTracks",
        "value": [
          {
            "bytes per channel": 2,
            "bytes per frame": 4,
            "channel layout": "STEREO",
            "channels": 2,
            "codec": "aac",
            "codec delay": 0,
            "discard decoder delay": false,
            "encryption scheme": "Unencrypted",
            "has extra data": false,
            "profile": "unknown",
            "sample format": "Signed 16-bit",
            "samples per second": 48000,
            "seek preroll": "0us"
          }
        ]
      },
      {
        "time": 215.4349999986589,
        "key": "kIsAudioDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 215.43699999898672,
        "key": "kAudioDecoderName",
        "value": "FFmpegAudioDecoder"
      },
      {
        "time": 215.437999997288,
        "key": "kIsPlatformAudioDecoder",
        "value": false
      },
      {
        "time": 215.44799999892712,
        "key": "info",
        "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
      },
      {
        "time": 215.49699999764562,
        "key": "info",
        "value": "Cannot select DecryptingVideoDecoder for video decoding"
      },
      {
        "time": 215.507999997586,
        "key": "info",
        "value": "Cannot select VaapiVideoDecoder for video decoding"
      },
      {
        "time": 215.53199999779463,
        "key": "info",
        "value": "Cannot select VpxVideoDecoder for video decoding"
      },
      {
        "time": 215.5409999974072,
        "key": "info",
        "value": "Cannot select Dav1dVideoDecoder for video decoding"
      },
      {
        "time": 216.64900000020862,
        "key": "kIsVideoDecryptingDemuxerStream",
        "value": false
      },
      {
        "time": 216.65100000053644,
        "key": "kVideoDecoderName",
        "value": "FFmpegVideoDecoder"
      },
      {
        "time": 216.6519999988377,
        "key": "kIsPlatformVideoDecoder",
        "value": false
      },
      {
        "time": 216.6629999987781,
        "key": "info",
        "value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
      },
      {
        "time": 216.67899999767542,
        "key": "pipeline_state",
        "value": "kPlaying"
      },
      {
        "time": 278.8149999976158,
        "key": "dimensions",
        "value": "1280x720"
      },
      {
        "time": 278.81899999827147,
        "key": "kResolution",
        "value": "1280x720"
      },
      {
        "time": 278.88699999824166,
        "key": "info",
        "value": "Effective playback rate changed from 0 to 1"
      },
      {
        "time": 278.93600000068545,
        "key": "event",
        "value": "kPlay"
      },
      {
        "time": 310.85199999809265,
        "key": "debug",
        "value": "Audio buffer splice at PTS=3934666us. Trimmed tail of overlapped buffer (PTS=3925333us) by 12000us."
      },
      {
        "time": 24.04499999806285,
        "key": "duration",
        "value": 1035.89
      },
      {
        "time": 278.8509999997914,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "state": "BUFFERING_HAVE_ENOUGH"
        }
      },
      {
        "time": 4207.8460000008345,
        "key": "video_buffering_state",
        "value": {
          "reason": "DEMUXER_UNDERFLOW",
          "state": "BUFFERING_HAVE_NOTHING"
        }
      },
      {
        "time": 7209.676999997348,
        "key": "pipeline_buffering_state",
        "value": {
          "for_suspended_start": false,
          "reason": "DEMUXER_UNDERFLOW",
          "state": "BUFFERING_HAVE_NOTHING"
        }
      },
      {
        "time": 7709.866999998689,
        "key": "event",
        "value": "kPause"
      },
      {
        "time": 22737.6259999983,
        "key": "pipeline_state",
        "value": "kSuspending"
      },
      {
        "time": 22739.326999999583,
        "key": "pipeline_state",
        "value": "kSuspended"
      },
      {
        "time": 22745.19399999827,
        "key": "event",
        "value": "kSuspended"
      }
    ]
  }
]
@bhayward93 bhayward93 added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Sep 4, 2023
@bhayward93
Copy link
Author

Some additional information relating to my digging is available at #5477 (comment)

@robwalch
Copy link
Collaborator

robwalch commented Sep 4, 2023

Hi @bhayward93,
The media internals are not needed so much as the complete console output.

@bhayward93
Copy link
Author

Hi @bhayward93, The media internals are not needed so much as the complete console output.

Hi @robwalch - I've updated the issue card to include the full logs from page loads - I'd just tried to trim out the area of the error to save space.

@robwalch
Copy link
Collaborator

robwalch commented Sep 7, 2023

The logs show overlapping audio which is a bit of a concern. The buffer stall error means that currentTime stopped advancing, but the log message details show that the buffer is healthy with 105 seconds of forward buffer:

gap-controller.ts:230 [warn] > Playback stalling at @6.846516 ({"len":105.12015000000001,"start":3.966666,"end":111.966666})

So despite this message, I would expect playback to continue unless there was a decoder error which i do not see or a buffer gap resulting in a demuxer starved issue - check the media panel in Chrome's dev tools.

I am unable to reproduce on desktop mac.

@bhayward93
Copy link
Author

bhayward93 commented Sep 7, 2023

The logs show overlapping audio which is a bit of a concern. The buffer stall error means that currentTime stopped advancing, but the log message details show that the buffer is healthy with 105 seconds of forward buffer:

gap-controller.ts:230 [warn] > Playback stalling at @6.846516 ({"len":105.12015000000001,"start":3.966666,"end":111.966666})

So despite this message, I would expect playback to continue unless there was a decoder error which i do not see or a buffer gap resulting in a demuxer starved issue - check the media panel in Chrome's dev tools.

I am unable to reproduce on desktop mac.

Interesting @robwalch - I just tested using a Desktop Mac (Sonoma Beta) via Browserstack (Chrome Version 116.0.5845.96 (Official Build) (x86_64 translated)) and it doesn't happen every time, but I'd say occurred on around 25% / 30% of plays, however, it does seem that it may quickly recover its self. Here is a streamable upload of this behavior in that environment with the test stream link provided in this issue card. https://streamable.com/prhii5

With the streams I'm using from Cloudflare streams, some recover but have a stall after the first segment of varying length, there are reports of other streams that do not eventually recover, though I do not have a sample to hand. The sample I used will recover after a couple of seconds when the "Stop on first stall" debug option is not checked. The stall is entirely undesirable so perhaps my expected correct behavior on the issue card is incomplete.

image

Below is the output from Chromes Media tab after the issue occurrs back on my main Ubuntu machine:

image

image

image

image

@test343
Copy link

test343 commented Oct 22, 2023

Hello, programmers. Let me help you with this issue. First of all let me introduce myself: I am a java developer who designed a web cctv system which utilises mpeg dash and mse to watch video from cctv cameras. For years it worked without any problems in all browsers. Some days ago I was surprised to see that video from some cameras randomly stops and video.currentTime does not change. Ok now long story short:

1. It is definitely a chrome bug!

  1. It happens when the buffer is low or off.

  2. It happens only on some streams! In my case it was H264 video from hikvision camera. ALL my hikvision cameras give this
    issue! All other cameras (not hikvision) do not have this issue.

  3. If I click at the player timeline (for example if I give video.currentTime less value) the player starts playing until the next buffer starvation!

5. If I use chrome with disabled hardware decoding THERE IS NO ISSUE! You can disable hardware acceleration with chrome://flags/ #disable-accelerated-video-decode

  1. IF I use firefox THERE IS NO ISSUE!

  2. Chrome already had a similar bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1091969. See my comment which  I left some days ago.

8. Trick video.currentTime=video.currentTime before appending a new buffer DOES work but you can get a decoder error on some streams!

Why do I write it here? For some reason I can not post bugs at https://bugs.chromium.org -- it just says that It can not process my request and that is all. I want you to fill the bug at https://bugs.chromium.org  . I know it may take years for google to accept a bug and fix it. Maybe you can change it and make google to fix it in reasonable terms.

Here is POC to reproduce bug:

            <title>TODO supply a title</title>                                

        <script>
            const video = document.getElementById("video");
            let index = 0;
            const assetURL = "frag_bunny.mp4";
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
            const mimeCodec = 'video/mp4; codecs="avc1.4d0020"';
            let mediaSource;
            let sourceBuffer;

            if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec))
            {
                mediaSource = new window.MediaSource();
                video.src = URL.createObjectURL(mediaSource);
                mediaSource.addEventListener("sourceopen", sourceOpen);

                mediaSource.addEventListener('error', function (e) {
                    console.error("mediaSource.error " + e);
                });
                mediaSource.addEventListener('sourceclose', function (e) {
                    console.log("mediaSource.sourceclose " + e);
                });

            }
            else
            {
                console.error("Unsupported MIME type or codec: ", mimeCodec);
            }

            function sourceOpen() {
                sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
                sourceBuffer.mode = "sequence";
                sourceBuffer.addEventListener("updateend", () => {
                    index++;
                    setTimeout(function ()
                    {
                        loadSegment();
                    }, 1000);
                });
                loadSegment();
            }

            function loadSegment() {
                var url = "http://localhost:8084/testvideo?index=" + index;
                const xhr = new XMLHttpRequest();
                xhr.responseType = "arraybuffer";
                xhr.open("get", url, true);
                xhr.send();

                xhr.onreadystatechange = function () {
                    if (xhr.readyState === 4)
                    {
                        //console.log("done");

                        var timestampOffset = 0;
                        var mediaSourceDuration = mediaSource.duration;
                        if (!isNaN(mediaSourceDuration) && mediaSourceDuration !== Infinity)
                        {
                            timestampOffset = mediaSourceDuration;
                        }

                        //sourceBuffer.timestampOffset = timestampOffset;

                        sourceBuffer.appendBuffer(xhr.response);
                        video.play();
                    }
                    else
                    {
                        //console.log("chunk", x.response); //this is null until readyState is 200 anyway
                    }

                };

                //sourceBuffer.appendBuffer(xhr.response);
            }

        </script>
       

TODO write content

   

I load self initialized dash segments (I saved them from the camera stream) from the server. See function loadSegment:
var url = "http://localhost:8084/testvideo?index=" + index;

You can change the url in this function corresponding to your logic.
I use  sourceBuffer.mode = "sequence"; So that I don't care about timestamps.  sourceBuffer.mode = "segments" does not solve that problem: that play stops also.
Also pay your attention how I load segments:
   setTimeout(function ()
                    {
                        loadSegment();
                    }, 1000);  

Delay 1000 ms is enough to make buffer starvation. In my test video just plays 2 seconds and then stops.

If you will report a bug at https://bugs.chromium.org please make a reference to me!

I can provide you dash segments which produce the issue on demand. But I prefer that you will use your own data. 

Thank you and good luck.

@test343
Copy link

test343 commented Oct 27, 2023

Ok so I know how to work around this. But looks like you're not going to communicate. So you just live with it.

@mrjamesriley
Copy link

Hi @bhayward93, have you managed to find a solution here?

We're having issues again, even on the latest version of Hls.js (v1.4.12), and was having the issue on v1.4.8 too. The issue we're seeing is with Cloudflare Streams, where the video plays just fine within the Cloudflare Dashboard, but when the stream is used with Hls.js. It's not happening with every stream, but here is one such example using the Hls.js:

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-xd80itw4spq1dhtd.cloudflarestream.com%2Fb957cf02c39df8dc31cdf35b7005fe49%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

You should see that in most cases, it freezes at either the 7 seconds mark, or 13 seconds. When doing so, the audio continues. These source videos uploaded to Cloudflare Stream are coming from the Instagram accounts of our users, and thus we are not in control of them. We'd love to Hls.js to be able to 'smooth over the gaps' and 'just play' when there are such issues. I'm trying to digest the debug output but feel like my knowledge of the internals are minimal. Would really appreciate your thoughts @robwalch.

@safouanmatmati
Copy link

We encouter the exact same issue with CloudFlare Stream and VideoJS player.
So the Cloudflare Stream is the problem, not the player, but there is no one information about that on their side since their important issue the Nov 4th. (eq. their servers were down during 3 days).
May be this is a rest of what happened but this situation is critical, and not only for us i think
Thank you for any explanation or workaround if someone has more information.

@robwalch
Copy link
Collaborator

robwalch commented Nov 8, 2023

Hi @mrjamesriley,

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-xd80itw4spq1dhtd.cloudflarestream.com%2Fb957cf02c39df8dc31cdf35b7005fe49%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

I'm on Chrome Version 118.0.5993.117 (Official Build) (arm64) macoS Sonoma 14.1 and am not experiencing any stalls on latest or next:

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-xd80itw4spq1dhtd.cloudflarestream.com%2Fb957cf02c39df8dc31cdf35b7005fe49%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

https://hlsjs-dev.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-xd80itw4spq1dhtd.cloudflarestream.com%2Fb957cf02c39df8dc31cdf35b7005fe49%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

Are you seeing this on Windows only or on Mac Intel architecture only, or only on Chrome 116, or only on virtual OS instances (ex: BrowserStack)?

Or maybe the stall is related to switching behavior - are you seeing playback starting below 720p and then switching up or is it starting on 720p and then switching down? (I'm getting 720p from start to end.) A more complete picture of the timeline and logs would help me reproduce the issue.

@bhayward93
Copy link
Author

bhayward93 commented Nov 8, 2023

Ok so I know how to work around this. But looks like you're not going to communicate. So you just live with it.

@test343 - Apologies, I missed the notification for this. On my end, the issue is resolved. It seems others are still experiencing the issue though.

@bhayward93
Copy link
Author

bhayward93 commented Nov 8, 2023

Hi @bhayward93, have you managed to find a solution here?

We're having issues again, even on the latest version of Hls.js (v1.4.12), and was having the issue on v1.4.8 too. The issue we're seeing is with Cloudflare Streams, where the video plays just fine within the Cloudflare Dashboard, but when the stream is used with Hls.js. It's not happening with every stream, but here is one such example using the Hls.js:

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcustomer-xd80itw4spq1dhtd.cloudflarestream.com%2Fb957cf02c39df8dc31cdf35b7005fe49%2Fmanifest%2Fvideo.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

You should see that in most cases, it freezes at either the 7 seconds mark, or 13 seconds. When doing so, the audio continues. These source videos uploaded to Cloudflare Stream are coming from the Instagram accounts of our users, and thus we are not in control of them. We'd love to Hls.js to be able to 'smooth over the gaps' and 'just play' when there are such issues. I'm trying to digest the debug output but feel like my knowledge of the internals are minimal. Would really appreciate your thoughts @robwalch.

@mrjamesriley - I agree with yourself and @safouanmatmati in the source of the issue being on the Cloudflare Streams end. We presented out findings to them and they said they would fix it for us - after a short while things started working. I have no idea what they did on their end to resolve it unfortunately, but this does indicate they found an issue on their end. If it is not globally fixed I wonder if they had to retranscode our videos or perform some other expensive operations.

I do also agree with @mrjamesriley that it'd be ideal if hls.js could patch over the gaps with this kind of issue. I don't feel reassured that we won't run into it again.

@robwalch robwalch added Stream Issue and removed Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Feb 2, 2024
@robwalch
Copy link
Collaborator

robwalch commented Feb 2, 2024

I do also agree with @mrjamesriley that it'd be ideal if hls.js could patch over the gaps with this kind of issue. I don't feel reassured that we won't run into it again.

We patched 1.4.4 with #5500. Not much else that can be done without a report and sample that reproduces the issue.

Closing this issue as I am unable to reproduce with latest version using any of the links above. If you are experiencing something similar in the latest release, please file a new Bug Report and feel free to reference this one (#5797) making sure to add new details specific to your test case including:

  • Test stream and test page
  • Steps to reproduce
  • Expected behavior
  • Actual behavior

@robwalch robwalch closed this as completed Feb 2, 2024
@video-dev video-dev locked as resolved and limited conversation to collaborators Feb 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants