video-dev / hls.js

HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.
https://hlsjs.video-dev.org/demo
Other
14.93k stars 2.59k forks source link

bufferStalledError causes playback to stop #5336

Closed radiantmediaplayer closed 1 year ago

radiantmediaplayer commented 1 year ago

What version of Hls.js are you using?

1.3.4 (also tested with 1.3.5 but issue is still here)

What browser (including version) are you using?

Chrome 111.0.5563.111 (Official Build) (64-bit)

What OS (including version) are you using?

Windows 11

Test stream

XXX

Configuration

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

Additional player setup steps

No response

Checklist

Steps to reproduce

Test at XXX

Let the DVR stream play for a minute or so and see that playback gets stuck.

Expected behaviour

Stream plays with hls.js without issue.

What actually happened?

Playback gets stuck with [warn] > Playback stalling at @3605.952112 due to low buffer ({"len":0.05322100000012142,"start":3588.064,"end":3606.005333}) latency-controller.ts:187 [warn] > [playback-rate-controller]: Stall detected, adjusting target latency Error event: {type: 'mediaError', details: 'bufferStalledError', fatal: false, buffer: 0.05322100000012142}

Our customer reports that this stream works without issue with Bitmovin player but get stalled with hls.js.

Console output

DevTools failed to load source map: Could not load content for chrome-extension://cfhdojbkjhnklbpkdaibdccddilifddb/browser-polyfill.js.map: System error: net::ERR_FILE_NOT_FOUND
main.js:341 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
logger.ts:74 [log] > Debug logs enabled for "Hls instance"
hls.ts:371 [log] > stopLoad
hls.ts:339 [log] > loadSource:xxx
stream-controller.ts:550 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:310 [log] > attachMedia
buffer-controller.ts:791 [log] > [buffer-controller]: Media source opened
base-stream-controller.ts:1505 [log] > [subtitle-stream-controller]: STOPPED->IDLE
level-controller.ts:191 [log] > [level-controller]: manifest loaded, 3 level(s) found, first bitrate: 990000
buffer-controller.ts:142 [log] > 1 bufferCodec event(s) expected
hls.ts:361 [log] > startLoad(-1)
level-controller.ts:272 [log] > [level-controller]: switching to level 0 from -1
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 0 with URL-id 0 xxx
base-stream-controller.ts:1505 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:1505 [log] > [subtitle-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1505 [log] > [subtitle-stream-controller]: STOPPED->IDLE
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 0 in 5889 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 0 loaded [4400,5000], cc [0, 0] duration:3606
base-stream-controller.ts:1231 [log] > [stream-controller]: Live playlist sliding: 0.00 start-sn: na->4400 prev-sn: na fragments: 601
buffer-controller.ts:683 [log] > [buffer-controller]: Updating Media Source duration to 3606.000
base-stream-controller.ts:660 [log] > [stream-controller]: Loading fragment 4998 cc: 0 of [4400-5000] level: 0, target: 3588.008
base-stream-controller.ts:1505 [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:1661
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
onLevelLoaded @ stream-controller.ts:647
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
handlePlaylistLoaded @ playlist-loader.ts:651
handleTrackOrLevelPlaylist @ playlist-loader.ts:523
loadsuccess @ playlist-loader.ts:339
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:309
onLevelLoading @ playlist-loader.ts:167
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
loadPlaylist @ level-controller.ts:598
set @ level-controller.ts:289
set @ level-controller.ts:616
set @ hls.ts:486
startLoad @ stream-controller.ts:138
(anonymous) @ hls.ts:363
startLoad @ hls.ts:362
onManifestLoaded @ level-controller.ts:217
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
handleMasterPlaylist @ playlist-loader.ts:447
loadsuccess @ playlist-loader.ts:341
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:309
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
loadSource @ hls.ts:350
loadSelectedStream @ main.js:374
(anonymous) @ main.js:227
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
transmuxer-interface.ts:68 [log] > demuxing in webworker
transmuxer-interface.ts:201 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 4998 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 3588
        initSegmentChange: true
base-stream-controller.ts:371 [log] > [stream-controller]: Loaded fragment 4998 of level 0
775e796c-e92e-4f63-9b4d-419428d248e5:633 [log] > Debug logs enabled for "main"
transmuxer-interface.ts:349 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:349 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:349 [log] > [mp4-remuxer]: reset next timestamp
transmuxer-interface.ts:349 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3
transmuxer-interface.ts:349 [log] > parsed codec:mp4a.40.5, rate:48000, channels:2
base-stream-controller.ts:1505 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1243 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.5]
stream-controller.ts:1254 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.4d001f/avc1.4d401f]
buffer-controller.ts:752 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
buffer-controller.ts:752 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.4d001f)
audio-stream-controller.ts:118 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 2711968224
transmuxer-interface.ts:349 [log] > [transmuxer.ts]: Flushed fragment 4998 of level 0
base-stream-controller.ts:1505 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:504 [log] > [stream-controller]: Buffered main sn: 4998 of level 0 (frag:[3588.000-3594.064] > buffer:[3588.064-3594.016])
base-stream-controller.ts:1505 [log] > [stream-controller]: PARSED->IDLE
stream-controller.ts:1003 [log] > [stream-controller]: adjusting start position by 0.05449999999973443 to match buffer start
stream-controller.ts:1007 [log] > [stream-controller]: seek to target start position 3588.064 from current time 0
level-controller.ts:272 [log] > [level-controller]: switching to level 2 from 0
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-stream-controller.ts:1505 [log] > [stream-controller]: IDLE->WAITING_LEVEL
base-stream-controller.ts:234 [log] > [stream-controller]: media seeking to 3588.064, state: WAITING_LEVEL
base-stream-controller.ts:234 [log] > [audio-stream-controller]: media seeking to 3588.064, state: STOPPED
base-stream-controller.ts:234 [log] > [subtitle-stream-controller]: media seeking to 3588.064, state: IDLE
stream-controller.ts:541 [log] > [stream-controller]: Media seeked to 3588.065
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 11161 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606
base-stream-controller.ts:1231 [log] > [stream-controller]: Live playlist sliding: 0.00 start-sn: na->4400 prev-sn: 4998 fragments: 601
base-stream-controller.ts:1505 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:660 [log] > [stream-controller]: Loading fragment 4999 cc: 0 of [4400-5000] level: 2, target: 3594.016
base-stream-controller.ts:1505 [log] > [stream-controller]: IDLE->FRAG_LOADING
favicon.ico:1          GET https://hlsjs.video-dev.org/favicon.ico 404
transmuxer-interface.ts:201 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 4999 p: -1 level: 2 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 3594
        initSegmentChange: false
base-stream-controller.ts:371 [log] > [stream-controller]: Loaded fragment 4999 of level 2
transmuxer-interface.ts:349 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:349 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:349 [log] > [mp4-remuxer]: reset next timestamp
transmuxer-interface.ts:349 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3
transmuxer-interface.ts:349 [log] > parsed codec:mp4a.40.5, rate:48000, channels:2
base-stream-controller.ts:1505 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1243 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.5]
stream-controller.ts:1254 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.4d001f/avc1.4d401f]
transmuxer-interface.ts:349 [log] > [transmuxer.ts]: Flushed fragment 4999 of level 2
base-stream-controller.ts:1505 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:504 [log] > [stream-controller]: Buffered main sn: 4999 of level 2 (frag:[3594.016-3600.064] > buffer:[3588.064-3600.011])
base-stream-controller.ts:1505 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:660 [log] > [stream-controller]: Loading fragment 5000 cc: 0 of [4400-5000] level: 2, target: 3600.011
base-stream-controller.ts:1505 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:371 [log] > [stream-controller]: Loaded fragment 5000 of level 2
base-stream-controller.ts:1505 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:349 [log] > [transmuxer.ts]: Flushed fragment 5000 of level 2
base-stream-controller.ts:1505 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:504 [log] > [stream-controller]: Buffered main sn: 5000 of level 2 (frag:[3600.011-3606.064] > buffer:[3588.064-3606.005])
base-stream-controller.ts:1505 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
buffer-controller.ts:683 [log] > [buffer-controller]: Updating Media Source duration to 3606.064
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
gap-controller.ts:219 [warn] > Playback stalling at @3605.952112 due to low buffer ({"len":0.05322100000012142,"start":3588.064,"end":3606.005333})
_reportStall @ gap-controller.ts:219
poll @ gap-controller.ts:150
checkBuffer @ stream-controller.ts:932
onTickEnd @ stream-controller.ts:206
doTick @ stream-controller.ts:201
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:121
(anonymous) @ hls.ts:363
startLoad @ hls.ts:362
onManifestLoaded @ level-controller.ts:217
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
handleMasterPlaylist @ playlist-loader.ts:447
loadsuccess @ playlist-loader.ts:341
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:309
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
loadSource @ hls.ts:350
loadSelectedStream @ main.js:374
(anonymous) @ main.js:227
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
latency-controller.ts:187 [warn] > [playback-rate-controller]: Stall detected, adjusting target latency
onError @ latency-controller.ts:187
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
_reportStall @ gap-controller.ts:224
poll @ gap-controller.ts:150
checkBuffer @ stream-controller.ts:932
onTickEnd @ stream-controller.ts:206
doTick @ stream-controller.ts:201
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:121
(anonymous) @ hls.ts:363
startLoad @ hls.ts:362
onManifestLoaded @ level-controller.ts:217
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
handleMasterPlaylist @ playlist-loader.ts:447
loadsuccess @ playlist-loader.ts:341
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:309
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
loadSource @ hls.ts:350
loadSelectedStream @ main.js:374
(anonymous) @ main.js:227
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
main.js:725 Error event: {type: 'mediaError', details: 'bufferStalledError', fatal: false, buffer: 0.05322100000012142}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
_reportStall @ gap-controller.ts:224
poll @ gap-controller.ts:150
checkBuffer @ stream-controller.ts:932
onTickEnd @ stream-controller.ts:206
doTick @ stream-controller.ts:201
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:121
(anonymous) @ hls.ts:363
startLoad @ hls.ts:362
onManifestLoaded @ level-controller.ts:217
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
handleMasterPlaylist @ playlist-loader.ts:447
loadsuccess @ playlist-loader.ts:341
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:309
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:250
trigger @ hls.ts:258
loadSource @ hls.ts:350
loadSelectedStream @ main.js:374
(anonymous) @ main.js:227
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
DevTools failed to load source map: Could not load content for https://static.cloudflareinsights.com/performance.min.js.map: Load canceled due to load timeout
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
stream-controller.ts:615 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
level-controller.ts:584 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
base-playlist-controller.ts:137 [log] > [level-controller]: live playlist 2 MISSED
base-playlist-controller.ts:249 [log] > [level-controller]: reload live playlist 2 in 3000 ms
 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
 [log] > [level-controller]: live playlist 2 MISSED
 [log] > [level-controller]: reload live playlist 2 in 3000 ms
 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
 [log] > [level-controller]: live playlist 2 MISSED
 [log] > [level-controller]: reload live playlist 2 in 3000 ms
 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
 [log] > [level-controller]: live playlist 2 MISSED
 [log] > [level-controller]: reload live playlist 2 in 3000 ms
 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048
 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 xxx
 [log] > [level-controller]: live playlist 2 MISSED
 [log] > [level-controller]: reload live playlist 2 in 3000 ms
 [log] > [stream-controller]: Level 2 loaded [4400,5000], cc [0, 0] duration:3606.048

Chrome media internals output

N/A
radiantmediaplayer commented 1 year ago

I can provide the URL to the stream privately. Please do ask. But maybe you will see something with the logs I have missed.

robwalch commented 1 year ago

"live playlist 2 MISSED" means the live playlist was reloaded but the playlist content did not change. The logs show this happened for 12 seconds.

If a live stream does not refresh with playlist updates it should be expected to stall.

radiantmediaplayer commented 1 year ago

So this is a stream issue, the live playlist does not refresh rapidly enough and no new content is available hence the stall? Is there a setting to make it better?

radiantmediaplayer commented 1 year ago

Thanks for helping we were able to find the root cause server side.