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

HLS Audio pauses other media after a short delay #6271

Open
5 tasks done
br0p0p opened this issue Mar 7, 2024 · 3 comments
Open
5 tasks done

HLS Audio pauses other media after a short delay #6271

br0p0p opened this issue Mar 7, 2024 · 3 comments
Labels
Browser issue If there is an underlying issue with the browser that hls.js is running on, this tag should be used. platform: android

Comments

@br0p0p
Copy link

br0p0p commented Mar 7, 2024

What version of Hls.js are you using?

v1.5.7

What browser (including version) are you using?

Chrome 122.0.6261.91

What OS (including version) are you using?

Android 14.0

Test stream

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fstream.revma.ihrhls.com%2Fzc1469%2Fhls.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

Configuration

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

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. Open the provided link in Chrome on an Android device
  2. Play the stream
  3. Switch to another media app (e.g. YouTube)
  4. Play something
  5. The YouTube video automatically pauses after a short delay without any interaction

Expected behaviour

The YouTube video should continue playing

What actually happened?

The YouTube video is paused for no apparent reason after a few seconds.

It seems like the player in the backgrounded Chrome is still trying to load stream fragments or something after switching from Chrome to YouTube.

Console output

-playlist-controller.ts:150 [log] > [level-controller]: live playlist 0 REFRESHED 171258235--1
level-helper.ts:236 [warn] > discontinuity sliding from playlist, take drift into account
mergeDetails @ level-helper.ts:236
playlistLoaded @ base-playlist-controller.ts:162
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
set @ level-controller.ts:477
set @ level-controller.ts:629
set @ hls.ts:574
startLoad @ stream-controller.ts:143
(anonymous) @ hls.ts:434
startLoad @ hls.ts:433
filterAndSortMediaOptions @ level-controller.ts:376
onManifestLoaded @ level-controller.ts:200
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handleMasterPlaylist @ playlist-loader.ts:429
onSuccess @ playlist-loader.ts:327
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadSource @ hls.ts:420
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 8 more frames
Show less
base-playlist-controller.ts:265 [log] > [level-controller]: reload live playlist 0 in 7101 ms
stream-controller.ts:639 [log] > [stream-controller]: Level 0 loaded [171258233,171258235][part-171258235--1], cc [0, 0] duration:29.968
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258235 cc: 1 of [171258233-171258235] level: 0, target: 39.936
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
buffer-controller.ts:858 [log] > [buffer-controller] Updating Media Source duration to 49.936
demo/:674 
        
        
       GET https://static.cloudflareinsights.com/beacon.min.js net::ERR_CONNECTION_REFUSED
main.js:339 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
logger.ts:74 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.5.7
hls.ts:442 [log] > stopLoad
hls.ts:410 [log] > loadSource:https://stream.revma.ihrhls.com/zc1469/hls.m3u8
stream-controller.ts:576 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:380 [log] > attachMedia
buffer-controller.ts:195 [log] > [buffer-controller] created media source: MediaSource
buffer-controller.ts:988 [log] > [buffer-controller] Media source opened
level-controller.ts:337 [log] > [level-controller]: manifest loaded, 1 level(s) found, first bitrate: 24000
buffer-controller.ts:184 [log] > [buffer-controller] 1 bufferCodec event(s) expected
hls.ts:431 [log] > startLoad(-1)
level-controller.ts:432 [log] > [level-controller]: Switching to level 0 (SDR mp4a @24000) from level -1
level-controller.ts:596 [log] > [level-controller]: Loading level index 0 with https://ample.revma.ihrhls.com/zc1469/38_wb1m9supmy8j02/playlist.m3u8
base-stream-controller.ts:1781 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:1781 [log] > [subtitle-stream-controller]: STOPPED->IDLE
base-playlist-controller.ts:265 [log] > [level-controller]: reload live playlist 0 in 9529 ms
stream-controller.ts:639 [log] > [stream-controller]: Level 0 loaded [171258233,171258235][part-171258235--1], cc [1, 1] duration:30
base-stream-controller.ts:1399 [log] > [stream-controller]: Live playlist sliding: 0.00 start-sn: na->171258233 prev-sn: na fragments: 3
buffer-controller.ts:858 [log] > [buffer-controller] Updating Media Source duration to 30.000
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258233 cc: 1 of [171258233-171258235] level: 0, target: 0.044
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:89 [log] > injecting Web Worker for "main"
transmuxer-interface.ts:231 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 171258233 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 0
        initSegmentChange: true
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 171258233 of level 0
7162c8d9-f2fd-4a57-858c-71cf2b3362ed:555 [log] > Debug logs enabled for "main" in hls.js version 1.5.7
transmuxer-interface.ts:383 [log] > ADTS sync word found !
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:383 [log] > [mp4-remuxer]: reset next timestamp
transmuxer-interface.ts:383 [log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:6
transmuxer-interface.ts:383 [log] > parsed codec:mp4a.40.2, rate:24000, channels:1
base-stream-controller.ts:1781 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1297 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.2]
buffer-controller.ts:390 [log] > [buffer-controller] 0 bufferCodec event(s) expected audio
buffer-controller.ts:937 [log] > [buffer-controller] creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
audio-stream-controller.ts:134 [log] > [audio-stream-controller]: InitPTS for cc: 1 found from main: 5707766250
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 171258233 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:560 [log] > [stream-controller]: Buffered main sn: 171258233 of level 0 (frag:[0.000-9.984] > buffer:[0.000-9.984])
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSED->IDLE
stream-controller.ts:1025 [log] > [stream-controller]: seek to target start position 0.047999999999998266 from current time 0
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258234 cc: 1 of [171258233-171258235] level: 0, target: 9.984
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:241 [log] > [stream-controller]: media seeking to 0.048, state: FRAG_LOADING
base-stream-controller.ts:241 [log] > [audio-stream-controller]: media seeking to 0.048, state: STOPPED
base-stream-controller.ts:241 [log] > [subtitle-stream-controller]: media seeking to 0.048, state: IDLE
stream-controller.ts:556 [log] > [stream-controller]: Media seeked to 0.048
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 171258234 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 171258234 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:560 [log] > [stream-controller]: Buffered main sn: 171258234 of level 0 (frag:[9.984-19.968] > buffer:[0.000-19.968])
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258235 cc: 1 of [171258233-171258235] level: 0, target: 19.968
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 171258235 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 171258235 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:560 [log] > [stream-controller]: Buffered main sn: 171258235 of level 0 (frag:[19.968-29.952] > buffer:[0.000-29.952])
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:596 [log] > [level-controller]: Loading level index 0 with https://ample.revma.ihrhls.com/zc1469/38_wb1m9supmy8j02/playlist.m3u8
base-playlist-controller.ts:150 [log] > [level-controller]: live playlist 0 REFRESHED 171258236--1
level-helper.ts:236 [warn] > discontinuity sliding from playlist, take drift into account
mergeDetails @ level-helper.ts:236
playlistLoaded @ base-playlist-controller.ts:162
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
set @ level-controller.ts:477
set @ level-controller.ts:629
set @ hls.ts:574
startLoad @ stream-controller.ts:143
(anonymous) @ hls.ts:434
startLoad @ hls.ts:433
filterAndSortMediaOptions @ level-controller.ts:376
onManifestLoaded @ level-controller.ts:200
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handleMasterPlaylist @ playlist-loader.ts:429
onSuccess @ playlist-loader.ts:327
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadSource @ hls.ts:420
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 6 more frames
Show less
base-playlist-controller.ts:265 [log] > [level-controller]: reload live playlist 0 in 9709 ms
stream-controller.ts:639 [log] > [stream-controller]: Level 0 loaded [171258234,171258236][part-171258236--1], cc [0, 0] duration:29.967999999999996
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258236 cc: 1 of [171258234-171258236] level: 0, target: 29.952
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
buffer-controller.ts:858 [log] > [buffer-controller] Updating Media Source duration to 39.952
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 171258236 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 171258236 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:560 [log] > [stream-controller]: Buffered main sn: 171258236 of level 0 (frag:[29.952-39.936] > buffer:[0.000-39.936])
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:596 [log] > [level-controller]: Loading level index 0 with https://ample.revma.ihrhls.com/zc1469/38_wb1m9supmy8j02/playlist.m3u8
base-playlist-controller.ts:150 [log] > [level-controller]: live playlist 0 REFRESHED 171258237--1
level-helper.ts:236 [warn] > discontinuity sliding from playlist, take drift into account
mergeDetails @ level-helper.ts:236
playlistLoaded @ base-playlist-controller.ts:162
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
set @ level-controller.ts:477
set @ level-controller.ts:629
set @ hls.ts:574
startLoad @ stream-controller.ts:143
(anonymous) @ hls.ts:434
startLoad @ hls.ts:433
filterAndSortMediaOptions @ level-controller.ts:376
onManifestLoaded @ level-controller.ts:200
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handleMasterPlaylist @ playlist-loader.ts:429
onSuccess @ playlist-loader.ts:327
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadSource @ hls.ts:420
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 8 more frames
Show less
base-playlist-controller.ts:265 [log] > [level-controller]: reload live playlist 0 in 9190 ms
stream-controller.ts:639 [log] > [stream-controller]: Level 0 loaded [171258235,171258237][part-171258237--1], cc [0, 0] duration:29.968
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258237 cc: 1 of [171258235-171258237] level: 0, target: 39.936
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
buffer-controller.ts:858 [log] > [buffer-controller] Updating Media Source duration to 49.936
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 171258237 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 171258237 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:560 [log] > [stream-controller]: Buffered main sn: 171258237 of level 0 (frag:[39.936-49.920] > buffer:[0.000-49.920])
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSED->IDLE
level-controller.ts:596 [log] > [level-controller]: Loading level index 0 with https://ample.revma.ihrhls.com/zc1469/38_wb1m9supmy8j02/playlist.m3u8
base-playlist-controller.ts:150 [log] > [level-controller]: live playlist 0 REFRESHED 171258238--1
level-helper.ts:236 [warn] > discontinuity sliding from playlist, take drift into account
mergeDetails @ level-helper.ts:236
playlistLoaded @ base-playlist-controller.ts:162
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
(anonymous) @ base-playlist-controller.ts:287
setTimeout (async)
playlistLoaded @ base-playlist-controller.ts:286
onLevelLoaded @ level-controller.ts:571
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handlePlaylistLoaded @ playlist-loader.ts:683
handleTrackOrLevelPlaylist @ playlist-loader.ts:505
onSuccess @ playlist-loader.ts:319
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onLevelLoading @ playlist-loader.ts:166
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadPlaylist @ level-controller.ts:610
set @ level-controller.ts:477
set @ level-controller.ts:629
set @ hls.ts:574
startLoad @ stream-controller.ts:143
(anonymous) @ hls.ts:434
startLoad @ hls.ts:433
filterAndSortMediaOptions @ level-controller.ts:376
onManifestLoaded @ level-controller.ts:200
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
handleMasterPlaylist @ playlist-loader.ts:429
onSuccess @ playlist-loader.ts:327
readystatechange @ xhr-loader.ts:239
XMLHttpRequest.send (async)
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:84
load @ playlist-loader.ts:352
onManifestLoading @ playlist-loader.ts:154
emit @ index.js:203
emit @ hls.ts:310
trigger @ hls.ts:318
loadSource @ hls.ts:420
loadSelectedStream @ main.js:372
(anonymous) @ main.js:225
j @ jquery.min.js:2
fireWith @ jquery.min.js:2
ready @ jquery.min.js:2
I @ jquery.min.js:2
Show 10 more frames
Show less
base-playlist-controller.ts:265 [log] > [level-controller]: reload live playlist 0 in 9269 ms
stream-controller.ts:639 [log] > [stream-controller]: Level 0 loaded [171258236,171258238][part-171258238--1], cc [0, 0] duration:29.968
base-stream-controller.ts:748 [log] > [stream-controller]: Loading fragment 171258238 cc: 1 of [171258236-171258238] level: 0, target: 49.92
base-stream-controller.ts:1781 [log] > [stream-controller]: IDLE->FRAG_LOADING
buffer-controller.ts:858 [log] > [buffer-controller] Updating Media Source duration to 59.920
base-stream-controller.ts:389 [log] > [stream-controller]: Loaded fragment 171258238 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:383 [log] > [transmuxer.ts]: Flushed fragment 171258238 of level 0
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:560 [log] > [stream-controller]: Buffered main sn: 171258238 of level 0 (frag:[49.920-59.904] > buffer:[0.000-59.904])
base-stream-controller.ts:1781 [log] > [stream-controller]: PARSED->IDLE

