-
Notifications
You must be signed in to change notification settings - Fork 424
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
Player stucks with buffer empty #1000
Comments
Maybe related to my own issue? #999 Using an old version of video.js (7.2.3) "resolved" this issue in my case. |
This issue (and @Gregory-Gerard's) potentially goes away with our new experimental ABR. You can try setting the |
FWIW, this was occurring for me on 7.10.2, but downgrading to 7.8.4 did resolve the issue. |
@gkatsev I believe I partially understand this issue -- and afaict the ABR option won't actually fix the cause though it may change the behaviour / reproduction. BackgroundUsers of @clowdr_app have been plagued by HLS streaming problems for a while now, complaining about the player hitting a loading spinner, heating up their laptops and never recovering. Only a page refresh could save them (and sometimes their entire browser crashed - seemed like network overload or OoM). I finally managed to trigger the bug for myself yesterday. Reproduction(It's a flaky issue - the reproduction just as much so!) Using either the latest VideoJS package version or the sample app version (linked by the OP), without the experimental option you mentioned, I can generally trigger the infinite loading spinner by following these steps:
(Inept) Diagnosis...after poking around in a debugger for 5 hours. As far as I can make out, here's what's happening:
A fix?...probably not but it's worth a shot. Maybe it'll lend some insight or give you a starting point for debugging further :) Ooof, that was long! Properly confusing and I'm still not sure I really understand what starts this madness in the first place - it's definitely a timing/race condition (and possibly introduced by some subtle change of browser behaviour in 2020? Who knows!) Anyway, a fix (though I doubt it's a correct/good fix) is to modify Original: if (this.beforeSeekableWindow_(seekable, currentTime)) { Modified: if (seekable.length && seekable.length > 1 && this.beforeSeekableWindow_(seekable, currentTime)) { This effectively says "if we're trying to buffer a single segment, never try to re-seek to its start. Only seek to its end (i.e. the live point) if needed" (i.e. only the I guess maybe there is an alternative fix for Testing "a fix"I have tested this change and found that the infinite buffering does not recur and the player functions as expected. My diagnosis/analysis above is probably deeply flawed in some way (after all, it's just based on poking around with a debugger in FireFox for 5 hours - I don't pretend to understand the Video JS code!) but the fix proposed at least seems to do the trick. Closing remarksAnyway, I hope this helps gain some insight into (some variant of) this problem and a possible solution! We would really appreciate a fix soon - @clowdr_app's users are not entirely happy about having to refresh the page every 25s just to get the stream to recover (and the 20s of lost viewing every time). It hits some users consistently and others not at all; and it's nothing to do with bandwidth (even streaming at 360p on a 100Mbps connection with a powerful computer some of our users and I have run into the problem!) |
Hey! We've detected some video files in a comment on this issue. If you'd like to permanently archive these videos and tie them to this project, a maintainer of the project can reply to this issue with the following commands:
|
@EdNutting Thanks for the super detailed comment. We'll definitely take a look! |
I have also run into this problem, verified by using the method @EdNutting described and reproduced issue both with and without the |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Anti-bot post to stop this being prematurely closed. Just because it hasn't been fixed after so long and users are still suffering doesn't mean it's not an issue. We resorted to significantly increasing the segment duration - sacrificing latency - in order to work around this issue (as per the referenced PR from Aug 2021 above). |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Anti-bot post to stop this being prematurely closed. |
Can anyone confirm if this was fixed with #1433? |
Description
I have a live streaming with several renditions in 60fps. This is a simple description of these (id - resolution - segment size aprox)
When I tried to use the manifest I observed that player stucks observing the next situations:
(buffer always is empty)
Some observations:
Sources
This is a sample of the live streaming I'm using:
https://hs-video-testing.s3.amazonaws.com/master_abc_60.m3u8
Steps to reproduce
Results
Expected
Player could to stuck a couple of seconds for buffering but should to recover even if the major rendition is forced to use.
Error output
No errors/warnings reported in the console
Additional Information
videojs-http-streaming version
what version of videojs-http-streaming does this occur with?
videojs version
what version of videojs does this occur with?
videojs 7.8.2, 7.8.4, 7.10.2
Browsers
what browsers are affected? please include browser and version for each
Platforms
what platforms are affected? please include operating system and version or device and version for each
Other Plugins
are any other videojs plugins being used on the page? If so, please list them with version below.
*
Other JavaScript
are you using any other javascript libraries or frameworks on the page? if so please list them below.
*
The text was updated successfully, but these errors were encountered: