video-dev / hls.js

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

Multiple requests for the same fragment triggered and aborted when level switches on network throttling to 5 Mb/s #3452

Closed Andrewtop closed 2 years ago

Andrewtop commented 3 years ago

Hey there!

Converting my previous question to bug according to discussion

What version of Hls.js are you using?

0.14.16, 0.14.17

What browser and OS are you using?

Chrome Version 88.0.4324.96, LG WebOS 5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36 WebAppManager

Test stream:

Can't provide :(

Checklist

Steps to reproduce

  1. Enable CPU throttling
  2. Play the VOD and enable network throttling to 5-6 Mb/s when 1 segment is loaded.

Expected behavior

Different quality levels are loaded. No multiple loading of the same quality level fragments.

Actual behavior

Multiple request for the exactly same fragment of the same quality triggered and aborted several times. Multiple level switching occurs.

Console output

Logs latest.log

UPD: Logs from https://hls-js.netlify.app/demo/ : hls-js.netlify.log

Network: https://user-images.githubusercontent.com/13644091/106259586-1ece9100-6228-11eb-8d7c-e1bd7778a02c.png

Stream info: stream-info.txt

Overall

We've received some reports of buffering that appears on 6 seconds of playback on some tv targets(6 seconds is exactly the end of the fragment). We are using 0.14.16 version. Reproduced for 0.14.17 as well.

So what's happening is:

  1. manifest parsed and first encountered level is chosen(level 4);
  2. the list of fragments for video and audio is loaded based on the chosen level;
  3. then switch to the higher 6 video level occurs;
  4. the list of level 6 video fragments loaded;
  5. network throttling enabled;
  6. starts loading video fragment 2 of level 6;
  7. the list of better quality audio fragment loaded;
  8. audio loaded from the very 1 fragment!
  9. starts loading of video fragment 2 of level 6 for the second time! the same fragment! the first load aborted?!
  10. audio switched to the lower level and 1 audio fragment is loaded again!
  11. starts loading of video fragment 2 of level 6 for the third time! the same part! the first and second load aborted?!
  12. video level switched to some lower and things normalized;

So enabling network throttling leads to level switching several times(which is designed behavior). But also I can see that multiple request for the exactly same fragment triggered and aborted several times.

Can you help me to get what is rootcause of this? Is it a configuration issue? Is it a bug in hls.js? Is this a designed behavior? Is it an issue with a stream?

Thank you in advance!

robwalch commented 3 years ago

Look at the error events coming from the player. They should provide details if loading timed out or errored for any reason. The debug logs should cover ABR behavior.

Please include a sample manifest so that we have an idea of the variants and bitrates in the stream you are testing with.

Finally, test the same scenario with the latest beta release. The next major update may resolve or change the behavior you are experiencing.

Andrewtop commented 3 years ago

From time to time I can see not fatal bufferStalledError. Sometimes it does affect playback but sometimes it is not.

Here is manifest sample manifest-sample.txt.

Tried https://hls-js-dev.netlify.com/demo . Looks promising when start playing with normal connection and then switch to 5mb/s! But couple times when I start playing the video with 5 mb/s from the begging I got buffered stalled error and video didn't play at all. Can you please advice any options on how can I check the stream I've got? Are you planning to release v1.0.0 soon? UPD: here is some logs from one of the failed attempts:

Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
logger.ts:74 [log] >
hls.ts:388 [log] > stopLoad
hls.ts:364 [log] > loadSource:https://dve-streams.akamaized.net/ns-006/MjAyMQ/MQ/M_jM/2656d167-872b-4932-9820-97e8d9bb22b1/master-ea5e15d8-9c16-4261-bf10-29dd66d90ee9.m3u8?hdnea=exp=1614248713~acl=/ns-006/MjAyMQ/MQ/M_jM/2656d167-872b-4932-9820-97e8d9bb22b1/*~id=511087e5-f3de-4450-bcde-2161b56a4901~hmac=d3705ee21632240b42a4a68f97548a389e4f36f43bac28487d65cde259ddcf5f
stream-controller.ts:538 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:336 [log] > attachMedia
level-controller.ts:165 [log] > [level-controller]: manifest loaded, 7 level(s) found, first bitrate: 3586350
buffer-controller.ts:127 [log] > 2 bufferCodec event(s) expected
hls.ts:378 [log] > startLoad(-1)
level-controller.ts:233 [log] > [level-controller]: switching to level 4 from -1
audio-track-controller.ts:130 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "audio-2" group-id
audio-track-controller.ts:186 [log] > [audio-track-controller]: Now switching to audio-track index 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: STOPPED->IDLE
level-controller.ts:506 [log] > [level-controller]: Attempt loading level index 4 with URL-id 0 https://dve-streams.akamaized.net/ns-006/MjAyMQ/MQ/M_jM/2656d167-872b-4932-9820-97e8d9bb22b1/video/050d97a2-ace5-4477-a11c-3c12eda6c5e7/index.m3u8?hdntl=exp=1614335109~acl=%2f*~id=511087e5-f3de-4450-bcde-2161b56a4901~data=hdntl~hmac=b57ee7777b3972e7216055d427f806a444803675de7396107deb7895cc86fb28
base-stream-controller.ts:1213 [log] > [stream-controller]: STOPPED->IDLE
audio-track-controller.ts:246 [log] > [audio-track-controller]: loading audio-track playlist for id: 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
base-stream-controller.ts:1213 [log] > [subtitle-stream-controller]: STOPPED->IDLE
502[Violation] Added non-passive event listener to a scroll-blocking <some> event. Consider marking event handler as 'passive' to make the page more responsive. See <URL>
buffer-controller.ts:711 [log] > [buffer-controller]: Media source opened
stream-controller.ts:602 [log] > [stream-controller]: Level 4 loaded [0,284], cc [0, 0] duration:1708.367
buffer-controller.ts:616 [log] > [buffer-controller]: Updating Media Source duration to 1708.367
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-284] level: 4, target: 0
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->FRAG_LOADING
audio-track-controller.ts:83 [log] > [audio-track-controller]: audioTrack 0 loaded [0-284]
audio-stream-controller.ts:444 [log] > [audio-stream-controller]: Track 0 loaded [0,284],duration:1708.3889999999926
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:537 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-284] track: 0, target: 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:66 [log] > demuxing in webworker
audio-stream-controller.ts:548 [log] > Unknown video PTS for cc 0, waiting for video PTS before demuxing audio frag 0 of [0 ,284],track 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
base-stream-controller.ts:320 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
transmuxer-interface.ts:66 [log] > demuxing in webworker
transmuxer-interface.ts:186 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 4 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
base-stream-controller.ts:320 [log] > [stream-controller]: Loaded fragment 0 of level 4
74[Violation] 'requestAnimationFrame' handler took <N>ms
5f47fe85-0617-473c-b933-8daf6b85059e:603 [log] >
01f099eb-86f5-4aff-a8a3-f3468db81e2f:603 [log] >
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2666 [log] > [mp4-remuxer]: initPTS & initDTS reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:947 [log] > [transmuxer.ts]: Flushed fragment 0 of level 4
base-stream-controller.ts:1213 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1230 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640029/avc1.640029]
audio-stream-controller.ts:114 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 9000
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: WAITING_INIT_PTS->FRAG_LOADING
transmuxer-interface.ts:186 [log] > [transmuxer-interface, audio]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 0
5f47fe85-0617-473c-b933-8daf6b85059e:7897 [log] > ADTS sync word found !
5f47fe85-0617-473c-b933-8daf6b85059e:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
5f47fe85-0617-473c-b933-8daf6b85059e:2666 [log] > [mp4-remuxer]: initPTS & initDTS reset
5f47fe85-0617-473c-b933-8daf6b85059e:7532 [log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2
5f47fe85-0617-473c-b933-8daf6b85059e:7694 [log] > parsed codec:mp4a.40.5,rate:48000,nb channel:2
5f47fe85-0617-473c-b933-8daf6b85059e:2836 [log] > [mp4-remuxer]: audio sampling rate : 48000
5f47fe85-0617-473c-b933-8daf6b85059e:947 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:842 [log] > [audio-stream-controller]: Switching audio track : flushing all audio
audio-stream-controller.ts:789 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[parsed]=[mp4a.40.5]
buffer-controller.ts:675 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.640029)
buffer-controller.ts:675 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)
stream-controller.ts:817 [log] > [stream-controller]: Alternate track found, use video.buffered to schedule main fragment loading
buffer-controller.ts:785 [log] > [buffer-controller]: Removing [0,1708.367] from the audio SourceBuffer
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:537 [log] > [audio-stream-controller]: Loading fragment 1 cc: 0 of [0-284] track: 0, target: 6.037
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
level-controller.ts:233 [log] > [level-controller]: switching to level 0 from 4
audio-track-controller.ts:130 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "audio-1" group-id
audio-track-controller.ts:186 [log] > [audio-track-controller]: Now switching to audio-track index 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: IDLE->WAITING_TRACK
audio-track-controller.ts:246 [log] > [audio-track-controller]: loading audio-track playlist for id: 0
level-controller.ts:506 [log] > [level-controller]: Attempt loading level index 0 with URL-id 0 https://dve-streams.akamaized.net/ns-006/MjAyMQ/MQ/M_jM/2656d167-872b-4932-9820-97e8d9bb22b1/video/a0f240d3-d3cd-4853-b308-bfeab3fb2f47/index.m3u8?hdntl=exp=1614335109~acl=%2f*~id=511087e5-f3de-4450-bcde-2161b56a4901~data=hdntl~hmac=b57ee7777b3972e7216055d427f806a444803675de7396107deb7895cc86fb28
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->WAITING_LEVEL
base-stream-controller.ts:1077 [log] > [audio-stream-controller]: Fragment 1 of level 0 was aborted, flushing transmuxer
5f47fe85-0617-473c-b933-8daf6b85059e:947 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:599 [warn] > [audio-stream-controller]: State is expected to be PARSING on transmuxer flush, but is WAITING_TRACK.
_handleTransmuxerFlush @ base-stream-controller.ts:599
onWorkerMessage @ transmuxer-interface.ts:284
audio-stream-controller.ts:595 [warn] > [audio-stream-controller]: Fragment 0 of level 0 finished buffering, but was aborted. state: WAITING_TRACK, audioSwitch: true
onFragBuffered @ audio-stream-controller.ts:595
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
onUnblocked @ buffer-controller.ts:470
(anonymous) @ buffer-controller.ts:835
Promise.then (async)
blockBuffers @ buffer-controller.ts:833
onFragParsed @ buffer-controller.ts:484
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_handleTransmuxerFlush @ base-stream-controller.ts:617
onWorkerMessage @ transmuxer-interface.ts:284
stream-controller.ts:602 [log] > [stream-controller]: Level 0 loaded [0,284], cc [0, 0] duration:1708.367
base-stream-controller.ts:1213 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-284] level: 0, target: 3.233
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->FRAG_LOADING
audio-track-controller.ts:83 [log] > [audio-track-controller]: audioTrack 0 loaded [0-284]
audio-stream-controller.ts:444 [log] > [audio-stream-controller]: Track 0 loaded [0,284],duration:1708.3889999999926
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:537 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-284] track: 0, target: 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
gap-controller.ts:236 [warn] > skipping hole, adjusting currentTime from 0 to 0.1
_trySkipBufferHole @ gap-controller.ts:236
poll @ gap-controller.ts:125
checkBuffer @ stream-controller.ts:922
onTickEnd @ stream-controller.ts:200
doTick @ stream-controller.ts:195
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:119
(anonymous) @ hls.ts:380
startLoad @ hls.ts:379
Hls.levelController.onParsedComplete @ hls.ts:134
onManifestLoaded @ level-controller.ts:187
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
handleMasterPlaylist @ playlist-loader.ts:448
loadsuccess @ playlist-loader.ts:345
readystatechange @ xhr-loader.ts:177
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:121
load @ xhr-loader.ts:66
load @ playlist-loader.ts:307
onManifestLoading @ playlist-loader.ts:152
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
loadSource @ hls.ts:367
loadSelectedStream @ main.js:370
(anonymous) @ main.js:129
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
base-stream-controller.ts:320 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
5f47fe85-0617-473c-b933-8daf6b85059e:947 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
base-stream-controller.ts:194 [log] > [stream-controller]: media seeking to 0.100, state: FRAG_LOADING
base-stream-controller.ts:194 [log] > [audio-stream-controller]: media seeking to 0.100, state: FRAG_LOADING
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:842 [log] > [audio-stream-controller]: Switching audio track : flushing all audio
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: PARSING->PARSED
stream-controller.ts:529 [log] > [stream-controller]: Media seeked to 0.200
transmuxer-interface.ts:186 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
base-stream-controller.ts:320 [log] > [stream-controller]: Loaded fragment 0 of level 0
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2671 [log] > [mp4-remuxer]: reset next timestamp
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2666 [log] > [mp4-remuxer]: initPTS & initDTS reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:947 [log] > [transmuxer.ts]: Flushed fragment 0 of level 0
base-stream-controller.ts:1213 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1230 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42c01f/avc1.42c01f]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSING->PARSED
stream-controller.ts:834 [warn] > [stream-controller]: Fragment 0 of level 4 finished buffering, but was aborted. state: PARSED
onFragBuffered @ stream-controller.ts:834
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
onUnblocked @ buffer-controller.ts:470
(anonymous) @ buffer-controller.ts:835
Promise.then (async)
blockBuffers @ buffer-controller.ts:833
onFragParsed @ buffer-controller.ts:484
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_handleTransmuxerFlush @ base-stream-controller.ts:617
onWorkerMessage @ transmuxer-interface.ts:284
buffer-controller.ts:785 [log] > [buffer-controller]: Removing [0,1708.367] from the audio SourceBuffer
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: PARSED->IDLE
level-controller.ts:233 [log] > [level-controller]: switching to level 5 from 0
audio-track-controller.ts:130 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "audio-2" group-id
level-controller.ts:506 [log] > [level-controller]: Attempt loading level index 5 with URL-id 0 https://dve-streams.akamaized.net/ns-006/MjAyMQ/MQ/M_jM/2656d167-872b-4932-9820-97e8d9bb22b1/video/dbfb35fe-a21f-4596-a119-32533df0e632/index.m3u8?hdntl=exp=1614335109~acl=%2f*~id=511087e5-f3de-4450-bcde-2161b56a4901~data=hdntl~hmac=b57ee7777b3972e7216055d427f806a444803675de7396107deb7895cc86fb28
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->WAITING_LEVEL
stream-controller.ts:602 [log] > [stream-controller]: Level 5 loaded [0,284], cc [0, 0] duration:1708.367
base-stream-controller.ts:1213 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-284] level: 5, target: 6
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->FRAG_LOADING
stream-controller.ts:834 [warn] > [stream-controller]: Fragment 0 of level 0 finished buffering, but was aborted. state: FRAG_LOADING
onFragBuffered @ stream-controller.ts:834
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
onUnblocked @ buffer-controller.ts:470
(anonymous) @ buffer-controller.ts:835
Promise.then (async)
blockBuffers @ buffer-controller.ts:833
onFragParsed @ buffer-controller.ts:484
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_handleTransmuxerFlush @ base-stream-controller.ts:617
onWorkerMessage @ transmuxer-interface.ts:284
base-stream-controller.ts:451 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [6.018,12.056]
base-stream-controller.ts:941 [log] > [audio-stream-controller]: SN 0 just loaded, load next one: 1
base-stream-controller.ts:537 [log] > [audio-stream-controller]: Loading fragment 1 cc: 0 of [0-284] track: 0, target: 6.018
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:320 [log] > [audio-stream-controller]: Loaded fragment 1 of level 0
5f47fe85-0617-473c-b933-8daf6b85059e:947 [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:451 [log] > [audio-stream-controller]: Buffered audio sn: 1 of track 0 [6.018,18.050]
base-stream-controller.ts:1213 [log] > [audio-stream-controller]: PARSED->IDLE
transmuxer-interface.ts:186 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 5 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 6
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2671 [log] > [mp4-remuxer]: reset next timestamp
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2666 [log] > [mp4-remuxer]: initPTS & initDTS reset
base-stream-controller.ts:320 [log] > [stream-controller]: Loaded fragment 1 of level 5
01f099eb-86f5-4aff-a8a3-f3468db81e2f:947 [log] > [transmuxer.ts]: Flushed fragment 1 of level 5
base-stream-controller.ts:1213 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1230 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640029/avc1.640029]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:451 [log] > [stream-controller]: Buffered main sn: 1 of level 5 [0.000,12.000]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-284] level: 5, target: 12
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->FRAG_LOADING
gap-controller.ts:203 [warn] > Playback stalling at @0.868426 due to low buffer (buffer=0)
_reportStall @ gap-controller.ts:203
poll @ gap-controller.ts:140
checkBuffer @ stream-controller.ts:922
onTickEnd @ stream-controller.ts:200
doTick @ stream-controller.ts:195
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:119
(anonymous) @ hls.ts:380
startLoad @ hls.ts:379
Hls.levelController.onParsedComplete @ hls.ts:134
onManifestLoaded @ level-controller.ts:187
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
handleMasterPlaylist @ playlist-loader.ts:448
loadsuccess @ playlist-loader.ts:345
readystatechange @ xhr-loader.ts:177
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:121
load @ xhr-loader.ts:66
load @ playlist-loader.ts:307
onManifestLoading @ playlist-loader.ts:152
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
loadSource @ hls.ts:367
loadSelectedStream @ main.js:370
(anonymous) @ main.js:129
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
latency-controller.ts:179 [warn] > [playback-rate-controller]: Stall detected, adjusting target latency
onError @ latency-controller.ts:179
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_reportStall @ gap-controller.ts:206
poll @ gap-controller.ts:140
checkBuffer @ stream-controller.ts:922
onTickEnd @ stream-controller.ts:200
doTick @ stream-controller.ts:195
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:119
(anonymous) @ hls.ts:380
startLoad @ hls.ts:379
Hls.levelController.onParsedComplete @ hls.ts:134
onManifestLoaded @ level-controller.ts:187
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
handleMasterPlaylist @ playlist-loader.ts:448
loadsuccess @ playlist-loader.ts:345
readystatechange @ xhr-loader.ts:177
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:121
load @ xhr-loader.ts:66
load @ playlist-loader.ts:307
onManifestLoading @ playlist-loader.ts:152
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
loadSource @ hls.ts:367
loadSelectedStream @ main.js:370
(anonymous) @ main.js:129
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
main.js:718 Error event: {type: "mediaError", details: "bufferStalledError", fatal: false, buffer: 0}
(anonymous) @ main.js:718
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_reportStall @ gap-controller.ts:206
poll @ gap-controller.ts:140
checkBuffer @ stream-controller.ts:922
onTickEnd @ stream-controller.ts:200
doTick @ stream-controller.ts:195
tick @ task-loop.ts:110
setInterval (async)
setInterval @ task-loop.ts:72
startLoad @ stream-controller.ts:119
(anonymous) @ hls.ts:380
startLoad @ hls.ts:379
Hls.levelController.onParsedComplete @ hls.ts:134
onManifestLoaded @ level-controller.ts:187
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
handleMasterPlaylist @ playlist-loader.ts:448
loadsuccess @ playlist-loader.ts:345
readystatechange @ xhr-loader.ts:177
XMLHttpRequest.send (async)
loadInternal @ xhr-loader.ts:121
load @ xhr-loader.ts:66
load @ playlist-loader.ts:307
onManifestLoading @ playlist-loader.ts:152
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
loadSource @ hls.ts:367
loadSelectedStream @ main.js:370
(anonymous) @ main.js:129
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
abr-controller.ts:182 [warn] > Fragment 2 of level 5 is loading too slowly and will cause an underbuffer; aborting and switching to level 0
      Current BW estimate: 12282.911 Kb/s
      Estimated load time for current fragment: 1.820 s
      Estimated load time for the next fragment: 1.175 s
      Time to underbuffer: 0.000 s
