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

Playback fails after QuotaExceededError #5587

Closed
5 tasks done
willdharris opened this issue Jun 21, 2023 · 5 comments · Fixed by #5761
Closed
5 tasks done

Playback fails after QuotaExceededError #5587

willdharris opened this issue Jun 21, 2023 · 5 comments · Fixed by #5761
Labels
Milestone

Comments

@willdharris
Copy link

What version of Hls.js are you using?

1.4.6

What browser (including version) are you using?

WPE ARRIS_Foxtel_STB_DGX7000NF /1.21.3.9

What OS (including version) are you using?

ARRIS_Foxtel_STB_DGX7000NF; Linux mipsel

Test stream

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fplayertest.longtailvideo.com%2Fadaptive%2Felephants_dream_v4%2Findex.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

Configuration

{
  "debug": true,
  "enableWorker": true,
  "lowLatencyMode": false,
  "startPosition": 600,
  "backBufferLength": 0,
  "maxBufferLength": 10,
  "maxMaxBufferLength": 10
}

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Load the provided demo page on a Foxtel STB*. The demo is using a VOD stream with alternate audio tracks, which is needed for reproduction.
  2. Playback will start toward the end of the stream "startPosition": 600.
  3. Seek back toward the start of stream in 60 second increments, i.e. video.currentTime = video.currentTime - 60.
  4. After 5-8 seeks, observe playback stalls and does not recover.
  5. Observe the QuotaExceededError error in logs.

*This issue has only been observed on Foxtel Australia iQ3/iQ4 set top boxes. I have not reproduced on other devices or browsers. Foxtel iQ3 user agent:
'Mozilla/5.0 (ARRIS_Foxtel_STB_DGX7000NF; Linux mipsel) AppleWebKit/605.1.15 (KHTML, like Gecko) WPE ARRIS_Foxtel_STB_DGX7000NF /1.21.3.9 (Foxtel,DGX7000NF)'

Expected behaviour

On the QuotaExceededError, the buffers should be flushed and playback should resume.

What actually happened?

Playback stalls and does not recover. Calling play or seeking does not revive playback.
Looking at the logs, the audio buffer is flushed but the video buffer is not. After the audio buffer flush, new fragments fail to load in the audio buffer.

Console output

[Log] [log] >"Debug logs enabled for \"Hls instance\" in hls.js version 1.4.6" (hls.min.js, line 1)
[Log] [log] >"stopLoad" (hls.min.js, line 1)
[Log] [log] >"loadSource:https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/index.m3u8" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Trigger BUFFER_RESET" (hls.min.js, line 1)
[Log] [log] >"attachMedia" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""manifest loaded, 4 level(s) found, first bitrate: 2962000" (hls.min.js, line 1)
[Log] [log] >"2 bufferCodec event(s) expected" (hls.min.js, line 1)
[Log] [log] >"startLoad(600)" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 3 from level -1" (hls.min.js, line 1)
[Log] [log] >"[audio-track-controller]:""Updating audio tracks, 3 track(s) found in group:aac" (hls.min.js, line 1)
[Log] [log] >"[audio-track-controller]:""Switching to audio-track 0 \"English\" lang:en group:aac" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Reset loading state" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""STOPPED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[subtitle-track-controller]:""Updating subtitle tracks, 2 track(s) found in \"subs\" group-id" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Loading level index 3 with URI 1/1 https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/media/b2962000-video.m3u8" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""STOPPED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-track-controller]:""loading audio-track playlist 0 \"English\" lang:en group:aac" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->STOPPED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""STOPPED->WAITING_TRACK" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""STOPPED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: Media source opened" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Level 3 loaded [0,107][part-107--1], cc [0, 0] duration:648" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: Updating Media Source duration to 648.000" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 100 cc: 0 of [0-107] level: 3, target: 600" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-track-controller]:""audio-track 0 \"English\" lang:en group:aac loaded [0-107]" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Track 0 loaded [0,107][part-107--1],duration:648" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""WAITING_TRACK->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 100 cc: 0 of [0-107] track: 0, target: 600" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"injecting Web Worker for \"main\"" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 100 p: -1 level: 3 id: 1↵        discontinuity: true↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 100 of level 3" (hls.min.js, line 1)
[Log] [log] >"injecting Web Worker for \"audio\"" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Unknown video PTS for cc 0, waiting for video PTS before demuxing audio frag 100 of [0 ,107],track 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->WAITING_INIT_PTS" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 100 of level 0" (hls.min.js, line 1)
[Log] [log] >"Debug logs enabled for \"main\" in hls.js version 1.4.6" (blob:https://vidtech.cbsinteractive.com/02fdbb18-a715-4313-b50b-6cf927d371b6, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"Debug logs enabled for \"audio\" in hls.js version 1.4.6" (blob:https://vidtech.cbsinteractive.com/04d0fd15-ddbd-43ba-b1b2-4e4203b97033, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64001f]" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""InitPTS for cc: 0 found from main: 3780" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""WAITING_INIT_PTS->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 100 p: -1 level: 0 id: 1↵        discontinuity: true↵      …" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 100 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"ADTS sync word found !" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:4" (hls.min.js, line 1)
[Log] [log] >"parsed codec:mp4a.40.5, rate:44100, channels:2" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Init audio buffer, container:audio/mp4, codecs[parsed]=[mp4a.40.5]" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.42001e)" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Alternate track found, use video.buffered to schedule main fragment loading" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 100 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 100 of track 0 (frag:[599.964-605.955] > buffer:[599.964-605.955])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 101 cc: 0 of [0-107] track: 0, target: 606" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 100 of level 3 (frag:[600.000-606.000] > buffer:[600.000-606.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""seek to target start position 600 from current time 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 101 cc: 0 of [0-107] level: 3, target: 606" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 600.000, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 600.000, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 600.000, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 101 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Media seeked to 600.125" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 101 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 101 of track 0 (frag:[605.955-611.969] > buffer:[599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 101 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 541.541, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 541.541, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 541.541, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 90 cc: 0 of [0-107] track: 0, target: 541.541" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 90 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 90 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 90 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 90 of track 0 (frag:[539.964-545.955] > buffer:[539.964-545.955][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 101 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 101 of level 3 (frag:[606.000-612.000] > buffer:[600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 2 from level 3" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 2 from level 3" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Loading level index 2 with URI 1/1 https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/media/b1427000-video.m3u8" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->WAITING_LEVEL" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Level 2 loaded [0,107][part-107--1], cc [0, 0] duration:648" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""WAITING_LEVEL->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 90 cc: 0 of [0-107] level: 2, target: 541.541" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 90 p: -1 level: 2 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 90 of level 2" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64001e]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 90 of level 2" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 90 of level 2 (frag:[540.000-546.000] > buffer:[540.000-546.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 3 from level 2" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 3 from level 2" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 91 cc: 0 of [0-107] level: 3, target: 546" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Media seeked to 540.000" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 91 cc: 0 of [0-107] track: 0, target: 545.955" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 91 p: -1 level: 3 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 91 of level 3" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 91 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 91 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 91 of track 0 (frag:[545.955-551.969] > buffer:[539.964-551.969][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 92 cc: 0 of [0-107] track: 0, target: 551.969" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 92 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 92 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 92 of track 0 (frag:[551.969-557.959] > buffer:[539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64001f]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 91 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 91 of level 3 (frag:[546.000-552.000] > buffer:[540.000-552.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 92 cc: 0 of [0-107] level: 3, target: 552" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 92 of level 3" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 80 cc: 0 of [0-107] track: 0, target: 485.251" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 80 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 80 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 485.251, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 485.251, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 485.251, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 80 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 80 of track 0 (frag:[479.961-485.952] > buffer:[479.961-485.952][539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 92 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 92 of level 3 (frag:[552.000-558.000] > buffer:[540.000-558.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 80 cc: 0 of [0-107] level: 3, target: 485.251" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 80 p: -1 level: 3 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 80 of level 3" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 80 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 80 of level 3 (frag:[480.000-485.999] > buffer:[480.000-485.999][540.000-558.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 0 from level 3" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 0 from level 3" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Loading level index 0 with URI 1/1 https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/media/b331000-video.m3u8" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->WAITING_LEVEL" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Media seeked to 485.251" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 81 cc: 0 of [0-107] track: 0, target: 485.952" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Level 0 loaded [0,107][part-107--1], cc [0, 0] duration:648" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""WAITING_LEVEL->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 81 cc: 0 of [0-107] level: 0, target: 486" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 81 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 81 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 81 of track 0 (frag:[485.952-491.966] > buffer:[479.961-491.966][539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 82 cc: 0 of [0-107] track: 0, target: 491.966" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 81 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 81 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 82 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 424.709, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 424.709, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 424.709, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 82 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 82 of track 0 (frag:[491.966-497.956] > buffer:[479.961-497.956][539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 70 cc: 0 of [0-107] track: 0, target: 424.709" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64000d]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 81 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 70 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 70 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 81 of level 0 (frag:[486.000-492.000] > buffer:[480.000-492.000][540.000-558.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 2 from level 0" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 2 from level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 70 cc: 0 of [0-107] level: 2, target: 424.709" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 70 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 70 of track 0 (frag:[419.961-425.952] > buffer:[419.961-425.952][479.961-497.956][539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 70 p: -1 level: 2 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 70 of level 2" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64001e]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 70 of level 2" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 70 of level 2 (frag:[420.000-426.000] > buffer:[420.000-426.000][480.000-492.000][540.000-558.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 71 cc: 0 of [0-107] level: 2, target: 426" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Media seeked to 424.001" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 71 cc: 0 of [0-107] track: 0, target: 425.952" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Warning] [warn] >"Playback stalling at @424.000622222 due to low buffer ({\"len\":1.9511227780000127,\"start\":420,\"end\":425.951745,\"nextStart\":480})" (hls.min.js, line 1)
[Warning] [warn] >"playback not stuck anymore @424.541933334, after 682ms" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 71 of level 2" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 71 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 71 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 71 of track 0 (frag:[425.952-431.966] > buffer:[419.961-431.966][479.961-497.956][539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 72 cc: 0 of [0-107] track: 0, target: 431.966" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 72 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 72 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 72 of track 0 (frag:[431.966-437.956] > buffer:[419.961-437.956][479.961-497.956][539.964-557.959][599.964-611.969])" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 71 of level 2" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 71 of level 2 (frag:[426.000-432.000] > buffer:[420.000-432.000][480.000-492.000][540.000-558.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 3 from level 2" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 3 from level 2" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 72 cc: 0 of [0-107] level: 3, target: 432" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: Removing [0,420] from the audio SourceBuffer" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 367.001, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 367.001, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 367.001, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 61 cc: 0 of [0-107] track: 0, target: 367.001" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 72 p: -1 level: 3 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 72 of level 3" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 61 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 61 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 61 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 61 of track 0 (frag:[365.952-371.966] > buffer:[365.952-371.966][420.007-437.956][479.961-497.956][539.964-557.959][599.9…" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64001f]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 72 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 72 of level 3 (frag:[432.000-438.000] > buffer:[420.000-438.000][480.000-492.000][540.000-558.000][600.000-612.000])" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 61 cc: 0 of [0-107] level: 3, target: 367.001" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 61 p: -1 level: 3 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 61 of level 3" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 61 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 61 of level 3 (frag:[366.000-372.000] > buffer:[366.000-372.000][420.000-438.000][480.000-492.000][540.000-558.000][600.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 62 cc: 0 of [0-107] level: 3, target: 372" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Media seeked to 366.001" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 62 cc: 0 of [0-107] track: 0, target: 371.966" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Warning] [warn] >"Playback stalling at @366.000933333 due to low buffer ({\"len\":5.965028667000013,\"start\":366,\"end\":371.965962,\"nextStart\":420.007437})" (hls.min.js, line 1)
[Warning] [warn] >"playback not stuck anymore @366.208933333, after 379ms" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 62 of level 3" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 62 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 307.751, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 307.751, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 307.751, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 62 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 62 of track 0 (frag:[371.966-377.957] > buffer:[365.952-377.957][420.007-437.956][479.961-497.956][539.964-557.959][599.9…" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 51 cc: 0 of [0-107] track: 0, target: 307.751" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 51 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 51 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 51 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 51 of track 0 (frag:[305.952-311.966] > buffer:[305.952-311.966][365.952-377.957][420.007-437.956][479.961-497.956][539.9…" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 62 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 62 of level 3 (frag:[372.000-378.000] > buffer:[366.000-378.000][420.000-438.000][480.000-492.000][540.000-558.000][600.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 51 cc: 0 of [0-107] level: 3, target: 307.751" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 51 p: -1 level: 3 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 51 of level 3" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 51 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 51 of level 3 (frag:[306.000-312.000] > buffer:[306.000-312.000][366.000-378.000][420.000-438.000][480.000-492.000][540.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 52 cc: 0 of [0-107] level: 3, target: 312" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Media seeked to 306.000" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 52 cc: 0 of [0-107] track: 0, target: 311.966" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 52 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 52 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 52 of track 0 (frag:[311.966-317.957] > buffer:[305.952-317.957][365.952-377.957][420.007-437.956][479.961-497.956][539.9…" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 52 of level 3" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 53 cc: 0 of [0-107] track: 0, target: 317.957" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 53 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 53 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Buffered audio sn: 53 of track 0 (frag:[317.957-323.971] > buffer:[305.952-323.971][365.952-377.957][420.007-437.956][479.961-497.956][539.9…" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""media seeking to 248.666, state: FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""media seeking to 248.666, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[subtitle-stream-controller]:""media seeking to 248.666, state: IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 41 cc: 0 of [0-107] track: 0, target: 248.666" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, audio]: Starting new transmux session for sn: 41 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loaded fragment 41 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Warning] [warn] >"[buffer-operation-queue]: Unhandled exception executing the current operation" (hls.min.js, line 1)
[Error] [error] >"[buffer-controller]: Error encountered while trying to append to the audio SourceBuffer" – QuotaExceededError: The quota has been exceeded. — buffer-controller.ts:910
QuotaExceededError: The quota has been exceeded. — buffer-controller.ts:910
	error
	onError (hls.min.js:1:267680)
	executeNext (hls.min.js:1:260509)
	append (hls.min.js:1:260035)
	onBufferAppending (hls.min.js:1:268215)
	emit (hls.min.js:1:189126)
	bufferFragmentData (hls.min.js:1:122605)
	_handleTransmuxComplete (hls.min.js:1:240407)
	(anonymous function)
	handleTransmuxComplete (hls.min.js:1:197072)
	onWorkerMessage (hls.min.js:1:196578)
[Warning] [warn] >"[audio-stream-controller]:""Buffer full error while media.currentTime is not buffered, flush audio buffer" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Reset loading state" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->IDLE" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: Removing [0,648] from the audio SourceBuffer" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""Loading fragment 41 cc: 0 of [0-107] track: 0, target: 248.666" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 41 of level 0" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Warning] [warn] >"[audio-stream-controller]:""Found no media in fragment 41 of level 0 resetting transmuxer to fallback to playlist timing" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""PARSING->IDLE" (hls.min.js, line 1)
[Log] [log] >"[audio-stream-controller]:""IDLE->PARSED" (hls.min.js, line 1)
[Warning] [warn] >"Fragments must have at least one ElementaryStreamType set. type: audio level: 0 sn: 41" (hls.min.js, line 1)
[Log] [log] >"[buffer-controller]: Blocking operation requested, but no SourceBuffers exist" (hls.min.js, line 1)
[Warning] [warn] >"[audio-stream-controller]:""Fragment 41 of level 0 finished buffering, but was aborted. state: PARSED, audioSwitch: false" (hls.min.js, line 1)
[Warning] [warn] >"[audio-stream-controller]:""Fragment 41 of level 0 was dropped during download." (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 52 of level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 52 of level 3 (frag:[312.000-318.000] > buffer:[306.000-318.000][366.000-378.000][420.000-438.000][480.000-492.000][540.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 0 from level 3" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 0 from level 3" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 41 cc: 0 of [0-107] level: 0, target: 248.666" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 41 p: -1 level: 0 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 41 of level 0" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.64000d]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 41 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 41 of level 0 (frag:[246.000-252.000] > buffer:[246.000-252.000][306.000-318.000][366.000-378.000][420.000-438.000][480.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 42 cc: 0 of [0-107] level: 0, target: 252" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 42 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 42 of level 0" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 42 of level 0 (frag:[252.000-258.000] > buffer:[246.000-258.000][306.000-318.000][366.000-378.000][420.000-438.000][480.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Adapting to level 1 from level 0" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Switching to level 1 from level 0" (hls.min.js, line 1)
[Log] [log] >"[level-controller]:""Loading level index 1 with URI 1/1 https://playertest.longtailvideo.com/adaptive/elephants_dream_v4/media/b688000-video.m3u8" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->WAITING_LEVEL" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Level 1 loaded [0,107][part-107--1], cc [0, 0] duration:648" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""WAITING_LEVEL->IDLE" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loading fragment 43 cc: 0 of [0-107] level: 1, target: 258" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""IDLE->FRAG_LOADING" (hls.min.js, line 1)
[Log] [log] >"[transmuxer-interface, main]: Starting new transmux session for sn: 43 p: -1 level: 1 id: 1↵        discontinuity: false↵      …" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Loaded fragment 43 of level 1" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: ISGenerated flag reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: initPTS & initDTS reset" (hls.min.js, line 1)
[Log] [log] >"[mp4-remuxer]: reset next timestamp" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""FRAG_LOADING->PARSING" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42001e/avc1.640015]" (hls.min.js, line 1)
[Log] [log] >"[transmuxer.ts]: Flushed fragment 43 of level 1" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSING->PARSED" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""Buffered main sn: 43 of level 1 (frag:[258.000-263.999] > buffer:[246.000-263.999][306.000-318.000][366.000-378.000][420.000-438.000][480.00…" (hls.min.js, line 1)
[Log] [log] >"[stream-controller]:""PARSED->IDLE" (hls.min.js, line 1)

Chrome media internals output

No response

@willdharris willdharris added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Jun 21, 2023
@robwalch robwalch added this to the 1.5.0 milestone Jun 22, 2023
@robwalch robwalch removed the Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. label Jun 22, 2023
@robwalch
Copy link
Collaborator

@robwalch
Copy link
Collaborator

Thanks for the issue.

Unfortunately there is no way to have HLS.js automatically manage disconnected forward buffered ranges. I’d like there to be, but haven’t come up with a plan to either add new config options, or modify some or all of the existing ones.

backBufferLength manages the buffer behind the playhead only. Semantically forwardBufferLength might work.

I’ve also heard the feedback that the maxBuffer setting are not intuitive as they control stream controller idling, vs expected overall buffer/memory usage. Either modifying them, or replacing/extending them with new settings where HLS.js could perform buffer management tasks on either end of the playhead is needed.

The only workaround available now is to flush the buffer manually by triggering an event:
hls.trigger(Hls.Events.BUFFER_FLUSHING, { startOffset: number, endOffset: number | Infinity, type: null | 'audio' | 'video' | 'audiovideo' });.

For QuotaExceededError specifically, it sounds like it's never getting to the final fallback of flushing everything. As a simple fix for this issue, we should flush disconnected forward buffer ranges before it comes to that.

protected reduceLengthAndFlushBuffer(data: ErrorData): boolean {
// if in appending state
if (this.state === State.PARSING || this.state === State.PARSED) {
const playlistType = data.parent as PlaylistLevelType;
const bufferedInfo = this.getFwdBufferInfo(
this.mediaBuffer,
playlistType
);
// 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end
// reduce max buf len if current position is buffered
const buffered = bufferedInfo && bufferedInfo.len > 0.5;
if (buffered) {
this.reduceMaxBufferLength(bufferedInfo.len);
}
const flushBuffer = !buffered;
if (flushBuffer) {
// current position is not buffered, but browser is still complaining about buffer full error
// this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708
// in that case flush the whole audio buffer to recover
this.warn(
`Buffer full error while media.currentTime is not buffered, flush ${playlistType} buffer`
);
}
if (data.frag) {
this.fragmentTracker.removeFragment(data.frag);
this.nextLoadPosition = data.frag.start;
}
this.resetLoadingState();
return flushBuffer;
}
return false;
}

@robwalch
Copy link
Collaborator

Hi @willdharris,

Could you take a look at #5761? Would setting a frontBufferFlushThreshold resolve this for you?

@willdharris
Copy link
Author

@robwalch Sorry for the delay. I'll look at this.

@willdharris
Copy link
Author

@robwalch Yes, this resolves the issue. I was able to test on the problem device, and setting an appropriate frontBufferFlushThreshold keeps us from hitting the QuotaExceededError. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants