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

Video will not play if 404 on first fragment #5153

Open
5 tasks done
Alibirb opened this issue Jan 11, 2023 · 11 comments
Open
5 tasks done

Video will not play if 404 on first fragment #5153

Alibirb opened this issue Jan 11, 2023 · 11 comments

Comments

@Alibirb
Copy link

Alibirb commented Jan 11, 2023

What version of Hls.js are you using?

master

What browser (including version) are you using?

Firefox 108.0.1 and Chromium 108.0.5359.124

What OS (including version) are you using?

Manjaro

Test stream

No response

Configuration

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

Additional player setup steps

Sorry for the lack of test stream; I'm seeing this on some surveillance footage of my house, which I don't really want to make externally accessible. I tried to find a test stream that uses separate TS files for each segment, but couldn't find any. If anyone knows of one, you should be able to just edit the first entry of the manifest to have an incorrect filename so it gives a 404, and then this error should pop up.

I also can't actually test it with the regular netlify-hosted demos, because my stream is only served over HTTP, not HTTPS, and even with CORS, the browser doesn't allow accessing HTTP content from an HTTPS page. But I checked out both master and 1.2.9 and ran the demo app locally over HTTP, and verified the behavior is the same.

The stream was created with this command: ffmpeg -loglevel warning -rtsp_transport tcp -i rtsp://MY_CAMERA:554/ -strftime 1 -c copy -flags +cgop -g 30 -hls_time 10 -hls_list_size 60480 -hls_flags append_list+delete_segments /var/recordings/1/1/combined.m3u8

Checklist

Steps to reproduce

  1. Attempt to play a stream composed of files containing individual TS segments, wherein the first segment returns a 404 but later segments are returned successfully

Expected behaviour

Player should play the first working segment, or at least allow to seek to a working segment. This is how it works if the missing segment is in the MIDDLE of the playlist, but not when it's the first segment.

What actually happened?

Player will not play anything at all. On Firefox, it shows the video as being 0 seconds. Chromium shows the correct time, and allows to TRY to seek, but no matter where you seek to, it won't play.

Console output

