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

BufferStalledError at the beginning of the video #4975

Closed
5 tasks done
sailor opened this issue Oct 19, 2022 · 7 comments · Fixed by #5816
Closed
5 tasks done

BufferStalledError at the beginning of the video #4975

sailor opened this issue Oct 19, 2022 · 7 comments · Fixed by #5816

Comments

@sailor
Copy link

sailor commented Oct 19, 2022

What version of Hls.js are you using?

1.2.4

What browser (including version) are you using?

Chrome 106.0.5249.119 (Official Build) (arm64)

What OS (including version) are you using?

macOS 12.1

Test stream

https://stream.mux.com/rpNd0200OCjQ1TAqUOCwZEFiIK02PLeBEGcoGG015EMVBac.m3u8

Configuration

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

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Play the stream here: https://hls-js.netlify.app/demo?src=https%3A%2F%2Fstream.mux.com%2FrpNd0200OCjQ1TAqUOCwZEFiIK02PLeBEGcoGG015EMVBac.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
  2. The playback never starts, but if you seek in the video, then it will be launched

Expected behaviour

The playback should start when the play button is pressed

What actually happened?

The playback never starts

Console output

0593522d160ef12a33e404217757ccea1ab9df75.js:1 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] >
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > stopLoad
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > loadSource:https://stream.mux.com/rpNd0200OCjQ1TAqUOCwZEFiIK02PLeBEGcoGG015EMVBac.m3u8
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Trigger BUFFER_RESET
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > attachMedia
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [buffer-controller]: Media source opened
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [subtitle-stream-controller]: STOPPED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [level-controller]: manifest loaded, 5 level(s) found, first bitrate: 2516370
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > 1 bufferCodec event(s) expected
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > startLoad(-1)
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [level-controller]: switching to level 3 from -1
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [level-controller]: Attempt loading level index 3 with URL-id 0 https://manifest-gcp-us-east1-vop1.fastly.mux.com/UFnnHTx9njnmaJFEqOykpMRq2jXqolTdcDc6cYhkCSj56mFgL4h9AWkOsvI49baFJqwpBEE3rF8SLINxDhtQvaEfqgZqD9IfOWyJyhEUT9k/rendition.m3u8?cdn=fastly&expires=1666785600&skid=default&signature=NjM1OTIxNDBfMzI1OGEzOWM0NWMyMDE3Mzg4OWNlNzYwZmVlZGExYzFiNTQ3ZmYwNTViOTg2MDllOThlMTAwYzcxZjIwNjcxZg==&vsid=Ja9lEQz7V2MzcMo6axCipRsLPAidSPdKvFctcnIwajM01wcscwwmlsfjuQ02mJ2Bdj7Nl4Wwr4Mnk
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: STOPPED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [subtitle-stream-controller]: IDLE->STOPPED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [subtitle-stream-controller]: STOPPED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Level 3 loaded [0,507], cc [0, 0] duration:2538.453
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [buffer-controller]: Updating Media Source duration to 2538.453
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-507] level: 3, target: 0
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > demuxing in webworker
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 3 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
        initSegmentChange: true
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 0 of level 3
049f4f9f-477e-4073-b46c-5db546c56a87:1 [log] >
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [mp4-remuxer]: ISGenerated flag reset
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [mp4-remuxer]: initPTS & initDTS reset
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > parsed codec:mp4a.40.5, rate:48000, channels:2
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.5]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640020/avc1.640020]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.640020)
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 900540
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 0 of level 3
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 0 of level 3 [2.047,5.013]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [level-controller]: switching to level 4 from 3
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [level-controller]: Attempt loading level index 4 with URL-id 0 https://manifest-gcp-us-east1-vop1.fastly.mux.com/MFnQsQ8cIXaibmdby5yiWmzxKWmHumL7xqZaBREyy7LmpZIuuBOxf8HrrBGWEr7uKjL6d102XMFBZ7YkOETkrOshFpXZWQeTn/rendition.m3u8?cdn=fastly&expires=1666785600&skid=default&signature=NjM1OTIxNDBfZmVmZTMzZDY1Y2M1M2RhMGNlYjYzNGMxYTE3MTJkNjM2NjU5ZjZlZWRiZmQ4YTk1ZjU3MWIwZWVmYzBlMWEwZg==&vsid=Ja9lEQz7V2MzcMo6axCipRsLPAidSPdKvFctcnIwajM01wcscwwmlsfjuQ02mJ2Bdj7Nl4Wwr4Mnk
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->WAITING_LEVEL
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Level 4 loaded [0,507], cc [0, 0] duration:2538.453
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: WAITING_LEVEL->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-507] level: 4, target: 5.013
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 4 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 5
        initSegmentChange: false
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 1 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [mp4-remuxer]: ISGenerated flag reset
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [mp4-remuxer]: reset next timestamp
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [mp4-remuxer]: ISGenerated flag reset
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [mp4-remuxer]: initPTS & initDTS reset
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > parsed codec:mp4a.40.5, rate:48000, channels:2
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.5]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.64002a/avc1.64002a]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 1 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 1 of level 4 [2.047,10.005]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-507] level: 4, target: 10.005
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [warn] > Playback stalling at @0 due to low buffer ({"len":0,"start":0,"end":0,"nextStart":2.047})
_reportStall @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
poll @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
checkBuffer @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onTickEnd @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
doTick @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
tick @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
setInterval (async)
setInterval @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
startLoad @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
startLoad @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onManifestLoaded @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
handleMasterPlaylist @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadsuccess @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
readystatechange @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
XMLHttpRequest.send (async)
loadInternal @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
load @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
load @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onManifestLoading @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadSource @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadSelectedStream @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [warn] > [playback-rate-controller]: Stall detected, adjusting target latency
onError @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
_reportStall @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
poll @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
checkBuffer @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onTickEnd @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
doTick @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
tick @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
setInterval (async)
setInterval @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
startLoad @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
startLoad @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onManifestLoaded @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
handleMasterPlaylist @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadsuccess @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
readystatechange @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
XMLHttpRequest.send (async)
loadInternal @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
load @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
load @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onManifestLoading @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadSource @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadSelectedStream @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
0593522d160ef12a33e404217757ccea1ab9df75.js:1 Error event: {type: 'mediaError', details: 'bufferStalledError', fatal: false, buffer: 0}
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
_reportStall @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
poll @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
checkBuffer @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onTickEnd @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
doTick @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
tick @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
setInterval (async)
setInterval @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
startLoad @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
startLoad @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onManifestLoaded @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
handleMasterPlaylist @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadsuccess @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
readystatechange @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
XMLHttpRequest.send (async)
loadInternal @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
load @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
load @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
onManifestLoading @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
emit @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
trigger @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadSource @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
loadSelectedStream @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
(anonymous) @ 0593522d160ef12a33e404217757ccea1ab9df75.js:1
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 2 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 2 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 2 of level 4 [2.047,15.014]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-507] level: 4, target: 15.014
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 3 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 3 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 3 of level 4 [2.047,20.011]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-507] level: 4, target: 20.011
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 4 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 4 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 4 of level 4 [2.047,25.003]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 5 cc: 0 of [0-507] level: 4, target: 25.003
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 5 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 5 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 5 of level 4 [2.047,30.014]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 6 cc: 0 of [0-507] level: 4, target: 30.014
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 6 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 6 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 6 of level 4 [2.047,35.008]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 7 cc: 0 of [0-507] level: 4, target: 35.008
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 7 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 7 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 7 of level 4 [2.047,40.000]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 8 cc: 0 of [0-507] level: 4, target: 40
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loaded fragment 8 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: FRAG_LOADING->PARSING
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [transmuxer.ts]: Flushed fragment 8 of level 4
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSING->PARSED
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Buffered main sn: 8 of level 4 [2.047,45.013]
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: PARSED->IDLE
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: Loading fragment 9 cc: 0 of [0-507] level: 4, target: 45.013
0593522d160ef12a33e404217757ccea1ab9df75.js:1 [log] > [stream-controller]: IDLE->FRAG_LOADING

Chrome media internals output

ChunkDemuxer
Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 48000, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true
Failed to initialize DecryptingVideoDecoder
Selected VDAVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1280,720], visible rect: [0,0,1280,720], natural size: [1280,720], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}
Effective playback rate changed from 0 to 1
@sailor sailor added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Oct 19, 2022
@robwalch
Copy link
Collaborator

Playback stalling at @0 due to low buffer ({"len":0,"start":0,"end":0,"nextStart":2.047})

Starting at 0 with "nextStart":2.047 indicates that your stream has a gap larger than 2 seconds at the beginning. You can see in the demo timeline that your stream is missing video at the start. HLS.js will jump 2 second gaps on play, but not larger ones. You must resolve this by seeking or reencoding your stream so that audio and video do not start so far apart.

@robwalch robwalch added Stream Issue and removed Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Oct 19, 2022
@jhonalino
Copy link
Contributor

adding "maxBufferHole": 2.5, to the config seems to work for a quick and dirty fix.

@kevleyski
Copy link
Collaborator

I find you need to set maxFragLookUpTolerance too

In controller::stream-controller.ts::seekToStartPos the delta (between audio and video) is ~2 secs if you force the config maxBufferHole and maxFragLookUpTolerance to accommodate then yes it plays back no problem

Whilst the stream could be better - I tried a bunch of other players and it plays back, so I guess it should be fixed in hls.js

@kevleyski
Copy link
Collaborator

(should add this is not a regression, much older versions also fail similarly)

@robwalch robwalch added this to Top priorities in Release Planning and Backlog via automation Oct 20, 2022
@robwalch
Copy link
Collaborator

robwalch commented Oct 20, 2022

For a fix, we could use the fragment-tracker state in gap-controller to determine that the start segments were appended (or wait for them if in-flight). Then, since there is no hope to fill the gap, seek on play ignoring the gap/lookup config options. (not seeking while paused or onload is intentional as it can interfere with video analytics or the expectation while paused even if autoplay flag is present and prevented because of the buffer gap).

If someone else wants to give this a go I'm happy to review. v1.3-v1.5 issues and PRs with milestones are higher priority for me at this time since there are config workarounds and the content is malformed.

@mkrn
Copy link

mkrn commented Sep 11, 2023

I'm having the same issue but the error message is
Error: Playback stalling at @0 due to low buffer ({"len":0.106666,"start":0,"end":0.106666}) at GapController._reportStall
(does not include nextStart)
Is it the same issue or should it be filed as a different issue? @robwalch

@robwalch
Copy link
Collaborator

@mkrn please file a new issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Release Planning and Backlog
  
Top priorities
Development

Successfully merging a pull request may close this issue.

5 participants