ploader.load() is never called after the initial load, causing the live playlist (with fMP4 segments) to stall.
What version of Hls.js are you using?
1.6.2
What browser (including version) are you using?
Chrome 137.0.7151.56 (Official Build) (64-bit)
What OS (including version) are you using?
Windows 10
Test stream
No response
Configuration
{
autoStartLoad: false,
enableWorker: true,
ploader: custom,
xhrSetup: adding traceparent and token to request headers
}
ploader : is nothing fancy, only doing the playlist fetch so we can add query parameters about the player state.
Additional player setup steps
No response
Checklist
- [x] The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues
Had to check those two, but I found no demo using live playlist with fmp4 and not using low-latency
- [x] The issue occurs in the stable client (latest release) on https://hlsjs.video-dev.org/demo and not just on my page
- [x] The issue occurs in the latest client (main branch) on https://hlsjs-dev.video-dev.org/demo and not just on my page
- [x] The stream has correct Access-Control-Allow-Origin headers (CORS)
- [x] There are no network errors such as 404s in the browser console when trying to play the stream
Steps to reproduce
- Start a live stream using fmp4
- Playback stall after first live playlist is played
Expected behaviour
The PlaylistLoader should be created and load() invoked approximately every half of the target duration.
It was working just fine with 1.5.20.
What actually happened?
The stream-controller struggling to load the init (it is aborted a couple time before succeeding) The stream stalling since no playlist was fetch after the first one
Console output
04:19.538 HlsLogger: Debug logs enabled for "Hls instance" in hls.js version 1.6.2 []
04:19.539 HlsLogger: attachMedia []
04:19.539 HlsLogger: [buffer-controller]: ['created media source: MediaSource']
04:19.558 HlsLogger: [buffer-controller]: ['Media source opened']
04:19.559 HlsLogger: stopLoad []
04:19.559 HlsLogger: loadSource:redacted []
04:19.560 HlsLogger: [stream-controller]: ['Trigger BUFFER_RESET']
04:19.561 HlsLogger: [buffer-controller]: ['checkPendingTracks (pending: 0 codec events expected: 0) {}']
04:19.855 HlsLogger: [level-controller]: ['manifest loaded, 1 level(s) found, first bitrate: 0']
04:19.855 HlsLogger: [buffer-controller]: ['1 bufferCodec event(s) expected.']
04:19.856 HlsLogger: [level-controller]: ['live playlist 0 REFRESHED 3--1']
04:19.856 HlsLogger: [stream-controller]: ['Level 0 loaded [0,3][part-3--1], cc [0, 0] duration:16']
04:19.856 HlsLogger: [stream-controller]: ['Live playlist sliding: 0.00 start-sn: 0->0 fragments: 4']
04:19.856 HlsLogger: [interstitials]: ['setSchedulePosition 0, undefined']
04:19.856 HlsLogger: [interstitials]: ['buffered to boundary [primary: 0.00-Infinity]']
04:19.856 HlsLogger: [interstitials]: ['resuming [primary: 0.00-Infinity]']
04:19.857 HlsLogger: startLoad(0) []
04:19.857 HlsLogger: [level-controller]: ['Switching to level 0 (SDR @0) from level -1']
04:19.857 HlsLogger: [level-controller]: ['reload live playlist 0bps in 1748459031698 ms']
04:19.857 HlsLogger: [stream-controller]: ['STOPPED->IDLE']
04:19.858 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:19.858 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:19.858 HlsLogger: [subtitle-stream-controller]: ['STOPPED->IDLE']
04:19.858 HlsLogger: [buffer-controller]: ['MediaSource duration is set to Infinity. Setting seekable range to 0-16.']
04:19.859 HlsLogger: startLoad(3.772) []
04:19.859 HlsLogger: [level-controller]: ['reload live playlist 0bps in 1748459031696 ms']
04:19.859 HlsLogger: [stream-controller]: ['FRAG_LOADING->STOPPED']
04:19.859 HlsLogger: [stream-controller]: ['STOPPED->IDLE']
04:19.859 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:19.859 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:19.860 HlsLogger: [subtitle-stream-controller]: ['IDLE->STOPPED']
04:19.860 HlsLogger: [subtitle-stream-controller]: ['STOPPED->IDLE']
04:19.860 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
startLoad @ \hls.mjs:32333
startLoad @ \hls.mjs:34668
startLoadingPrimaryAt @ \hls.mjs:25312
attachPrimary @ \hls.mjs:25305
resumePrimary @ \hls.mjs:25246
advanceSchedule @ \hls.mjs:25207
setSchedulePosition @ \hls.mjs:25118
checkStart @ \hls.mjs:25018
onLevelUpdated @ \hls.mjs:25343
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
onLevelLoaded @ \hls.mjs:32723
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:19.860 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:19.959 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:19.960 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:19.961 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
startLoad @ \hls.mjs:32333
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:19.962 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.063 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.064 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.065 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.065 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.160 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.161 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.162 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.163 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.260 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.260 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.261 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.262 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.362 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.362 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.363 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.364 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.462 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.462 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.463 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.463 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.563 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.563 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.565 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.565 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.661 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.661 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.662 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.662 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.765 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.765 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.766 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.767 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.862 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.862 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.863 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.864 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:20.959 HlsLogger: [stream-controller]: ['Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [0-3], target: 0']
04:20.960 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:20.961 HlsLogger: [stream-controller]: [Error: init load aborted
at ]
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
(anonymous) @ \hls.mjs:8839
Promise.catch
_loadInitSegment @ \hls.mjs:8835
loadFragment @ \hls.mjs:32509
doTickIdle @ \hls.mjs:32502
doTick @ \hls.mjs:32384
tick @ \hls.mjs:6050
setInterval
setInterval @ \hls.mjs:6012
startLoad @ \hls.mjs:32305
startLoad @ \hls.mjs:34668
onLevelLoaded @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
handlePlaylistLoaded @ \hls.mjs:34268
handleTrackOrLevelPlaylist @ \hls.mjs:34132
onSuccess @ \hls.mjs:33993
load @ hwp.js:4
await in load
load @ \hls.mjs:34008
onManifestLoading @ \hls.mjs:33833
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
loadSource @ \hls.mjs:34630
onMediaAttached @ hwp.js:4
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:20.961 HlsLogger: [stream-controller]: ['FRAG_LOADING->IDLE']
04:21.056 HlsLogger: [stream-controller]: ['Loading main sn: 0 of level 0 (frag:[0.000-4.000]) cc: 0 [0-3], target: 3.772']
04:21.056 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:21.201 HlsLogger: [transmuxer-interface]: Starting new transmux session for main sn: 0 level: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: false
timeOffset: 0
initSegmentChange: true []
04:21.202 HlsLogger: [stream-controller]: ['FRAG_LOADING->PARSING']
04:21.202 HlsLogger: [stream-controller]: ['Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc3.640028]']
04:21.202 HlsLogger: [buffer-controller]: ['BUFFER_CODECS: "video" (current SB count 0)']
04:21.202 HlsLogger: [buffer-controller]: ['checkPendingTracks (pending: 1 codec events expect…vc3.640028","container":"video/mp4","id":"main"}}']
04:21.202 HlsLogger: [buffer-controller]: ['creating sourceBuffer(video/mp4;codecs=avc3.640028…avc3.640028","container":"video/mp4","id":"main"}']
04:21.202 HlsLogger: [buffer-controller]: ['SourceBuffers created. Running queue: \nvideo: (SourceBuffer) \naudio: (none) \naudiovideo: (none) }']
04:21.203 HlsLogger: [audio-stream-controller]: ['InitPTS for cc: 0 found from main: 3831303645.061/1']
04:21.203 HlsLogger: [stream-controller]: ['Loaded main sn: 0 of level 0']
04:21.203 HlsLogger: [transmuxer.ts]: Flushed main sn: 0 of level 0 []
04:21.203 HlsLogger: [stream-controller]: ['PARSING->PARSED']
04:21.203 HlsLogger: [stream-controller]: ['Parsed main sn: 0 of level 0 (frag:[0.000-4.000])']
04:21.206 HlsLogger: [stream-controller]: ['Buffered main sn: 0 of level 0 (frag:[0.000-4.000] > buffer:[0.000-4.000])']
04:21.207 HlsLogger: [stream-controller]: ['PARSED->IDLE']
04:21.207 HlsLogger: [stream-controller]: ['seek to target start position 3.772 from current time 0 buffer start 0']
04:21.207 HlsLogger: [stream-controller]: ['Loading main sn: 1 of level 0 (frag:[4.000-8.000]) cc: 0 [0-3], target: 4']
04:21.207 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:21.209 HlsLogger: [stream-controller]: ['media seeking to 3.772, state: FRAG_LOADING']
04:21.209 HlsLogger: [audio-stream-controller]: ['media seeking to 3.772, state: STOPPED']
04:21.209 HlsLogger: [subtitle-stream-controller]: ['media seeking to 3.772, state: IDLE']
04:21.325 HlsLogger: [stream-controller]: ['FRAG_LOADING->PARSING']
04:21.326 HlsLogger: [stream-controller]: ['Loaded main sn: 1 of level 0']
04:21.326 HlsLogger: [transmuxer.ts]: Flushed main sn: 1 of level 0 []
04:21.326 HlsLogger: [stream-controller]: ['PARSING->PARSED']
04:21.326 HlsLogger: [stream-controller]: ['Parsed main sn: 1 of level 0 (frag:[4.000-8.000])']
04:21.328 HlsLogger: [stream-controller]: ['Media seeked to 3.772']
04:21.329 HlsLogger: [stream-controller]: ['Buffered main sn: 1 of level 0 (frag:[4.000-8.000] > buffer:[0.000-8.000])']
04:21.329 HlsLogger: [stream-controller]: ['PARSED->IDLE']
04:21.329 HlsLogger: [stream-controller]: ['Loading main sn: 2 of level 0 (frag:[8.000-12.000]) cc: 0 [0-3], target: 8']
04:21.329 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:21.423 HlsLogger: [stream-controller]: ['FRAG_LOADING->PARSING']
04:21.424 HlsLogger: [stream-controller]: ['Loaded main sn: 2 of level 0']
04:21.424 HlsLogger: [transmuxer.ts]: Flushed main sn: 2 of level 0 []
04:21.424 HlsLogger: [stream-controller]: ['PARSING->PARSED']
04:21.424 HlsLogger: [stream-controller]: ['Parsed main sn: 2 of level 0 (frag:[8.000-12.000])']
04:21.426 HlsLogger: [stream-controller]: ['Buffered main sn: 2 of level 0 (frag:[8.000-12.000] > buffer:[0.000-12.000])']
04:21.426 HlsLogger: [stream-controller]: ['PARSED->IDLE']
04:21.426 HlsLogger: [stream-controller]: ['Loading main sn: 3 of level 0 (frag:[12.000-16.000]) cc: 0 [0-3], target: 12']
04:21.426 HlsLogger: [stream-controller]: ['IDLE->FRAG_LOADING']
04:21.516 HlsLogger: [stream-controller]: ['FRAG_LOADING->PARSING']
04:21.516 HlsLogger: [stream-controller]: ['Loaded main sn: 3 of level 0']
04:21.517 HlsLogger: [transmuxer.ts]: Flushed main sn: 3 of level 0 []
04:21.517 HlsLogger: [stream-controller]: ['PARSING->PARSED']
04:21.517 HlsLogger: [stream-controller]: ['Parsed main sn: 3 of level 0 (frag:[12.000-16.000])']
04:21.519 HlsLogger: [stream-controller]: ['Buffered main sn: 3 of level 0 (frag:[12.000-16.000] > buffer:[0.000-16.000])']
04:21.519 HlsLogger: [stream-controller]: ['PARSED->IDLE']
04:33.360 HlsLogger: [gap-controller]: ['Playback stalling at @15.691715 due to low buffer …fered":[{"start":0,"end":16}],"bufferedIndex":0})']
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
_reportStall @ \hls.mjs:30815
poll @ \hls.mjs:30690
tick @ \hls.mjs:30541
setInterval
setInterval @ \hls.mjs:6012
onMediaAttached @ \hls.mjs:30509
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:33.361 HlsLogger: [latency-controller]: Stall detected, adjusting target latency []
overrideMethod @ hook.js:608
trace @ hwp.js:2
warn @ hwp.js:4
onError @ \hls.mjs:31562
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
_reportStall @ \hls.mjs:30816
poll @ \hls.mjs:30690
tick @ \hls.mjs:30541
setInterval
setInterval @ \hls.mjs:6012
onMediaAttached @ \hls.mjs:30509
emit @ \hls.mjs:10119
emit @ \hls.mjs:34510
trigger @ \hls.mjs:34514
BufferController._onMediaSourceOpen @ \hls.mjs:18177
04:39.859 HlsLogger: [stream-controller]: ['IDLE->WAITING_LEVEL']
Chrome media internals output
The player is being configured to not load after the manifest is loaded with: autoStartLoad: false,. Remove this option, or call startLoad() after MANIFEST_LOADED.
Can you share an example with your playlist loader that reproduces the issue? I can not reproduce the behavior shown in the logs (aborting init segment requests).
Hello,
Thanks for the quick feedback.
I've removed autoStartLoad: false from the config and also the call to startLoad(). Now, ploader is still never called after the initial manifest is loaded, but I no longer see the "init load aborted" message.
Here’s the sequence of Hls.js calls we’re making:
- new Hls()
- attachMedia()
- loadSource
Below is the ploader.load() implementation:
public async load(
context: LoaderContext,
config: LoaderConfiguration,
callbacks: LoaderCallbacks<PlaylistLoaderContext>
): Promise<void> {
if (this.isAborted) {
this.logger.error?.trace('Loader was aborted before load was called.');
return;
}
this.stats.loading.start = Date.now();
this.context = <PlaylistLoaderContext>context;
let playlist;
try {
playlist = await this.playbackClient.getPlaylist(this.abortController.signal);
this.stats.loading.end = Date.now();
} catch (error) {
this.stats.loading.end = Date.now();
if (error instanceof DOMException && error.name == "AbortError") {
this.onAbortError(callbacks, error);
return;
}
this.onError(callbacks, error);
return;
}
callbacks.onSuccess({ url: context.url, data: playlist }, this.stats, this.context, null);
};
private onAbortError(callbacks: LoaderCallbacks<PlaylistLoaderContext>, error: any) {
if (callbacks.onAbort) {
callbacks.onAbort(this.stats, this.context, undefined);
}
this.logger.debug?.trace(`Playlist request aborted.`);
}
private onError(callbacks: LoaderCallbacks<PlaylistLoaderContext>, error: any) {
let message: string = 'Unknown error in HlsPlaylistLoader when loading next playlist.';
let code: number = 0;
if (error instanceof PlaybackClientException) {
message = error.message;
if (error.code !== undefined) {
code = error.code;
}
}
callbacks.onError({ code: code, text: message }, this.context, error, this.stats);
}
public abort() {
if (this.isAborted) {
return;
}
this.isAborted = true;
this.abortController.abort();
};
public destroy() {
this.abort();
};
And here’s an example of the playlist being returned:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-MAP:URI="https://segment.m4s",BYTERANGE="936@0"
#EXTINF:4.000000
#EXT-X-BYTERANGE:946801@936
#EXT-X-PROGRAM-DATE-TIME:2025-05-29T14:04:14.228Z
https://segment.m4s
#EXTINF:4.000000
#EXT-X-BYTERANGE:946632@947737
https://segment.m4s
#EXTINF:4.000000
#EXT-X-BYTERANGE:946755@1894369
https://segment.m4s
Please share a page that reproduces the issue if you'd like help debugging.