[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.
log.js:24 [HMR] Waiting for update signal from WDS...
index.js:551 [webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.
log.js:24 [HMR] Waiting for update signal from WDS...
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:375 [log] > stopLoad
hls.ts:343 [log] > loadSource:http://clustervms.localdomain/v0/recordings/1/1/combined-2.m3u8
stream-controller.ts:543 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:314 [log] > attachMedia
buffer-controller.ts:756 [log] > [buffer-controller]: Media source opened
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: STOPPED->IDLE
level-controller.ts:172 [log] > [level-controller]: manifest loaded, 1 level(s) found, first bitrate: 0
buffer-controller.ts:136 [log] > 1 bufferCodec event(s) expected
hls.ts:365 [log] > startLoad(-1)
level-controller.ts:251 [log] > [level-controller]: switching to level 0 from -1
base-stream-controller.ts:1404 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: STOPPED->IDLE
stream-controller.ts:608 [log] > [stream-controller]: Level 0 loaded [29712,64530], cc [0, 90] duration:347896.7039999981
buffer-controller.ts:648 [log] > [buffer-controller]: Updating Media Source duration to 347896.704
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
onLevelLoaded @ stream-controller.ts:661
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handlePlaylistLoaded @ playlist-loader.ts:709
handleTrackOrLevelPlaylist @ playlist-loader.ts:546
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
onLevelLoaded @ stream-controller.ts:661
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handlePlaylistLoaded @ playlist-loader.ts:709
handleTrackOrLevelPlaylist @ playlist-loader.ts:546
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 1000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
onLevelLoaded @ stream-controller.ts:661
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handlePlaylistLoaded @ playlist-loader.ts:709
handleTrackOrLevelPlaylist @ playlist-loader.ts:546
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
onLevelLoaded @ stream-controller.ts:661
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handlePlaylistLoaded @ playlist-loader.ts:709
handleTrackOrLevelPlaylist @ playlist-loader.ts:546
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 2000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 4000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 8000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
(anonymous) @ hls.ts:367
startLoad @ hls.ts:366
onManifestLoaded @ level-controller.ts:196
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleTrackOrLevelPlaylist @ playlist-loader.ts:509
loadsuccess @ playlist-loader.ts:346
readystatechange @ xhr-loader.ts:202
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
load @ playlist-loader.ts:310
onManifestLoading @ playlist-loader.ts:155
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
loadSource @ hls.ts:354
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
hls.ts:396 [log] > recoverMediaError
hls.ts:323 [log] > detachMedia
buffer-controller.ts:162 [log] > [buffer-controller]: media source detaching
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->STOPPED
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: IDLE->STOPPED
hls.ts:314 [log] > attachMedia
buffer-controller.ts:756 [log] > [buffer-controller]: Media source opened
buffer-controller.ts:648 [log] > [buffer-controller]: Updating Media Source duration to 347896.704
base-stream-controller.ts:1404 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: STOPPED->IDLE
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 1000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 2000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 4000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
hls.ts:396 [log] > recoverMediaError
hls.ts:323 [log] > detachMedia
buffer-controller.ts:162 [log] > [buffer-controller]: media source detaching
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->STOPPED
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: IDLE->STOPPED
hls.ts:314 [log] > attachMedia
buffer-controller.ts:756 [log] > [buffer-controller]: Media source opened
buffer-controller.ts:648 [log] > [buffer-controller]: Updating Media Source duration to 347896.704
base-stream-controller.ts:1404 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1404 [log] > [subtitle-stream-controller]: STOPPED->IDLE
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 1000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
startLoad @ stream-controller.ts:150
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 2000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 4000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 8000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
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
zoom @ timeline-chart.ts:228
TimelineChart.canvas.onwheel @ timeline-chart.ts:113
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 16000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
(anonymous) @ main.js:725
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
stream-controller.ts:185 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
base-stream-controller.ts:620 [log] > [stream-controller]: Loading fragment 29712 cc: 0 of [29712-64530] level: 0, target: 0
base-stream-controller.ts:1404 [log] > [stream-controller]: IDLE->FRAG_LOADING
xhr-loader.ts:134          GET http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts 404 (Not Found)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
xhr-loader.ts:209 [error] > 404 while loading http://clustervms.localdomain/v0/recordings/1/1/combined-1672775826.ts
readystatechange @ xhr-loader.ts:209
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:134
load @ xhr-loader.ts:72
(anonymous) @ fragment-loader.ts:82
load @ fragment-loader.ts:62
_doFragLoad @ base-stream-controller.ts:635
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1266 [warn] > [stream-controller]: Fragment 29712 of main 0 failed to load, retrying in 32000ms
onFragmentOrKeyLoadError @ base-stream-controller.ts:1266
onError @ stream-controller.ts:858
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
handleFragLoadError @ base-stream-controller.ts:678
(anonymous) @ base-stream-controller.ts:636
Promise.catch (async)
_doFragLoad @ base-stream-controller.ts:636
_loadFragForPlayback @ base-stream-controller.ts:360
loadFragment @ base-stream-controller.ts:336
loadFragment @ stream-controller.ts:350
doTickIdle @ stream-controller.ts:328
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:116
onMediaAttached @ base-stream-controller.ts:188
onMediaAttached @ stream-controller.ts:495
emit @ index.js:203
emit @ hls.ts:254
trigger @ hls.ts:262
BufferController._onMediaSourceOpen @ buffer-controller.ts:759
base-stream-controller.ts:1404 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
main.js:725 Error event: {type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}

Chrome media internals output

No response

@Alibirb Alibirb added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Jan 11, 2023
@robwalch
Copy link
Collaborator

robwalch commented Jan 11, 2023

The logs do not show any attempt made to seek. Please include logs from v1.2.9 that cover the description under "What actually happened?"

The player is setup to retry fragment loading. It does and when all attempts fail and there is no other level to switch to, the error is escalated to fatal. You would need to seek before that point. In the latest release, the player may not retry on 4xx errors since most often the result will be the same.

The HLS spec recommends a GAP tag for segments that should not be loaded. With support for GAP tags the player would attempt a switch or jump gaps.

@Alibirb
Copy link
Author

Alibirb commented Jan 11, 2023

Sorry, the first log I tried to attach exceeded the character limit, so it wouldn't let me post it, so I reloaded the page and copied the fresh log. I'll see if I can post another log showing attempts to seek after work.

The player is set to try to recover from media errors, even fatal ones. This works when the failed segment is in the middle of the playlist, but when it's the first segment, it never tries to load any other segments.

The EXT-X-GAP tag, as I understand it, is to indicate that there's a gap with no media. Wouldn't applying it to my segments make the player simply skip them all, even when the segments actually are available?

@robwalch
Copy link
Collaborator

robwalch commented Jan 11, 2023

The player is set to try to recover from media errors, even fatal ones.

There's no in-player recovery from fatal errors. You can instantiate a new player instance and reload the stream - maybe with a new startPosition to skip the first segment.

The EXT-X-GAP tag, as I understand it, is to indicate that there's a gap with no media. Wouldn't applying it to my segments make the player simply skip them all, even when the segments actually are available?

If the segment 404s it is not available. Ideally you would not publish segments in the playlist that are not available. A GAP tag is a way to tell clients not to load something that you know is incomplete or unavailable. Each GAP tag only applies to one segment.

@robwalch
Copy link
Collaborator

I'll see if I can post another log showing attempts to seek after work.

Please do so with the latest version. Including seek attempts and all logs up to fatal error or end will help us see what is actually happening, where there are bugs, and where we could make improvements.

This works when the failed segment is in the middle of the playlist, but when it's the first segment, it never tries to load any other segments.

The gap controller can skip up to 2 seconds to begin playback if media is buffered. It will not skip large gaps if playback hasn't started and playback cannot start if the first segment cannot be loaded.

@Alibirb
Copy link
Author

Alibirb commented Jan 11, 2023

There's no in-player recovery from fatal errors. You can instantiate a new player instance and reload the stream - maybe with a new startPosition to skip the first segment.

Technically, it's not the player, but the demo page does have logic to try to recover from certain "fatal" errors. I'll have to try the startPosition setting. That sounds like it should do the trick.

If the segment 404s it is not available. Ideally you would not publish segments in the playlist that are not available. A GAP tag is a way to tell clients not to load something that you know is incomplete or unavailable. Each GAP tag only applies to one segment.

That's what I thought. I understand that obviously if I KNOW the segment isn't available, I shouldn't be telling clients to use it, but unfortunately things can get messed up, and I want the client to be able to handle basic errors like this as gracefully as possible.

The gap controller can skip up to 2 seconds to begin playback if media is buffered. It will not skip large gaps if playback hasn't started and playback cannot start if the first segment cannot be loaded.

If I'm understanding you correctly, it sounds like the behavior I'm seeing is intentional. The gap controller intentionally limits the initial gap to 2 seconds, while allowing longer gaps in the middle of playback. So if my 10 second initial segment is missing, the player deliberately refuses to skip the gap, whereas it would skip the gap if it occurred in the middle of the stream? Why does it enforce this restriction?

@Alibirb
Copy link
Author

Alibirb commented Jan 11, 2023

Edited description with new log, where I tried to seek, as well as hit the "Recover media-error" button a few times.

@Alibirb
Copy link
Author

Alibirb commented Jan 11, 2023

There's no in-player recovery from fatal errors. You can instantiate a new player instance and reload the stream - maybe with a new startPosition to skip the first segment.

Setting startPosition to 10 to skip the first segment does get the video to play. So I should be able to write some error-handling logic in my application to retry with different start positions if it fails to load. Thank you!

@robwalch robwalch added Bug Confirmed and removed Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Jan 12, 2023
@robwalch
Copy link
Collaborator

robwalch commented Jan 12, 2023

Thanks for the logs. The player is retrying up to fragLoadingMaxRetry, increasing the delay between retries based on fragLoadingRetryDelay up to fragLoadingMaxRetryTimeout:

// keep retrying until the limit will be reached

I can reproduce and finally get the fatal error after the last attempt fails (by network blocking the first segment in a single variant playlist, I get all the same logs up to this point and then a final fatal error that stops the player):

hls.js:2890 [warn] > [stream-controller]: Fragment 0 of main 0 failed to load, retrying in 32000ms
hls.js:2999 [log] > [stream-controller]: FRAG_LOADING->FRAG_LOADING_WAITING_RETRY
hls-demo.js:41531 Error event: 
{type: 'networkError', details: 'fragLoadError', fatal: false, frag: Fragment, response: {…}, …}
hls.js:8196 [log] > [stream-controller]: retryDate reached, switch back to IDLE state
hls.js:2999 [log] > [stream-controller]: FRAG_LOADING_WAITING_RETRY->IDLE
hls.js:2380 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-63] level: 0, target: 0
hls.js:2999 [log] > [stream-controller]: IDLE->FRAG_LOADING
hls.js:26252 [error] > 0 while loading https://test-streams.mux.dev/x36xhzz/url_6/url_846/193039199_mp4_h264_aac_hq_7.ts
hls.js:2904 [error] > fragLoadError reaches max retry, redispatch as fatal ...
hls.js:15608 [log] > stopLoad
hls.js:2999 [log] > [stream-controller]: FRAG_LOADING->STOPPED
hls.js:2999 [log] > [subtitle-stream-controller]: IDLE->STOPPED
hls.js:2999 [log] > [stream-controller]: STOPPED->ERROR
hls.js:2999 [log] > [audio-stream-controller]: STOPPED->ERROR
hls-demo.js:41531 Error event: 
{type: 'networkError', details: 'fragLoadError', fatal: true, frag: Fragment, response: {…}, …}

This is expected. To handle the loading error quickly and shift loading to a new time, use hls.startLoad(10) (or whatever time you want to start loading at).

Bug Confirmed:
Seeking is ignored and I did not expect that to be the case. Thanks for bringing this to my attention. It looks like the HTMLMediaElement's seeking event does not fire in this state (before playback / no media / readyState: 0).

HLS.js ignores currentTime intentionally prior to anything being loaded. This is so that it honors startPosition and/or seeks to the live edge in live streams. So I'll have to think about what event(s) should make the player adjust the internal nextLoadPosition to a new currentTime and away from startPosition. I'm not sure it should as the content is not being served correctly. I think using the API to workaround this kind of issue is best. We should not have the player seek on its own (without signals like GAP tags) as this could make the player request all the segments in an expired playlist rather than failing fast as it should. Using currentTime before playback has begun could present new issues for valid streams.

@Alibirb
Copy link
Author

Alibirb commented Jan 12, 2023

I've discovered that I actually need to set both startPosition and currentTime when reloading in order to work around this properly. Upon initial page load, just calling startLoad() with a startPosition on error gets the stream going, but once it's playing, if you seek back to the beginning, it seems like startPosition gets ignored in favor of currentTime (it keeps trying to load that first segment). Setting both seems to do the trick.

@robwalch
Copy link
Collaborator

robwalch commented Feb 2, 2024

Let me know if #6171 resolves the issue for you. I think the option of skipping segments that fail to reload should be behind a config option. See the PR description and please provide feedback.

@Alibirb
Copy link
Author

Alibirb commented Feb 3, 2024

#6171 seems to fix the issue. The video player now has the correct length and allows to play the segments that are present. I agree that the auto-skipping should be a config option, as that will be desirable for some use cases but not all of them.

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

No branches or pull requests

2 participants