_abandonRulesCheck @ abr-controller.ts:182
setInterval (async)
onFragLoading @ abr-controller.ts:75
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_doFragLoad @ base-stream-controller.ts:546
_loadFragForPlayback @ base-stream-controller.ts:297
loadFragment @ base-stream-controller.ts:273
loadFragment @ stream-controller.ts:365
doTickIdle @ stream-controller.ts:318
doTick @ stream-controller.ts:165
tick @ task-loop.ts:110
fragBufferedComplete @ base-stream-controller.ts:459
onFragBuffered @ stream-controller.ts:848
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
onUnblocked @ buffer-controller.ts:470
(anonymous) @ buffer-controller.ts:835
Promise.then (async)
blockBuffers @ buffer-controller.ts:833
onFragParsed @ buffer-controller.ts:484
(anonymous) @ hls.ts:217
emit @ index.js:203
trigger @ hls.ts:310
_handleTransmuxerFlush @ base-stream-controller.ts:617
onWorkerMessage @ transmuxer-interface.ts:284
level-controller.ts:233 [log] > [level-controller]: switching to level 0 from 5
audio-track-controller.ts:130 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "audio-1" group-id
base-stream-controller.ts:1213 [log] > [stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-284] level: 0, target: 12
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1077 [log] > [stream-controller]: Fragment 2 of level 5 was aborted, flushing transmuxer
01f099eb-86f5-4aff-a8a3-f3468db81e2f:947 [log] > [transmuxer.ts]: Flushed fragment 2 of level 5
base-stream-controller.ts:599 [warn] > [stream-controller]: State is expected to be PARSING on transmuxer flush, but is FRAG_LOADING.
_handleTransmuxerFlush @ base-stream-controller.ts:599
onWorkerMessage @ transmuxer-interface.ts:284
transmuxer-interface.ts:186 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 2 p: -1 level: 0 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 12
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
base-stream-controller.ts:320 [log] > [stream-controller]: Loaded fragment 2 of level 0
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2671 [log] > [mp4-remuxer]: reset next timestamp
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2666 [log] > [mp4-remuxer]: initPTS & initDTS reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:947 [log] > [transmuxer.ts]: Flushed fragment 2 of level 0
base-stream-controller.ts:1213 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1230 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.42c01f/avc1.42c01f]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:451 [log] > [stream-controller]: Buffered main sn: 2 of level 0 [0.000,18.000]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:233 [log] > [level-controller]: switching to level 3 from 0
audio-track-controller.ts:130 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "audio-2" group-id
level-controller.ts:506 [log] > [level-controller]: Attempt loading level index 3 with URL-id 0 https://dve-streams.akamaized.net/ns-006/MjAyMQ/MQ/M_jM/2656d167-872b-4932-9820-97e8d9bb22b1/video/a9b39713-2ed7-4044-9ca8-e98d3a68ad01/index.m3u8?hdntl=exp=1614335109~acl=%2f*~id=511087e5-f3de-4450-bcde-2161b56a4901~data=hdntl~hmac=b57ee7777b3972e7216055d427f806a444803675de7396107deb7895cc86fb28
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->WAITING_LEVEL
stream-controller.ts:602 [log] > [stream-controller]: Level 3 loaded [0,284], cc [0, 0] duration:1708.367
base-stream-controller.ts:1213 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-284] level: 3, target: 18
base-stream-controller.ts:1213 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:186 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 3 p: -1 level: 3 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 18
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2671 [log] > [mp4-remuxer]: reset next timestamp
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2677 [log] > [mp4-remuxer]: ISGenerated flag reset
01f099eb-86f5-4aff-a8a3-f3468db81e2f:2666 [log] > [mp4-remuxer]: initPTS & initDTS reset
base-stream-controller.ts:320 [log] > [stream-controller]: Loaded fragment 3 of level 3
01f099eb-86f5-4aff-a8a3-f3468db81e2f:947 [log] > [transmuxer.ts]: Flushed fragment 3 of level 3
base-stream-controller.ts:1213 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1230 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640029/avc1.640029]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:451 [log] > [stream-controller]: Buffered main sn: 3 of level 3 [0.000,24.000]
base-stream-controller.ts:1213 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:537 [log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-284] level: 3, target: 24
...
robwalch commented 3 years ago

Please try the latest pre-release and if this is still an issue provide a sample stream that we can use to reproduce the issue. A guide to testing (debugging and cpu/network throttling described above) on LG WebOS would be a great help too.

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

stale[bot] commented 2 years ago

This issue has been automatically closed because it has not had recent activity. If this issue is still valid, please ping a maintainer and ask them to label it accordingly.