Chrome media internals output

Player Properties


render_id: 13
player_id: 6
created: 2024-03-07 20:10:00.170516 UTC
origin_url: https://hlsjs.video-dev.org/
kFrameUrl: https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fstream.revma.ihrhls.com%2Fzc1469%2Fhls.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
kFrameTitle: hls.js demo
url: blob:https://hlsjs.video-dev.org/737ea8f6-fa3e-4a0b-88d2-a9dbe93b535b
info: Effective playback rate changed from 0 to 1
kRendererName: RendererImpl
pipeline_state: kSuspended
duration: 109.84
kAudioTracks: [object Object]
kIsAudioDecryptingDemuxerStream: false
kAudioDecoderName: FFmpegAudioDecoder
kIsPlatformAudioDecoder: false
debug:  Detected midstream configuration change PTS:0 Sample Rate: 48000 vs 24000, ChannelLayout: 3 vs 2, Channels: 2 vs 1
seek_target: 0.047999
pipeline_buffering_state: [object Object]
event: kSuspended

Log

{
  "properties": {
    "render_id": 13,
    "player_id": 6,
    "created": "2024-03-07 20:10:00.170516 UTC",
    "origin_url": "https://hlsjs.video-dev.org/",
    "kFrameUrl": "https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fstream.revma.ihrhls.com%2Fzc1469%2Fhls.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==",
    "kFrameTitle": "hls.js demo",
    "url": "blob:https://hlsjs.video-dev.org/737ea8f6-fa3e-4a0b-88d2-a9dbe93b535b",
    "info": "Effective playback rate changed from 0 to 1",
    "kRendererName": "RendererImpl",
    "pipeline_state": "kSuspended",
    "duration": 109.84,
    "kAudioTracks": [
      {
        "bytes per channel": 2,
        "bytes per frame": 2,
        "channel layout": "MONO",
        "channels": 1,
        "codec": "aac",
        "codec delay": 0,
        "discard decoder delay": false,
        "encryption scheme": "Unencrypted",
        "has extra data": true,
        "profile": "unknown",
        "sample format": "Signed 16-bit",
        "samples per second": 24000,
        "seek preroll": "0us"
      }
    ],
    "kIsAudioDecryptingDemuxerStream": false,
    "kAudioDecoderName": "FFmpegAudioDecoder",
    "kIsPlatformAudioDecoder": false,
    "debug": "Audio buffer splice at PTS=20000000us. Trimmed tail of overlapped buffer (PTS=19968000us) by 10666us.",
    "seek_target": 0.047999,
    "pipeline_buffering_state": {
      "for_suspended_start": false,
      "state": "BUFFERING_HAVE_ENOUGH"
    },
    "event": "kSuspended"
  },
  "events": [
    {
      "time": 0,
      "key": "created",
      "value": "2024-03-07 20:10:00.170516 UTC"
    },
    {
      "time": 1.711999997496605,
      "key": "origin_url",
      "value": "https://hlsjs.video-dev.org/"
    },
    {
      "time": 1.721000000834465,
      "key": "kFrameUrl",
      "value": "https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fstream.revma.ihrhls.com%2Fzc1469%2Fhls.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ=="
    },
    {
      "time": 1.7329999953508377,
      "key": "kFrameTitle",
      "value": "hls.js demo"
    },
    {
      "time": 4.575000002980232,
      "key": "url",
      "value": "blob:https://hlsjs.video-dev.org/737ea8f6-fa3e-4a0b-88d2-a9dbe93b535b"
    },
    {
      "time": 5.125,
      "key": "info",
      "value": "ChunkDemuxer"
    },
    {
      "time": 5.627000004053116,
      "key": "kRendererName",
      "value": "RendererImpl"
    },
    {
      "time": 5.730000004172325,
      "key": "pipeline_state",
      "value": "kStarting"
    },
    {
      "time": 1669.21099999547,
      "key": "duration",
      "value": 30
    },
    {
      "time": 2891.0750000029802,
      "key": "kAudioTracks",
      "value": [
        {
          "bytes per channel": 2,
          "bytes per frame": 2,
          "channel layout": "MONO",
          "channels": 1,
          "codec": "aac",
          "codec delay": 0,
          "discard decoder delay": false,
          "encryption scheme": "Unencrypted",
          "has extra data": true,
          "profile": "unknown",
          "sample format": "Signed 16-bit",
          "samples per second": 24000,
          "seek preroll": "0us"
        }
      ]
    },
    {
      "time": 2928.232999995351,
      "key": "kIsAudioDecryptingDemuxerStream",
      "value": false
    },
    {
      "time": 2928.2380000054836,
      "key": "kAudioDecoderName",
      "value": "FFmpegAudioDecoder"
    },
    {
      "time": 2928.2399999946356,
      "key": "kIsPlatformAudioDecoder",
      "value": false
    },
    {
      "time": 2928.302000001073,
      "key": "info",
      "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: MONO, channels: 1, samples_per_second: 24000, sample_format: Signed 16-bit, bytes_per_frame: 2, seek_preroll: 0us, codec_delay: 0, has extra data: true, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
    },
    {
      "time": 2928.3980000019073,
      "key": "pipeline_state",
      "value": "kPlaying"
    },
    {
      "time": 2972.1410000026226,
      "key": "debug",
      "value": " Detected midstream configuration change PTS:0 Sample Rate: 48000 vs 24000, ChannelLayout: 3 vs 2, Channels: 2 vs 1"
    },
    {
      "time": 3015.8139999955893,
      "key": "seek_target",
      "value": 0.047999
    },
    {
      "time": 3016.0629999935627,
      "key": "pipeline_state",
      "value": "kSeeking"
    },
    {
      "time": 3016.1410000026226,
      "key": "pipeline_state",
      "value": "kPlaying"
    },
    {
      "time": 3051.9809999912977,
      "key": "pipeline_buffering_state",
      "value": {
        "for_suspended_start": false,
        "state": "BUFFERING_HAVE_ENOUGH"
      }
    },
    {
      "time": 8527.398000001907,
      "key": "info",
      "value": "Effective playback rate changed from 0 to 1"
    },
    {
      "time": 8530.592999994755,
      "key": "event",
      "value": "kPlay"
    },
    {
      "time": 11549.185000002384,
      "key": "duration",
      "value": 39.952
    },
    {
      "time": 20337.223999992013,
      "key": "event",
      "value": "kPause"
    },
    {
      "time": 20339.069000005722,
      "key": "pipeline_state",
      "value": "kSuspending"
    },
    {
      "time": 20346.90600000322,
      "key": "pipeline_state",
      "value": "kSuspended"
    },
    {
      "time": 20370.348000004888,
      "key": "event",
      "value": "kSuspended"
    },
    {
      "time": 22101.165999993682,
      "key": "duration",
      "value": 49.936
    },
    {
      "time": 31963.275999993086,
      "key": "duration",
      "value": 59.92
    },
    {
      "time": 41639.28299999237,
      "key": "duration",
      "value": 69.904
    },
    {
      "time": 52534.46999999881,
      "key": "duration",
      "value": 79.888
    },
    {
      "time": 62287.229000002146,
      "key": "duration",
      "value": 89.872
    },
    {
      "time": 72472.36100000143,
      "key": "duration",
      "value": 99.856
    },
    {
      "time": 82277.875,
      "key": "duration",
      "value": 109.84
    },
    {
      "time": 107761.5910000056,
      "key": "debug",
      "value": "Audio buffer splice at PTS=20000000us. Trimmed tail of overlapped buffer (PTS=19968000us) by 10666us."
    }
  ]
}
@br0p0p br0p0p added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Mar 7, 2024
@robwalch robwalch added platform: android Browser issue If there is an underlying issue with the browser that hls.js is running on, this tag should be used. and removed Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Mar 8, 2024
@robwalch
Copy link
Collaborator

