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

Fragments keeps reloading in a loop #6776

Open
5 tasks done
ShoobyD opened this issue Oct 15, 2024 · 2 comments
Open
5 tasks done

Fragments keeps reloading in a loop #6776

ShoobyD opened this issue Oct 15, 2024 · 2 comments

Comments

@ShoobyD
Copy link

ShoobyD commented Oct 15, 2024

What version of Hls.js are you using?

1.5.16

What browser (including version) are you using?

Chrome 129.0.6668.101 (Official Build) (64-bit)

What OS (including version) are you using?

Windows 11

Test stream

https://codepen.io/ShoobyD/details/OJKmPGp

Configuration

{}

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Just attach this stream using the library:
    'https://testing1eus2video-mv.azureedge.net/pictures/41/265/41265023/featured/low/108055_vl2c0jr8w75a/vid.m3u8'
    No need to actually play it.

Expected behaviour

The video fragments should load once.

What actually happened?

The next fragment is being loaded over and over in a loop:
hls js fragment loading issue

Even if you navigate to the middle of the video, it will load its current position fragment (let's say 'vid_1_3.ts'), and then load the next one ('vid_1_4.ts') again and again:
hls js fragment loading issue 2

Console output

main.js:1535 [getEditorValue] could not parse editor value SyntaxError: Expected double-quoted property name in JSON at position 19 (line 3 column 1)
    at JSON.parse (<anonymous>)
    at getEditorValue (main.js:1533:20)
    at loadSelectedStream (main.js:337:5)
    at HTMLInputElement.<anonymous> (main.js:142:5)
    at HTMLInputElement.dispatch (jquery.min.js:3:6444)
    at r.handle (jquery.min.js:3:3219)
getEditorValue @ main.js:1535
loadSelectedStream @ main.js:337
(anonymous) @ main.js:142
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
main.js:350 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
logger.ts:74 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.5.16
hls.ts:442 [log] > stopLoad
hls.ts:410 [log] > loadSource:https://testing1eus2video-mv.azureedge.net/pictures/41/265/41265023/featured/low/108055_vl2c0jr8w75a/vid.m3u8
stream-controller.ts:576 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:380 [log] > attachMedia
buffer-controller.ts:198 [log] > [buffer-controller] created media source: MediaSource
buffer-controller.ts:994 [log] > [buffer-controller] Media source opened
level-controller.ts:337 [log] > [level-controller]: manifest loaded, 2 level(s) found, first bitrate: 149286500
abr-controller.ts:58 [log] > setting initial bwe to 5000000
buffer-controller.ts:186 [log] > [buffer-controller] 1 bufferCodec event(s) expected
abr-controller.ts:701 [log] > [abr] picked start tier {"codecSet":"avc1,mp4a","videoRanges":["SDR"],"preferHDR":false,"minFramerate":0,"minBitrate":99558800}
abr-controller.ts:855 [info] > [abr] switch candidate:1->0 adjustedbw(99558800)-bitrate=0 ttfb:0.1 avgDuration:0.0 maxFetchDuration:4.0 fetchDuration:0.1 firstSelection:true codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:-1
hls.ts:431 [log] > startLoad(-1)
level-controller.ts:432 [log] > [level-controller]: Switching to level 0 (720p SDR avc1,mp4a @99558800) from level -1
level-controller.ts:600 [log] > [level-controller]: Loading level index 0 with https://testing1eus2video-mv.azureedge.net/pictures/41/265/41265023/featured/low/108055_vl2c0jr8w75a/vid_1.m3u8
base-stream-controller.ts:1801 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:1801 [log] > [subtitle-stream-controller]: STOPPED->IDLE
stream-controller.ts:639 [log] > [stream-controller]: Level 0 loaded [0,5][part-5--1], cc [0, 0] duration:60.633334
buffer-controller.ts:861 [log] > [buffer-controller] Updating Media Source duration to 60.633
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-5] level: 0, target: 0
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:88 [log] > injecting Web Worker for "main"
transmuxer-interface.ts:230 [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
        initSegmentChange: true
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 0 of level 0
9be023df-1177-4cc4-b1c9-460e1422e1c1:555 [log] > Debug logs enabled for "main" in hls.js version 1.5.16
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: reset next timestamp
transmuxer-interface.ts:394 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3
transmuxer-interface.ts:394 [log] > parsed codec:mp4a.40.5, rate:48000, channels:2
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1303 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.5]
stream-controller.ts:1314 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640033/avc1.640033]
buffer-controller.ts:393 [log] > [buffer-controller] 0 bufferCodec event(s) expected audio,video
buffer-controller.ts:943 [log] > [buffer-controller] creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
buffer-controller.ts:943 [log] > [buffer-controller] creating sourceBuffer(video/mp4;codecs=avc1.640033)
audio-stream-controller.ts:134 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 130080
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:570 [log] > [stream-controller]: Buffered main sn: 0 of level 0 (frag:[0.000-10.888] > buffer:[0.021-10.837])
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 1 of level 0
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
buffer-operation-queue.ts:64 [warn] > [buffer-operation-queue]: Exception executing "video" SourceBuffer operation: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
executeNext @ buffer-operation-queue.ts:64
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 1 more frame
Show less
base-stream-controller.ts:1043 [warn] > [stream-controller]: Reduce max buffer length to 300s
reduceMaxBufferLength @ base-stream-controller.ts:1043
reduceLengthAndFlushBuffer @ base-stream-controller.ts:1601
onError @ stream-controller.ts:923
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:1659 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferFullError', sourceBufferName: 'video', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:230 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: false
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 10.837333333333333
        initSegmentChange: false
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
buffer-operation-queue.ts:64 [warn] > [buffer-operation-queue]: Exception executing "video" SourceBuffer operation: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
executeNext @ buffer-operation-queue.ts:64
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 1 more frame
Show less
base-stream-controller.ts:1043 [warn] > [stream-controller]: Reduce max buffer length to 150s
reduceMaxBufferLength @ base-stream-controller.ts:1043
reduceLengthAndFlushBuffer @ base-stream-controller.ts:1601
onError @ stream-controller.ts:923
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:1659 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferFullError', sourceBufferName: 'video', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:230 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: false
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 10.837333333333333
        initSegmentChange: false
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
buffer-operation-queue.ts:64 [warn] > [buffer-operation-queue]: Exception executing "video" SourceBuffer operation: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
executeNext @ buffer-operation-queue.ts:64
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 1 more frame
Show less
base-stream-controller.ts:1043 [warn] > [stream-controller]: Reduce max buffer length to 75s
reduceMaxBufferLength @ base-stream-controller.ts:1043
reduceLengthAndFlushBuffer @ base-stream-controller.ts:1601
onError @ stream-controller.ts:923
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:1659 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferFullError', sourceBufferName: 'video', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:230 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: false
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 10.837333333333333
        initSegmentChange: false
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
buffer-operation-queue.ts:64 [warn] > [buffer-operation-queue]: Exception executing "video" SourceBuffer operation: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
executeNext @ buffer-operation-queue.ts:64
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 1 more frame
Show less
base-stream-controller.ts:1043 [warn] > [stream-controller]: Reduce max buffer length to 37.5s
reduceMaxBufferLength @ base-stream-controller.ts:1043
reduceLengthAndFlushBuffer @ base-stream-controller.ts:1601
onError @ stream-controller.ts:923
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:1659 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferFullError', sourceBufferName: 'video', frag: Fragment, …}chunkMeta: {level: 0, sn: 1, part: -1, id: 1, size: 95149996, …}details: "bufferFullError"err: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
    at BufferController.appendExecutor (https://hlsjs.video-dev.org/dist/hls.js:19168:10)
    at Object.execute (https://hlsjs.video-dev.org/dist/hls.js:18673:18)
    at BufferOperationQueue.executeNext (https://hlsjs.video-dev.org/dist/hls.js:18249:21)
    at BufferOperationQueue.append (https://hlsjs.video-dev.org/dist/hls.js:18220:14)
    at BufferController.onBufferAppending (https://hlsjs.video-dev.org/dist/hls.js:18741:22)
    at EventEmitter.emit (https://hlsjs.video-dev.org/dist/hls.js:15633:36)
    at Hls.emit (https://hlsjs.video-dev.org/dist/hls.js:28593:28)
    at Hls.trigger (https://hlsjs.video-dev.org/dist/hls.js:28597:21)
    at StreamController.bufferFragmentData (https://hlsjs.video-dev.org/dist/hls.js:10169:16)
    at StreamController._handleTransmuxComplete (https://hlsjs.video-dev.org/dist/hls.js:28199:16)error: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
    at BufferController.appendExecutor (https://hlsjs.video-dev.org/dist/hls.js:19168:10)
    at Object.execute (https://hlsjs.video-dev.org/dist/hls.js:18673:18)
    at BufferOperationQueue.executeNext (https://hlsjs.video-dev.org/dist/hls.js:18249:21)
    at BufferOperationQueue.append (https://hlsjs.video-dev.org/dist/hls.js:18220:14)
    at BufferController.onBufferAppending (https://hlsjs.video-dev.org/dist/hls.js:18741:22)
    at EventEmitter.emit (https://hlsjs.video-dev.org/dist/hls.js:15633:36)
    at Hls.emit (https://hlsjs.video-dev.org/dist/hls.js:28593:28)
    at Hls.trigger (https://hlsjs.video-dev.org/dist/hls.js:28597:21)
    at StreamController.bufferFragmentData (https://hlsjs.video-dev.org/dist/hls.js:10169:16)
    at StreamController._handleTransmuxComplete (https://hlsjs.video-dev.org/dist/hls.js:28199:16)errorAction: {action: 0, flags: 0}fatal: falsefrag: Fragment {_byteRange: null, _url: 'https://testing1eus2video-mv.azureedge.net/picture…65023/featured/low/108055_vl2c0jr8w75a/vid_1_1.ts', baseurl: 'https://testing1eus2video-mv.azureedge.net/picture…65023/featured/low/108055_vl2c0jr8w75a/vid_1.m3u8', relurl: 'vid_1_1.ts', elementaryStreams: {…}, …}parent: "main"part: nullsourceBufferName: "video"type: "mediaError"[[Prototype]]: Object
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:230 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: false
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 10.837333333333333
        initSegmentChange: false
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
buffer-operation-queue.ts:64 [warn] > [buffer-operation-queue]: Exception executing "video" SourceBuffer operation: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
executeNext @ buffer-operation-queue.ts:64
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 1 more frame
Show less
base-stream-controller.ts:1043 [warn] > [stream-controller]: Reduce max buffer length to 18.75s
reduceMaxBufferLength @ base-stream-controller.ts:1043
reduceLengthAndFlushBuffer @ base-stream-controller.ts:1601
onError @ stream-controller.ts:923
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:1659 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferFullError', sourceBufferName: 'video', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:570 [log] > [stream-controller]: Buffered main sn: 1 of level 0 (frag:[10.837-20.032] > buffer:[0.021-10.837])
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSED->IDLE
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
base-stream-controller.ts:758 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-5] level: 0, target: 10.837
base-stream-controller.ts:1801 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:230 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: false
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 10.837333333333333
        initSegmentChange: false
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:394 [log] > [mp4-remuxer]: reset next timestamp
base-stream-controller.ts:1801 [log] > [stream-controller]: FRAG_LOADING->PARSING
buffer-operation-queue.ts:64 [warn] > [buffer-operation-queue]: Exception executing "video" SourceBuffer operation: QuotaExceededError: Failed to execute 'appendBuffer' on 'SourceBuffer': The SourceBuffer is full, and cannot free space to append additional buffers.
executeNext @ buffer-operation-queue.ts:64
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 1 more frame
Show less
base-stream-controller.ts:1043 [warn] > [stream-controller]: Reduce max buffer length to 9.375s
reduceMaxBufferLength @ base-stream-controller.ts:1043
reduceLengthAndFlushBuffer @ base-stream-controller.ts:1601
onError @ stream-controller.ts:923
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
base-stream-controller.ts:1659 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:1801 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferFullError', sourceBufferName: 'video', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
onError @ buffer-controller.ts:545
executeNext @ buffer-operation-queue.ts:67
append @ buffer-operation-queue.ts:29
onBufferAppending @ buffer-controller.ts:548
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
bufferFragmentData @ base-stream-controller.ts:943
_handleTransmuxComplete @ stream-controller.ts:1187
handleTransmuxComplete @ transmuxer-interface.ts:422
onWorkerMessage @ transmuxer-interface.ts:382
TransmuxerInterface.onwmsg @ transmuxer-interface.ts:91
Show 2 more frames
Show less
transmuxer-interface.ts:394 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
abr-controller.ts:607 [info] > [abr] rebuffering expected, optimal quality level -1
.....

Chrome media internals output

No response

@ShoobyD ShoobyD 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 15, 2024
@robwalch robwalch added Stream Issue Confirmed QuotaExceededError 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 17, 2024
@robwalch
Copy link
Collaborator

Interesting. Every segment is 95MB and results in the subsequent append throwing QuotaExceededError. The policy is to reduce the buffer and keep trying. This usually works as it usually takes several segments to fill the buffer to capacity. I hope this is not an asset you hope to support in production.

@robwalch
Copy link
Collaborator

robwalch commented Oct 19, 2024

You can work around this by adding the following to your config (maxMaxBufferLength being the critical addition). This is not something I would recommend normally. For such unusually large segments and limited memory allotted to SourceBuffers by the browser, this is the best option with the current release.

  "maxMaxBufferLength": 1,
  "backBufferLength": 1,
  "progressive": true,

Improving QuotaExceededError handling for situations with less than two target durations worth of media in the buffer is a necessary follow up to avoid reloading. We can also look into keeping the failed append data and retrying the append when conditions are more favorable (playhead advanced, or media has been flushed).

@robwalch robwalch added Suggested-Workaround Revisit-at-later-release-cycle Will revisit during release cycle indicated by the Milestone labels Nov 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants