-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Open
Labels
BugConfirmedBug report confirmed or reproduced.Bug report confirmed or reproduced.Low-LatencyNeed sample stream
Milestone
Description
What version of Hls.js are you using?
1.6.9
What browser (including version) are you using?
chrome 139.0.7258.66
What OS (including version) are you using?
Mac 15.3.2(24D81)
Test stream
No response
Configuration
{
"debug": true,
"enableWorker": true,
"lowLatencyMode": true,
"backBufferLength": 90
}
Additional player setup steps
- Using hls.js v1.6.9 with LL-HLS live stream (It seems doesn't matter what version. It is same in v1.5.4)
- Stream contains with interleaved VIDEO and SUBTITLE (The PDT of all streams is synchronized.)
- Player is set to live edge with low latency mode enabled
- No custom segment or playlist loaders configured
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
- Load an LL-HLS live stream with Part segments.
- Let the player buffer and start playback at live edge.
- After playing, turn on the subtitles.
Expected behaviour
- Subtitle partial loading works perfectly.
- Player downloads and renders subtitles from the same edge as the video.
What actually happened?
- The latest vtt partial is downloaded so many times(dozens of times per second), but the subtitles are not rendered.
- After a while, when the parent segment is completed, the partial segments is received bundle. In other words, all partial segments contained in the parent segment are received at once. Partial loading is not performed and and this situation repeats.
If v1.5.4 or lower, step 1 is skipped.
It seems that the subtitle track has a wrong targetBufferTime value (or wrong target fragment), so the frag variable is replaced with a preload hint by
hls.js/src/controller/base-stream-controller.ts
Lines 879 to 881 in d2c81f0
if (targetBufferTime > frag.end && details.fragmentHint) { | |
frag = details.fragmentHint; | |
} |
Console output
Console output exceeded 65536 characters, so I uploaded it to the 'console.log' file.
Chrome media internals output
Metadata
Metadata
Assignees
Labels
BugConfirmedBug report confirmed or reproduced.Bug report confirmed or reproduced.Low-LatencyNeed sample stream
Type
Projects
Status
To do
Status
Nice to have