-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Closed
Labels
Milestone
Description
What version of Hls.js are you using?
1.6.2
What browser (including version) are you using?
Chrome 136.0.7103.114
What OS (including version) are you using?
MacOS and Windows
Test stream
Configuration
{
"debug": true,
"enableWorker": true,
"lowLatencyMode": true,
"backBufferLength": 90
}Additional player setup steps
No response
Checklist
- The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues
- The issue occurs in the stable client (latest release) on https://hlsjs.video-dev.org/demo and not just on my page
- The issue occurs in the latest client (main branch) on https://hlsjs-dev.video-dev.org/demo and not just on my page
- 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
- Play the stream
- Seek to 360:
video.currentTime = 360
Expected behaviour
The player should seek to your target position and continue playback
What actually happened?
[log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
The player goes into a deadlock because it selects the video and audio from different continuities, and is unable to locate the initPTS of the audio.
This is consistently reproducible on streams where the audio and video manifests are slightly offset, and the seek happens across continuities that the player hasn't buffered, hence it isn't yet aware of the initPTS of the audio segment.
Playing the stream without seeking doesn't cause the issue.
Console output
video.currentTime = 360; // perform seek
[log] > [stream-controller]: media seeking to 360.000, state: IDLE
[log] > [audio-stream-controller]: media seeking to 360.000, state: IDLE
[log] > [subtitle-stream-controller]: media seeking to 360.000, state: IDLE
[info] > [abr] buffer is empty, optimal quality level 0
[log] > [stream-controller]: Loading fragment 61 cc: 2 of [1-100] level: 0, target: 360
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [audio-stream-controller]: Loading fragment 60 cc: 1 of [1-100] track: 0, target: 360
[log] > [audio-stream-controller]: IDLE->FRAG_LOADING
[log] > [audio-stream-controller]: Unknown video PTS for cc 1, waiting for video PTS before demuxing audio frag 60 of [1 ,100],track 0
[log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
[log] > [audio-stream-controller]: Loaded fragment 60 of level 0
[log] > [transmuxer-interface, main]: Starting new transmux session for sn: 61 p: -1 level: 0 id: 1
discontinuity: true
trackSwitch: false
contiguous: false
accurateTimeOffset: true
timeOffset: 360
initSegmentChange: false
[log] > [mp4-remuxer]: ISGenerated flag reset
[log] > [mp4-remuxer]: initPTS & initDTS reset
[log] > [mp4-remuxer]: reset next timestamp
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640029/avc1.640029]
[log] > [audio-stream-controller]: InitPTS for cc: 2 found from main: 9000
[log] > [audio-stream-controller]: Waiting fragment cc (1) cancelled because video is at cc 2
[log] > [audio-stream-controller]: WAITING_INIT_PTS->IDLE
[log] > [stream-controller]: Loaded fragment 61 of level 0
[log] > [transmuxer.ts]: Flushed fragment 61 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [audio-stream-controller]: Loading fragment 60 cc: 1 of [1-100] track: 0, target: 360
[log] > [audio-stream-controller]: IDLE->FRAG_LOADING
[log] > [audio-stream-controller]: Unknown video PTS for cc 1, waiting for video PTS before demuxing audio frag 60 of [1 ,100],track 0
[log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
[log] > [audio-stream-controller]: Loaded fragment 60 of level 0
[log] > [stream-controller]: Buffered main sn: 61 of level 0 (frag:[360.000-366.000] > buffer:[0.000-120.000][360.000-366.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 62 cc: 2 of [1-100] level: 0, target: 366
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 62 of level 0
[log] > [transmuxer.ts]: Flushed fragment 62 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 62 of level 0 (frag:[366.000-372.000] > buffer:[0.000-120.000][360.000-372.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 63 cc: 2 of [1-100] level: 0, target: 372
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 63 of level 0
[log] > [transmuxer.ts]: Flushed fragment 63 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 63 of level 0 (frag:[372.000-378.000] > buffer:[0.000-120.000][360.000-378.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 64 cc: 2 of [1-100] level: 0, target: 378
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 64 of level 0
[log] > [transmuxer.ts]: Flushed fragment 64 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 64 of level 0 (frag:[378.000-384.000] > buffer:[0.000-120.000][360.000-384.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 65 cc: 2 of [1-100] level: 0, target: 384
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 65 of level 0
[log] > [transmuxer.ts]: Flushed fragment 65 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 65 of level 0 (frag:[384.000-390.000] > buffer:[0.000-120.000][360.000-390.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 66 cc: 2 of [1-100] level: 0, target: 390
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 66 of level 0
[log] > [transmuxer.ts]: Flushed fragment 66 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 66 of level 0 (frag:[390.000-396.000] > buffer:[0.000-120.000][360.000-396.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 67 cc: 2 of [1-100] level: 0, target: 396
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 67 of level 0
[log] > [transmuxer.ts]: Flushed fragment 67 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 67 of level 0 (frag:[396.000-402.000] > buffer:[0.000-120.000][360.000-402.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 68 cc: 2 of [1-100] level: 0, target: 402
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 68 of level 0
[log] > [transmuxer.ts]: Flushed fragment 68 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 68 of level 0 (frag:[402.000-408.000] > buffer:[0.000-120.000][360.000-408.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 69 cc: 2 of [1-100] level: 0, target: 408
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 69 of level 0
[log] > [transmuxer.ts]: Flushed fragment 69 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 69 of level 0 (frag:[408.000-414.000] > buffer:[0.000-120.000][360.000-414.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 70 cc: 2 of [1-100] level: 0, target: 414
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 70 of level 0
[log] > [transmuxer.ts]: Flushed fragment 70 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 70 of level 0 (frag:[414.000-420.000] > buffer:[0.000-120.000][360.000-420.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 71 cc: 2 of [1-100] level: 0, target: 420
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 71 of level 0
[log] > [transmuxer.ts]: Flushed fragment 71 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 71 of level 0 (frag:[420.000-426.000] > buffer:[0.000-120.000][360.000-426.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 72 cc: 2 of [1-100] level: 0, target: 426
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 72 of level 0
[log] > [transmuxer.ts]: Flushed fragment 72 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 72 of level 0 (frag:[426.000-432.000] > buffer:[0.000-120.000][360.000-432.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 73 cc: 2 of [1-100] level: 0, target: 432
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 73 of level 0
[log] > [transmuxer.ts]: Flushed fragment 73 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 73 of level 0 (frag:[432.000-438.000] > buffer:[0.000-120.000][360.000-438.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 74 cc: 2 of [1-100] level: 0, target: 438
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSING
[log] > [stream-controller]: Loaded fragment 74 of level 0
[log] > [transmuxer.ts]: Flushed fragment 74 of level 0
[log] > [stream-controller]: PARSING->PARSED
[log] > [stream-controller]: Buffered main sn: 74 of level 0 (frag:[438.000-444.000] > buffer:[0.000-120.000][360.000-444.000])
[log] > [stream-controller]: PARSED->IDLE
[log] > [stream-controller]: Loading fragment 75 cc: 2 of [1-100] level: 0, target: 444
[log] > [stream-controller]: IDLE->FRAG_LOADING
[log] > [stream-controller]: FRAG_LOADING->PARSINGChrome media internals output
N/AMetadata
Metadata
Assignees
Labels
Type
Projects
Status
Done