-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
maxMaxBufferLength is getting lower than the fragment duration #6428
Comments
It looks like you have segments that are not independent:
Or ones which are but result in most of the fragment being dropped when seeked to:
We expect these to be handled with "backtracking" (finding the first fragment with a keyframe at or before the target buffer time to satisfy the playback). Backtracking is happening, but after appending the video segments with only some usable samples, the video SourceBuffer still shows no buffered media. This leaves the fragment tracker state of the fragment in "APPENDING" and since it was not buffered when it attempts to load it again, hls.js/src/controller/base-stream-controller.ts Lines 456 to 461 in 238f217
|
As a workaround, you could set |
What version of Hls.js are you using?
v1.5.8
What browser (including version) are you using?
Chrome 124.0.6367.209
What OS (including version) are you using?
macOS Sonoma 14.4.1
Test stream
https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcfvod.kaltura.com%2Ffhls%2Fp%2F5768482%2Fsp%2F576848200%2FserveFlavor%2FentryId%2F1_te7qb2q9%2Fv%2F11%2Fev%2F1%2FflavorId%2F1_mpdvaiwo%2Fname%2Fa.mp4%2Findex.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
Configuration
Additional player setup steps
No response
Checklist
Steps to reproduce
"enableWorker": false
and"maxMaxBufferLength": 60
(this one is not mandatory, though it will reproduce the issue faster)Expected behaviour
maxMaxBufferLength
shouldn't get smaller than the fragment durationWhat actually happened?
The playback gets stuck because the
maxMaxBufferLength
is becoming smaller than the fragment duration.Following a short investigation, it seems that there is a path where the
maxMaxBufferLength
can go lower than the duration of the fragment (or forward buffer whichever is bigger), whereclearTrackerIfNeeded
andreduceMaxBufferLength
are called.At this point of code - the code is checking
maxMaxBufferLength
against thethreshold
, where in my case the threshold is the fragment duration, and then cutmaxMaxBufferLength
by half; So, this is causing the value ofmaxMaxBufferLength
to be smaller than the fragment duration.My suggestion is to check for
maxMaxBufferLength / 2 >= threshold
before assigning it tomaxMaxBufferLength
.NOTE- this is not reproducible when
enableWorker
configuration is set totrue
.Console output
Chrome media internals output
No response
The text was updated successfully, but these errors were encountered: