Fragments keeps reloading in a loop
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
- [X] The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues
- [X] The issue occurs in the stable client (latest release) on https://hlsjs.video-dev.org/demo and not just on my page
- [X] The issue occurs in the latest client (main branch) on https://hlsjs-dev.video-dev.org/demo and not just on my page
- [X] The stream has correct Access-Control-Allow-Origin headers (CORS)
- [X] There are no network errors such as 404s in the browser console when trying to play the stream
Steps to reproduce
- 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:
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:
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
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.
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).