video-dev / hls.js

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

BufferStalledError occurs at the end of a video from a certain playlist #5490

Open evaschmuhl opened 1 year ago

evaschmuhl commented 1 year ago

What version of Hls.js are you using?

1.3.1

What browser (including version) are you using?

Safari 16.4

What OS (including version) are you using?

Mac Ventura 13.3.1

Test stream

https://www.familie.de/schwangerschaft/online-hebamme-schwangerschaft-stillzeit-wochenbett/

Configuration

{
        maxBufferSize: 0,
        maxBufferLength: 10,
        capLevelToPlayerSize: true,
        autoStartLoad: false,
        ignoreDevicePixelRatio: true
}

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Just let the video play until the end or seek

Also visible here without any individual player environment:

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fvid-cdn60.stroeermb.de%2F1047217647_v4%2Fplaylist.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

Expected behaviour

No buffer stalled error and an endscreen will then be visible and a new video can be chosen and plays.

What actually happened?

the buffer stalled error is thrown and only this video can be played again by seeking in the timeline.

Console output

Console output from the https://hlsjs.video-dev.org/demo

[Log] Using Hls.js config: – {debug: true, enableWorker: true, lowLatencyMode: true, …} (hls-demo.js, line 24434)

{debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}Object
[Log] [log] > – "Debug logs enabled for \"Hls instance\" in hls.js version 1.4.3" (hls.js, line 542)

[Log] [log] > – "stopLoad" (hls.js, line 25713)

[Log] [log] > – "loadSource:https://vid-cdn60.stroeermb.de/1047217647_v4/playlist.m3u8" (hls.js, line 25681)

[Log] [log] > – "[stream-controller]:" – "Trigger BUFFER_RESET" (hls.js, line 15705)

[Log] [log] > – "attachMedia" (hls.js, line 25655)

[Log] [log] > – "[buffer-controller]: Media source opened" (hls.js, line 18757)

[Log] [log] > – "[subtitle-stream-controller]:" – "STOPPED->IDLE" (hls.js, line 9825)

[Log] [log] > – "[level-controller]:" – "manifest loaded, 4 level(s) found, first bitrate: 828000" (hls.js, line 6386)

[Log] [log] > – "1 bufferCodec event(s) expected" (hls.js, line 18851)

[Log] [log] > – "startLoad(-1)" (hls.js, line 25703)

[Log] [log] > – "[level-controller]:" – "Switching to level 0 from level -1" (hls.js, line 6598)

[Log] [log] > – "[level-controller]:" – "Loading level index 0 with URI 1/1 https://vid-cdn60.stroeermb.de/1047217647_v4/360p.m3u8" (hls.js, line 6498)

[Log] [log] > – "[stream-controller]:" – "STOPPED->IDLE" (hls.js, line 9825)

[Log] [log] > – "[subtitle-stream-controller]:" – "IDLE->STOPPED" (hls.js, line 9825)

[Log] [log] > – "[subtitle-stream-controller]:" – "STOPPED->IDLE" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Level 0 loaded [0,26][part-26--1], cc [0, 0] duration:272.743222" (hls.js, line 15756)

[Log] [log] > – "[buffer-controller]: Updating Media Source duration to 272.743" (hls.js, line 19307)

[Log] [log] > – "[stream-controller]:" – "Loading fragment 0 cc: 0 of [0-26] level: 0, target: 0" (hls.js, line 9085)

[Log] [log] > – "[stream-controller]:" – "IDLE->FRAG_LOADING" (hls.js, line 9825)

[Log] [log] > – "injecting Web Worker for \"main\"" (hls.js, line 14746)

[Log] [log] > – "[transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1↵        discontinuity: true↵        trackSwitch…" (hls.js, line 14847)

"[transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
        initSegmentChange: true"
[Log] [log] > – "[stream-controller]:" – "Loaded fragment 0 of level 0" (hls.js, line 8840)

[Log] [log] > – "Debug logs enabled for \"main\" in hls.js version 1.4.3" (012f20c7-9510-4dce-beb8-34d08daadcaf, line 542)

[Log] [log] > – "[mp4-remuxer]: ISGenerated flag reset" (hls.js, line 14955)

[Log] [log] > – "[mp4-remuxer]: initPTS & initDTS reset" (hls.js, line 14955)

[Log] [log] > – "[mp4-remuxer]: reset next timestamp" (hls.js, line 14955)

[Log] [log] > – "manifest codec:undefined, ADTS type:2, samplingIndex:4" (hls.js, line 14955)

[Log] [log] > – "parsed codec:mp4a.40.5, rate:44100, channels:2" (hls.js, line 14955)

[Log] [log] > – "[stream-controller]:" – "FRAG_LOADING->PARSING" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[//mp4a.40.5]" (hls.js, line 16251)

[Log] [log] > – "[stream-controller]:" – "Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc1.4d401e]" (hls.js, line 16256)

[Log] [log] > – "[buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)" (hls.js, line 19371)

[Log] [log] > – "[buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.4d401e)" (hls.js, line 19371)

[Log] [log] > – "[audio-stream-controller]:" – "InitPTS for cc: 0 found from main: 126000" (hls.js, line 17028)

[Log] [log] > – "[transmuxer.ts]: Flushed fragment 0 of level 0" (hls.js, line 14955)

[Log] [log] > – "[stream-controller]:" – "PARSING->PARSED" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Buffered main sn: 0 of level 0 (frag:[0.000-10.031] > buffer:[0.023-10.023])" (hls.js, line 8978)

[Log] [log] > – "[stream-controller]:" – "PARSED->IDLE" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Adapting to level 3 from level 0" (hls.js, line 15479)

[Log] [log] > – "[level-controller]:" – "Switching to level 3 from level 0" (hls.js, line 6598)

[Log] [log] > – "[level-controller]:" – "Loading level index 3 with URI 1/1 https://vid-cdn60.stroeermb.de/1047217647_v4/1080p.m3u8" (hls.js, line 6498)

[Log] [log] > – "[stream-controller]:" – "IDLE->WAITING_LEVEL" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Level 3 loaded [0,27][part-27--1], cc [0, 0] duration:272.74322200000006" (hls.js, line 15756)

[Log] [log] > – "[stream-controller]:" – "WAITING_LEVEL->IDLE" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Loading fragment 1 cc: 0 of [0-27] level: 3, target: 10.023" (hls.js, line 9085)

[Log] [log] > – "[stream-controller]:" – "IDLE->FRAG_LOADING" (hls.js, line 9825)

[Log] [log] > – "[buffer-controller]: Updating Media Source duration to 272.743" (hls.js, line 19307)

[Log] [log] > – "[stream-controller]:" – "media seeking to 268.925, state: FRAG_LOADING" (hls.js, line 8750)

[Log] [log] > – "[stream-controller]:" – "seeking outside of buffer while fragment load in progress, cancel fragment load" (hls.js, line 8764)

[Log] [log] > – "[stream-controller]:" – "Reset loading state" (hls.js, line 9712)

[Log] [log] > – "[stream-controller]:" – "FRAG_LOADING->IDLE" (hls.js, line 9825)

[Warning] [warn] > – "[stream-controller]:" – "Fragment 1 of level 3 was aborted" (hls.js, line 9595)

[Log] [log] > – "[audio-stream-controller]:" – "media seeking to 268.925, state: STOPPED" (hls.js, line 8750)

[Log] [log] > – "[subtitle-stream-controller]:" – "media seeking to 268.925, state: IDLE" (hls.js, line 8750)

[Log] [log] > – "[stream-controller]:" – "Loading fragment 26 cc: 0 of [0-27] level: 3, target: 268.925" (hls.js, line 9085)

[Log] [log] > – "[stream-controller]:" – "IDLE->FRAG_LOADING" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "media seeking to 268.925, state: FRAG_LOADING" (hls.js, line 8750)

[Log] [log] > – "[audio-stream-controller]:" – "media seeking to 268.925, state: STOPPED" (hls.js, line 8750)

[Log] [log] > – "[subtitle-stream-controller]:" – "media seeking to 268.925, state: IDLE" (hls.js, line 8750)

[Log] [log] > – "[transmuxer-interface, main]: Starting new transmux session for sn: 26 p: -1 level: 3 id: 1↵        discontinuity: false↵      …" (hls.js, line 14847)

"[transmuxer-interface, main]: Starting new transmux session for sn: 26 p: -1 level: 3 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 260.02322200000003
        initSegmentChange: false"
[Log] [log] > – "[stream-controller]:" – "Loaded fragment 26 of level 3" (hls.js, line 8840)

[Log] [log] > – "[mp4-remuxer]: ISGenerated flag reset" (hls.js, line 14955)

[Log] [log] > – "[mp4-remuxer]: initPTS & initDTS reset" (hls.js, line 14955)

[Log] [log] > – "[mp4-remuxer]: reset next timestamp" (hls.js, line 14955)

[Log] [log] > – "manifest codec:undefined, ADTS type:2, samplingIndex:4" (hls.js, line 14955)

[Log] [log] > – "parsed codec:mp4a.40.5, rate:44100, channels:2" (hls.js, line 14955)

[Log] [log] > – "[stream-controller]:" – "FRAG_LOADING->PARSING" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[//mp4a.40.5]" (hls.js, line 16251)

[Log] [log] > – "[stream-controller]:" – "Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc1.640028]" (hls.js, line 16256)

[Log] [log] > – "[transmuxer.ts]: Flushed fragment 26 of level 3" (hls.js, line 14955)

[Log] [log] > – "[stream-controller]:" – "PARSING->PARSED" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Buffered main sn: 26 of level 3 (frag:[260.023-270.025] > buffer:[0.023-10.023][260.040-270.023])" (hls.js, line 8978)

[Log] [log] > – "[stream-controller]:" – "PARSED->IDLE" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Adapting to level 2 from level 3" (hls.js, line 15479)

[Log] [log] > – "[level-controller]:" – "Switching to level 2 from level 3" (hls.js, line 6598)

[Log] [log] > – "[level-controller]:" – "Loading level index 2 with URI 1/1 https://vid-cdn60.stroeermb.de/1047217647_v4/720p.m3u8" (hls.js, line 6498)

[Log] [log] > – "[stream-controller]:" – "IDLE->WAITING_LEVEL" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Level 2 loaded [0,26][part-26--1], cc [0, 0] duration:272.743222" (hls.js, line 15756)

[Log] [log] > – "[stream-controller]:" – "WAITING_LEVEL->IDLE" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Loading fragment 26 cc: 0 of [0-26] level: 2, target: 270.023" (hls.js, line 9085)

[Log] [log] > – "[stream-controller]:" – "IDLE->FRAG_LOADING" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Media seeked to 268.925" (hls.js, line 15690)

[Log] [log] > – "[buffer-controller]: Removing [0,172.64162118518516] from the audio SourceBuffer" (hls.js, line 19447)

[Log] [log] > – "[buffer-controller]: Removing [0,172.64162118518516] from the video SourceBuffer" (hls.js, line 19447)

[Log] [log] > – "[transmuxer-interface, main]: Starting new transmux session for sn: 26 p: -1 level: 2 id: 1↵        discontinuity: false↵      …" (hls.js, line 14847)

"[transmuxer-interface, main]: Starting new transmux session for sn: 26 p: -1 level: 2 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 266.46322200000003
        initSegmentChange: false"
[Log] [log] > – "[stream-controller]:" – "Loaded fragment 26 of level 2" (hls.js, line 8840)

[Log] [log] > – "[mp4-remuxer]: ISGenerated flag reset" (hls.js, line 14955)

[Log] [log] > – "[mp4-remuxer]: initPTS & initDTS reset" (hls.js, line 14955)

[Log] [log] > – "[mp4-remuxer]: reset next timestamp" (hls.js, line 14955)

[Log] [log] > – "manifest codec:undefined, ADTS type:2, samplingIndex:4" (hls.js, line 14955)

[Log] [log] > – "parsed codec:mp4a.40.5, rate:44100, channels:2" (hls.js, line 14955)

[Log] [log] > – "[stream-controller]:" – "FRAG_LOADING->PARSING" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[//mp4a.40.5]" (hls.js, line 16251)

[Log] [log] > – "[stream-controller]:" – "Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc1.64001f]" (hls.js, line 16256)

[Log] [log] > – "[transmuxer.ts]: Flushed fragment 26 of level 2" (hls.js, line 14955)

[Log] [log] > – "[stream-controller]:" – "PARSING->PARSED" (hls.js, line 9825)

[Log] [log] > – "[stream-controller]:" – "Buffered main sn: 26 of level 2 (frag:[266.463-272.765] > buffer:[260.040-272.743])" (hls.js, line 8978)

[Log] [log] > – "[stream-controller]:" – "PARSED->IDLE" (hls.js, line 9825)

[Log] [log] > – "[buffer-controller]: audio sourceBuffer now EOS" (hls.js, line 19191)

[Log] [log] > – "[buffer-controller]: video sourceBuffer now EOS" (hls.js, line 19191)

[Log] [log] > – "[buffer-controller]: Queueing mediaSource.endOfStream()" (hls.js, line 19197)

[Log] [log] > – "[stream-controller]:" – "IDLE->ENDED" (hls.js, line 9825)

[Log] [log] > – "[buffer-controller]: Calling mediaSource.endOfStream()" (hls.js, line 19212)

[Log] [log] > – "[buffer-controller]: Media source ended" (hls.js, line 18775)

[Warning] [warn] > – "Playback stalling at @272.744445666 due to low buffer ({\"len\":0.020361590235836502,\"start\":260.0402721088435,\"end\":272.7648072562358})" (hls.js, line 15169)

Chrome media internals output

No response

robwalch commented 1 year ago

Please file an issue with Feedback Assistant. This is a Safari issue.

robwalch commented 1 year ago

If you have a chance, take a look at Safari 17 / Technology Preview (163+).