robwalch commented Mar 8, 2024

The behavior described is initiated by Android, not HLS.js.

If you want to pause the media element used by HLS.js when the tab is backgrounded, pause it on visibilitychange.

If you want this behavior fixed on Android, please report a bug to Google.

@br0p0p
Copy link
Author

br0p0p commented Mar 8, 2024

@robwalch this very well could be an Android/Chrome bug but the issue is slightly different than what you stated:

I play an HLS audio stream in Chrome. I then switch to YouTube (for example) – the Chrome audio is still playing which is what I would expect.

I play a video in YouTube. The HLS stream from Chrome stops playing as expected and the YouTube video plays as expected. However, after a few seconds the YouTube video pauses on its own with no interaction and then nothing is playing.

@robwalch
Copy link
Collaborator

robwalch commented Mar 8, 2024

Confirming this is an issue with YouTube playback that you think is related to network activity from a live stream being refreshed in Chrome on Android from a background tab that has not been suspended?

If you want to stop network activity from HLS.js, call stopLoad(). This could be done when playback is paused and the page is not visible - the responsibility for this falls on the app using HLS.js. As for that having anything to do with YouTube playback, that is something YouTube and Android teams should look into.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Browser issue If there is an underlying issue with the browser that hls.js is running on, this tag should be used. platform: android
Projects
None yet
Development

No branches or pull requests

2 participants