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

Hls.js tries to buffer the entire video leading to a SourceBuffer overflow #3914

Closed
5 tasks done
kmamal opened this issue May 18, 2021 · 2 comments · Fixed by #3961
Closed
5 tasks done

Hls.js tries to buffer the entire video leading to a SourceBuffer overflow #3914

kmamal opened this issue May 18, 2021 · 2 comments · Fixed by #3961

Comments

@kmamal
Copy link
Contributor

kmamal commented May 18, 2021

What version of Hls.js are you using?

1.0.4

What browser and OS (including versions) are you using?

Chrome 90, Ubuntu 20.04

Test stream:

https://s3-eu-west-1.amazonaws.com/konstantin.test/hls-js/test.m3u8

Configuration:

{
  "maxBufferHole": 0,
}

Checklist

  • The stream has correct Access-Control-Allow-Origin headers (CORS)
  • There are no network errors such as 404s in the browser console when trying to play the stream

Steps to reproduce

Load the test stream without playing it and with { "maxBufferHole": 0 } in the options.

Expected behavior

Hls.js should buffer up ~30 seconds of the video then go idle.

Actual behavior

Hls.js tries to buffer up the entire video and ends up overflowing the SourceBuffer.

Did some debugging and found that when BufferHelper.bufferedInfo() is called the buffered region of the video is something like [ 0.0021, 192.0021 ] (probably due to aac priming) and yet pos is 0 so Hls.js thinks nothing has been buffered and keeps loading fragments.

Setting maxBufferHole to a higher value is not an option for our application because we need frame-accurate seeking. Showing the wrong frame when inside a "hole" is not acceptable.

Console output

[log] >
[log] > attachMedia
[log] > [buffer-controller]: Media source opened
[log] > [subtitle-stream-controller]: STOPPED->IDLE
[log] > stopLoad
[log] > [subtitle-stream-controller]: IDLE->STOPPED
[log] > loadSource:https://remote:4433/file/f71d855698ab7bb9eb54c9499d24c58a4114ae33.m3u8
[log] > [stream-controller]: Trigger BUFFER_RESET
[log] > [level-controller]: manifest loaded, 1 level(s) found, first bitrate: 0
[log] > 1 bufferCodec event(s) expected
[log] > startLoad(0)
[log] > [level-controller]: switching to level 0 from -1
[log] > [stream-controller]: STOPPED->IDLE
[log] > [subtitle-stream-controller]: STOPPED->IDLE
[log] > [stream-controller]: Level 0 loaded [0,217], cc [0, 0] duration:870.6
[log] > [buffer-controller]: Updating Media Source duration to 870.600
[log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-217] level: 0, target: 0
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > demuxing in webworker
[log] > [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
[log] > [stream-controller]: Loaded fragment 0 of level 0
[log] >
[log] > [mp4-remuxer]: ISGenerated flag reset
[log] > [mp4-remuxer]: initPTS & initDTS reset
[log] > manifest codec:undefined, ADTS type:2, samplingIndex:3
[log] > parsed codec:mp4a.40.5, rate:48000, channels:4
[log] > [transmuxer.ts]: Flushed fragment 0 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[//mp4a.40.5]
[log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc1.7a0020]
[log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)
[log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.7a0020)
[log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 126000
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 0 of level 0 [0.021,4.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: SN 0 just loaded, load next one: 1
[log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-217] level: 0, target: 4.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 1 of level 0
[log] > [transmuxer.ts]: Flushed fragment 1 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 1 of level 0 [0.021,8.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-217] level: 0, target: 8.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 2 of level 0
[log] > [transmuxer.ts]: Flushed fragment 2 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 2 of level 0 [0.021,12.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-217] level: 0, target: 12.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 3 of level 0
[log] > [transmuxer.ts]: Flushed fragment 3 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 3 of level 0 [0.021,16.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: SN 3 just loaded, load next one: 4
[log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-217] level: 0, target: 16.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 4 of level 0
[log] > [transmuxer.ts]: Flushed fragment 4 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 4 of level 0 [0.021,20.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 5 cc: 0 of [0-217] level: 0, target: 20.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 5 of level 0
[log] > [transmuxer.ts]: Flushed fragment 5 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 5 of level 0 [0.021,24.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 6 cc: 0 of [0-217] level: 0, target: 24.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 6 of level 0
[log] > [transmuxer.ts]: Flushed fragment 6 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 6 of level 0 [0.021,28.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 7 cc: 0 of [0-217] level: 0, target: 28.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 7 of level 0
[log] > [transmuxer.ts]: Flushed fragment 7 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 7 of level 0 [0.021,32.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 8 cc: 0 of [0-217] level: 0, target: 32.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 8 of level 0
[log] > [transmuxer.ts]: Flushed fragment 8 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 8 of level 0 [0.021,36.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 9 cc: 0 of [0-217] level: 0, target: 36.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 9 of level 0
[log] > [transmuxer.ts]: Flushed fragment 9 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 9 of level 0 [0.021,40.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 10 cc: 0 of [0-217] level: 0, target: 40.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 10 of level 0
[log] > [transmuxer.ts]: Flushed fragment 10 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 10 of level 0 [0.021,44.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 11 cc: 0 of [0-217] level: 0, target: 44.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 11 of level 0
[log] > [transmuxer.ts]: Flushed fragment 11 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 11 of level 0 [0.021,48.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 12 cc: 0 of [0-217] level: 0, target: 48.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 12 of level 0
[log] > [transmuxer.ts]: Flushed fragment 12 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 12 of level 0 [0.021,52.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 13 cc: 0 of [0-217] level: 0, target: 52.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 13 of level 0
[log] > [transmuxer.ts]: Flushed fragment 13 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 13 of level 0 [0.021,56.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 14 cc: 0 of [0-217] level: 0, target: 56.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 14 of level 0
[log] > [transmuxer.ts]: Flushed fragment 14 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 14 of level 0 [0.021,60.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 15 cc: 0 of [0-217] level: 0, target: 60.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 15 of level 0
[log] > [transmuxer.ts]: Flushed fragment 15 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 15 of level 0 [0.021,64.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 16 cc: 0 of [0-217] level: 0, target: 64.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 16 of level 0
[log] > [transmuxer.ts]: Flushed fragment 16 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 16 of level 0 [0.021,68.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 17 cc: 0 of [0-217] level: 0, target: 68.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 17 of level 0
[log] > [transmuxer.ts]: Flushed fragment 17 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 17 of level 0 [0.021,72.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 18 cc: 0 of [0-217] level: 0, target: 72.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 18 of level 0
[log] > [transmuxer.ts]: Flushed fragment 18 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 18 of level 0 [0.021,76.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 19 cc: 0 of [0-217] level: 0, target: 76.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 19 of level 0
[log] > [transmuxer.ts]: Flushed fragment 19 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 19 of level 0 [0.021,80.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 20 cc: 0 of [0-217] level: 0, target: 80.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 20 of level 0
[log] > [transmuxer.ts]: Flushed fragment 20 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 20 of level 0 [0.021,84.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 21 cc: 0 of [0-217] level: 0, target: 84.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 21 of level 0
[log] > [transmuxer.ts]: Flushed fragment 21 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 21 of level 0 [0.021,88.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 22 cc: 0 of [0-217] level: 0, target: 88.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 22 of level 0
[log] > [transmuxer.ts]: Flushed fragment 22 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 22 of level 0 [0.021,92.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 23 cc: 0 of [0-217] level: 0, target: 92.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 23 of level 0
[log] > [transmuxer.ts]: Flushed fragment 23 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 23 of level 0 [0.021,96.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 24 cc: 0 of [0-217] level: 0, target: 96.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 24 of level 0
[log] > [transmuxer.ts]: Flushed fragment 24 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 24 of level 0 [0.021,100.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 25 cc: 0 of [0-217] level: 0, target: 100.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 25 of level 0
[log] > [transmuxer.ts]: Flushed fragment 25 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 25 of level 0 [0.021,104.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 26 cc: 0 of [0-217] level: 0, target: 104.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 26 of level 0
[log] > [transmuxer.ts]: Flushed fragment 26 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 26 of level 0 [0.021,108.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 27 cc: 0 of [0-217] level: 0, target: 108.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 27 of level 0
[log] > [transmuxer.ts]: Flushed fragment 27 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 27 of level 0 [0.021,112.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 28 cc: 0 of [0-217] level: 0, target: 112.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 28 of level 0
[log] > [transmuxer.ts]: Flushed fragment 28 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 28 of level 0 [0.021,116.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 29 cc: 0 of [0-217] level: 0, target: 116.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 29 of level 0
[log] > [transmuxer.ts]: Flushed fragment 29 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 29 of level 0 [0.021,120.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 30 cc: 0 of [0-217] level: 0, target: 120.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 30 of level 0
[log] > [transmuxer.ts]: Flushed fragment 30 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 30 of level 0 [0.021,124.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 31 cc: 0 of [0-217] level: 0, target: 124.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 31 of level 0
[log] > [transmuxer.ts]: Flushed fragment 31 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 31 of level 0 [0.021,128.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 32 cc: 0 of [0-217] level: 0, target: 128.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 32 of level 0
[log] > [transmuxer.ts]: Flushed fragment 32 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 32 of level 0 [0.021,132.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 33 cc: 0 of [0-217] level: 0, target: 132.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 33 of level 0
[log] > [transmuxer.ts]: Flushed fragment 33 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 33 of level 0 [0.021,136.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 34 cc: 0 of [0-217] level: 0, target: 136.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 34 of level 0
[log] > [transmuxer.ts]: Flushed fragment 34 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 34 of level 0 [0.021,140.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 35 cc: 0 of [0-217] level: 0, target: 140.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 35 of level 0
[log] > [transmuxer.ts]: Flushed fragment 35 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 35 of level 0 [0.021,144.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 36 cc: 0 of [0-217] level: 0, target: 144.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 36 of level 0
[log] > [transmuxer.ts]: Flushed fragment 36 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 36 of level 0 [0.021,148.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 37 cc: 0 of [0-217] level: 0, target: 148.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 37 of level 0
[log] > [transmuxer.ts]: Flushed fragment 37 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 37 of level 0 [0.021,152.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 38 cc: 0 of [0-217] level: 0, target: 152.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 38 of level 0
[log] > [transmuxer.ts]: Flushed fragment 38 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 38 of level 0 [0.021,156.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 39 cc: 0 of [0-217] level: 0, target: 156.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 39 of level 0
[log] > [transmuxer.ts]: Flushed fragment 39 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 39 of level 0 [0.021,160.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 40 cc: 0 of [0-217] level: 0, target: 160.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 40 of level 0
[log] > [transmuxer.ts]: Flushed fragment 40 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 40 of level 0 [0.021,164.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 41 cc: 0 of [0-217] level: 0, target: 164.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 41 of level 0
[log] > [transmuxer.ts]: Flushed fragment 41 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 41 of level 0 [0.021,168.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 42 cc: 0 of [0-217] level: 0, target: 168.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 42 of level 0
[log] > [transmuxer.ts]: Flushed fragment 42 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 42 of level 0 [0.021,172.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 43 cc: 0 of [0-217] level: 0, target: 172.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 43 of level 0
[log] > [transmuxer.ts]: Flushed fragment 43 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 43 of level 0 [0.021,176.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 44 cc: 0 of [0-217] level: 0, target: 176.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 44 of level 0
[log] > [transmuxer.ts]: Flushed fragment 44 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 44 of level 0 [0.021,180.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 45 cc: 0 of [0-217] level: 0, target: 180.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 45 of level 0
[log] > [transmuxer.ts]: Flushed fragment 45 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 45 of level 0 [0.021,184.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 46 cc: 0 of [0-217] level: 0, target: 184.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 46 of level 0
[log] > [transmuxer.ts]: Flushed fragment 46 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 46 of level 0 [0.021,188.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 47 cc: 0 of [0-217] level: 0, target: 188.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 47 of level 0
[log] > [transmuxer.ts]: Flushed fragment 47 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 47 of level 0 [0.021,192.021]
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 48 cc: 0 of [0-217] level: 0, target: 192.021
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: Loaded fragment 48 of level 0
[log] > [transmuxer.ts]: Flushed fragment 48 of level 0
[log] > [stream-controller]: FRAG_LOADING->PARSING
[warn] > [buffer-operation-queue]: Unhandled exception executing the current operation
[error] > [buffer-controller]: Error encountered while trying to append to the audio SourceBuffer DOMException: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
[log] > [stream-controller]: PARSING->PARSED
[log] > [buffer-controller]: Removing [0,870.6] from the video SourceBuffer
@robwalch robwalch added the Bug label May 18, 2021
@robwalch robwalch added this to Top priorities in Release Planning and Backlog via automation May 18, 2021
@robwalch robwalch added this to the 1.0.5 milestone May 18, 2021
@robwalch robwalch added this to To do in Performance via automation May 19, 2021
@robwalch robwalch added Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. and removed Bug labels May 26, 2021
robwalch pushed a commit that referenced this issue May 27, 2021
@robwalch robwalch added Bug and removed Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels May 27, 2021
@robwalch
Copy link
Collaborator

Hi @kmamal,

Thanks for the bug report and steps to repro. I've got a fix for this issue and for buffering getting locked up after SourceBuffer overflow #3961.

Demo build (add "maxBufferHole": 0 to the config and pause at 0 to remove autoplay to test):
https://deploy-preview-3961--hls-js-dev.netlify.app/demo/?src=https%3A%2F%2Fs3-eu-west-1.amazonaws.com%2Fkonstantin.test%2Fhls-js%2Ftest.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

@kmamal
Copy link
Contributor Author

kmamal commented May 27, 2021

Yes, I can confirm that I can no longer reproduce the problem in the demo player. Thanks for the quick fix! I'm afraid I don't know enough to provide any feedback on the PR itself.

Performance automation moved this from To do to Done May 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Development

Successfully merging a pull request may close this issue.

2 participants