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

Audio buffer was stalled when ABR bitrate was changed twice #3770

Closed
5 tasks done
infocity-tanemura opened this issue Apr 13, 2021 · 4 comments · Fixed by #3748 or #3800
Closed
5 tasks done

Audio buffer was stalled when ABR bitrate was changed twice #3770

infocity-tanemura opened this issue Apr 13, 2021 · 4 comments · Fixed by #3748 or #3800

Comments

@infocity-tanemura
Copy link

What version of Hls.js are you using?

1.0.0

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

Windows Chrome /Mac OS Chrome/Windows Edge

Test stream:

https://github.com/os2man2/sample_hls_fmp4_2/master.m3u8

https://hls-js.netlify.app/demo/?src=https%3A%2F%2Fos2man2.github.io%2Fsample_hls_fmp4_2%2Fmaster.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6dHJ1ZSwibGV2ZWxDYXBwaW5nIjotMSwibGltaXRNZXRyaWNzIjotMX0=

Configuration:

{
  "debug": true,
  "enableWorker": true,
  "lowLatencyMode": true,
  "backBufferLength": 90
}

Checklist

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

Steps to reproduce

  1. See playing demo stream by attached link.
  2. Video will be stopped by buffer stalled error

Expected behavior

Play video without stop stream

Actual behavior

Stop stream and cannot continue to play it any more.
Because audio buffer was stalled at first segment
when ABR bitrate was changed twice like below.
ABR’s transition : l0 (1st segment) -> l1 (second segment) -> l3 (thrid segment)

Console output

Using Hls.js config: Object
logger.ts:74 [log] >
hls.ts:354 [log] > stopLoad
hls.ts:330 [log] > loadSource:https://os2man2.github.io/sample_hls_fmp4_2/master.m3u8
stream-controller.ts:540 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:302 [log] > attachMedia
level-controller.ts:171 [log] > [level-controller]: manifest loaded, 4 level(s) found, first bitrate: 192000
buffer-controller.ts:129 [log] > 2 bufferCodec event(s) expected
hls.ts:344 [log] > startLoad(-1)
level-controller.ts:250 [log] > [level-controller]: switching to level 0 from -1
audio-track-controller.ts:132 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "l0" group-id
audio-track-controller.ts:188 [log] > [audio-track-controller]: Now switching to audio-track index 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: STOPPED->IDLE
level-controller.ts:523 [log] > [level-controller]: Attempt loading level index 0 with URL-id 0 https://os2man2.github.io/sample_hls_fmp4_2/0/output.m3u8
base-stream-controller.ts:1265 [log] > [stream-controller]: STOPPED->IDLE
audio-track-controller.ts:248 [log] > [audio-track-controller]: loading audio-track playlist for id: 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
base-stream-controller.ts:1265 [log] > [subtitle-stream-controller]: STOPPED->IDLE
buffer-controller.ts:736 [log] > [buffer-controller]: Media source opened
stream-controller.ts:604 [log] > [stream-controller]: Level 0 loaded [0,13], cc [0, 0] duration:26.839999999999996
buffer-controller.ts:628 [log] > [buffer-controller]: Updating Media Source duration to 26.840
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment initSegment cc: 0 level: 0, target: 0
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
audio-track-controller.ts:85 [log] > [audio-track-controller]: audioTrack 0 loaded [0-12]
audio-stream-controller.ts:440 [log] > [audio-stream-controller]: Track 0 loaded [0,12],duration:24.938229999999997
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment initSegment cc: 0 track: 0, target: 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: initSegment of level 0
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-13] level: 0, target: 0
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: initSegment of track 0
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:66 [log] > demuxing in webworker
transmuxer-interface.ts:180 [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
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 0 of level 0
transmuxer-interface.ts:66 [log] > demuxing in webworker
audio-stream-controller.ts:544 [log] > Unknown video PTS for cc 0, waiting for video PTS before demuxing audio frag 0 of [0 ,12],track 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
​ [log] >
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1218 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.641028/avc1.641028]
audio-stream-controller.ts:113 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: WAITING_INIT_PTS->FRAG_LOADING
transmuxer-interface.ts:180 [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
14[log] > [transmuxer.ts]: Flushed fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
​ [log] >
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:829 [log] > [audio-stream-controller]: Switching audio track : flushing all audio
audio-stream-controller.ts:777 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[parsed]=[mp4a.40.2]
buffer-controller.ts:697 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.641028)
buffer-controller.ts:697 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
stream-controller.ts:819 [log] > [stream-controller]: Alternate track found, use video.buffered to schedule main fragment loading
buffer-controller.ts:810 [log] > [buffer-controller]: Removing [0,26.839999999999996] from the audio SourceBuffer
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 0 of level 0 [0.080,2.480]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:250 [log] > [level-controller]: switching to level 3 from 0
audio-track-controller.ts:132 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "l3" group-id
audio-track-controller.ts:188 [log] > [audio-track-controller]: Now switching to audio-track index 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->WAITING_TRACK
audio-track-controller.ts:248 [log] > [audio-track-controller]: loading audio-track playlist for id: 0
level-controller.ts:523 [log] > [level-controller]: Attempt loading level index 3 with URL-id 0 https://os2man2.github.io/sample_hls_fmp4_2/6/output.m3u8
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->WAITING_LEVEL
audio-track-controller.ts:85 [log] > [audio-track-controller]: audioTrack 0 loaded [0-12]
audio-stream-controller.ts:440 [log] > [audio-stream-controller]: Track 0 loaded [0,12],duration:24.938229999999997
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment initSegment cc: 0 track: 0, target: 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
audio-stream-controller.ts:591 [warn] > [audio-stream-controller]: Fragment 0 of level 0 finished buffering, but was aborted. state: FRAG_LOADING, audioSwitch: true
onFragBuffered @ audio-stream-controller.ts:591
stream-controller.ts:604 [log] > [stream-controller]: Level 3 loaded [0,13], cc [0, 0] duration:26.839999999999996
base-stream-controller.ts:1265 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment initSegment cc: 0 level: 3, target: 0
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: initSegment of track 0 [0.000,2.020]
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 1 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: initSegment of level 3 [0.080,2.480]
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-13] level: 3, target: 2.48
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
gap-controller.ts:241 [warn] > skipping hole, adjusting currentTime from 0 to 0.13
_trySkipBufferHole @ gap-controller.ts:241
base-stream-controller.ts:197 [log] > [stream-controller]: media seeking to 0.130, state: FRAG_LOADING
base-stream-controller.ts:197 [log] > [audio-stream-controller]: media seeking to 0.130, state: FRAG_LOADING
stream-controller.ts:531 [log] > [stream-controller]: Media seeked to 0.130
/favicon.ico:1 Failed to load resource: the server responded with a status of 404 ()
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 1 of level 0
transmuxer-interface.ts:180 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 3 id: 1
discontinuity: false
trackSwitch: true
contiguous: false
accurateTimeOffset: true
timeOffset: 2.4
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 1 of level 3
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:829 [log] > [audio-stream-controller]: Switching audio track : flushing all audio
buffer-controller.ts:810 [log] > [buffer-controller]: Removing [0,26.839999999999996] from the audio SourceBuffer
​ [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1218 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.641028/avc1.641028]
​ [log] > [transmuxer.ts]: Flushed fragment 1 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 1 of track 0 [2.020,4.017]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 0.2
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:180 [log] > [transmuxer-interface, audio]: Starting new transmux session for sn: 0 p: -1 level: 0 id: 1
discontinuity: false
trackSwitch: false
contiguous: false
accurateTimeOffset: false
timeOffset: 5.4421768869161724e-8
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 1 of level 3 [0.080,4.880]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:250 [log] > [level-controller]: switching to level 2 from 3
audio-track-controller.ts:132 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "l2" group-id
audio-track-controller.ts:188 [log] > [audio-track-controller]: Now switching to audio-track index 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->IDLE
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->WAITING_TRACK
audio-track-controller.ts:248 [log] > [audio-track-controller]: loading audio-track playlist for id: 0
level-controller.ts:523 [log] > [level-controller]: Attempt loading level index 2 with URL-id 0 https://os2man2.github.io/sample_hls_fmp4_2/4/output.m3u8
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->WAITING_LEVEL
audio-stream-controller.ts:685 [warn] > [audio-stream-controller]: The loading context changed while buffering fragment 0 of level 0. This chunk will not be buffered.
_handleTransmuxComplete @ audio-stream-controller.ts:685
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->WAITING_TRACK
audio-track-controller.ts:85 [log] > [audio-track-controller]: audioTrack 0 loaded [0-12]
audio-stream-controller.ts:440 [log] > [audio-stream-controller]: Track 0 loaded [0,12],duration:24.938229999999997
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment initSegment cc: 0 track: 0, target: 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
stream-controller.ts:604 [log] > [stream-controller]: Level 2 loaded [0,13], cc [0, 0] duration:26.839999999999996
base-stream-controller.ts:1265 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment initSegment cc: 0 level: 2, target: 0
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: initSegment of track 0 [0.000,4.017]
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 0.523
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: initSegment of level 2 [0.080,4.880]
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-13] level: 2, target: 4.88
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:829 [log] > [audio-stream-controller]: Switching audio track : flushing all audio
buffer-controller.ts:810 [log] > [buffer-controller]: Removing [0,26.839999999999996] from the audio SourceBuffer
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
transmuxer-interface.ts:180 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 2 p: -1 level: 2 id: 1
discontinuity: false
trackSwitch: true
contiguous: false
accurateTimeOffset: true
timeOffset: 4.8
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 2 of level 2
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1218 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.641028/avc1.641028]
​ [log] > [transmuxer.ts]: Flushed fragment 2 of level 2
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 0 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 2 of level 2 [0.080,6.080]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:250 [log] > [level-controller]: switching to level 3 from 2
audio-track-controller.ts:132 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in "l3" group-id
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-13] level: 3, target: 6.08
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 0 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 0 of track 0 [0.000,2.020]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 1 cc: 0 of [0-12] track: 0, target: 2.02
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:180 [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: 6
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 3 of level 3
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 1 of level 0
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1218 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.641028/avc1.641028]
​ [log] > [transmuxer.ts]: Flushed fragment 3 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 1 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 1 of track 0 [0.000,4.017]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [audio-stream-controller]: Loading fragment 2 cc: 0 of [0-12] track: 0, target: 4.017
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 3 of level 3 [0.080,8.480]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-13] level: 3, target: 8.48
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 4 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 4 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 4 of level 3 [0.080,10.880]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 5 cc: 0 of [0-13] level: 3, target: 10.88
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 5 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 5 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 5 of level 3 [0.080,12.080]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 6 cc: 0 of [0-13] level: 3, target: 12.08
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 6 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 6 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 6 of level 3 [0.080,14.480]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 7 cc: 0 of [0-13] level: 3, target: 14.48
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 7 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 7 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 7 of level 3 [0.080,16.880]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 8 cc: 0 of [0-13] level: 3, target: 16.88
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 8 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 8 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 8 of level 3 [0.080,18.080]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 9 cc: 0 of [0-13] level: 3, target: 18.08
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 9 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 9 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 9 of level 3 [0.080,20.480]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 10 cc: 0 of [0-13] level: 3, target: 20.48
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 10 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 10 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 10 of level 3 [0.080,22.880]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 11 cc: 0 of [0-13] level: 3, target: 22.88
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 11 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 11 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 11 of level 3 [0.080,24.080]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 12 cc: 0 of [0-13] level: 3, target: 24.08
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 12 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 12 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 12 of level 3 [0.080,26.480]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:555 [log] > [stream-controller]: Loading fragment 13 cc: 0 of [0-13] level: 3, target: 26.48
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:329 [log] > [stream-controller]: Loaded fragment 13 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 13 of level 3
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [stream-controller]: Buffered main sn: 13 of level 3 [0.080,26.920]
base-stream-controller.ts:1265 [log] > [stream-controller]: PARSED->IDLE
buffer-controller.ts:501 [log] > [buffer-controller]: video sourceBuffer now EOS
base-stream-controller.ts:1265 [log] > [stream-controller]: IDLE->ENDED
base-stream-controller.ts:329 [log] > [audio-stream-controller]: Loaded fragment 2 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
​ [log] > [transmuxer.ts]: Flushed fragment 2 of level 0
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:466 [log] > [audio-stream-controller]: Buffered audio sn: 2 of track 0 [0.000,6.014]
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: PARSED->IDLE
gap-controller.ts:208 [warn] > Playback stalling at @5.958591 due to low buffer (buffer=0.05537599999999987)
_reportStall @ gap-controller.ts:208
latency-controller.ts:188 [warn] > [playback-rate-controller]: Stall detected, adjusting target latency
onError @ latency-controller.ts:188
main.js:721 Error event: Object
(anonymous) @ main.js:721
hls.ts:354 [log] > stopLoad
base-stream-controller.ts:1265 [log] > [stream-controller]: ENDED->STOPPED
base-stream-controller.ts:1265 [log] > [audio-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:1265 [log] > [subtitle-stream-controller]: IDLE->STOPPED

@robwalch robwalch linked a pull request Apr 14, 2021 that will close this issue
2 tasks
@infocity-tanemura
Copy link
Author

infocity-tanemura commented Apr 15, 2021

@robwalch
HI Rob
Thank you for checking my reported bug.
Great work ! I confirmed this problem was fixed on 1.0.2 with Windows (Chrome and Edge), Mac Safari and Chrome.
But Firefox still has problem on 1.0.2. I attached OS version, Firefox version and 1.0.2 screen shot.
If you want to see this case soon please configure options below for more frequently happen to stopped movie.
{
"debug": true,
"enableWorker": true,
"lowLatencyMode": true,
"backBufferLength": 90,
"startLevel": 3
}

https://hls-js-dev.netlify.app/demo/?src=https%3A%2F%2Fos2man2.github.io%2Fsample_hls_fmp4_bugs%2F3700_2%2Fmaster.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjp0cnVlLCJkdW1wZk1QNCI6dHJ1ZSwibGV2ZWxDYXBwaW5nIjotMSwibGltaXRNZXRyaWNzIjotMX0=

Firefox version is 86.0.1 (64 bit)
Windows 10 is latest version.

Thank you

4839503-d1b69000-9e10-11eb-9933-efcf03db49ff.png">
2021-04-15 17 24 24
2021-04-15 17 27 49
2021-04-15 17 54 00

@robwalch robwalch added the Bug label Apr 15, 2021
@robwalch robwalch added this to the 1.0.2 milestone Apr 15, 2021
@robwalch
Copy link
Collaborator

Hi @atanemura,

Today, 1.0.2 canary is still the same as 1.0.1 which was just released yesterday.

On Firefox 87, I can see the issue intermittently when including "startLevel": 3. This might still be an issue in Chrome as well, it just doesn't happen every time.

@robwalch robwalch added this to Top priorities in Release Planning and Backlog via automation Apr 15, 2021
@robwalch
Copy link
Collaborator

#3748 was supposed to fix playback of similar streams (stalling or over buffering of audio after fmp4 audio group switch), but the intermittent behavior of stalling remains. I tried avoiding adding audio group specifics to the transmuxer state, but that might be necessary to handle incoming segments correctly in the event a segment from the previous group is appended after reset.

robwalch pushed a commit that referenced this issue Apr 19, 2021
robwalch pushed a commit that referenced this issue Apr 19, 2021
amiznikov added a commit to amiznikov/hls.js that referenced this issue Apr 24, 2021
* 'master' of https://github.com/video-dev/hls.js: (327 commits)
  [skip netlify] Update dependency netlify-cli to v3.21.9
  [skip netlify] Update dependency netlify-cli to v3.21.8
  [skip netlify] Update dependency eslint to v7.25.0
  [skip netlify] Update dependency netlify-cli to v3.21.7
  [skip netlify] Update dependency netlify-cli to v3.21.5
  [skip netlify] Update dependency netlify-cli to v3.21.3
  [skip netlify] Update dependency netlify-cli to v3.21.2
  [skip netlify] Update actions/github-script action to v4 (video-dev#3809)
  [skip netlify] Update dependency netlify-cli to v3.21.1
  [skip netlify] Update dependency netlify-cli to v3.21.0
  [skip netlify] Update babel monorepo to v7.13.16
  [skip netlify] Update dependency netlify-cli to v3.20.1
  [skip netlify] Update dependency netlify-cli to v3.19.1
  [skip netlify] Update dependency @microsoft/api-extractor to v7.14.0
  Fix fetch loader stats marked as aborted after loaded Fixes video-dev#3789
  Evict unbuffered audio and main fragments from the tracker on BUFFER_FLUSHED Resolves video-dev#3770
  Fix setInterval/Timer regression in fps-controller Fixes video-dev#3790
  [skip netlify] Update dependency netlify-cli to v3.19.0
  [skip netlify] Lock file maintenance
  [skip netlify] Lock file maintenance
  ...

# Conflicts:
#	.gitignore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Release Planning and Backlog
  
Top priorities
2 participants