http-streaming
http-streaming copied to clipboard
bufferBasedABR not scaling down and loading forever
Description
I tested the bufferBasedABR
option to see if it would fix some of my issues on a project where we struggle to get the buffer under control.
I did some tests with Chrome and the Network Tab.
My Findings
- Load page with "No Throttle" to get it setup
- Press play in the video player (video player starts at 1080p)
- Change the throttle to "Slow 3G"
- Get an automatic printout from the console whenever the video quality changes
- When
bufferBasedABR = true
- The system appears to not get the memo that the network connection deteriorated.
- It stays at 1080p and even when the buffer runs to 0 and playback is halted, it does not go to a different quality level.
- Even after loading for a while, it does not choose a lower quality level.
- When
bufferBasedABR = false
- The system gets information about the network quality change.
- It adjusts accordingly down (though in my estimation sometimes not fast enough)
This behavior was observed with useNetworkInformationApi
set to true
and false
.
I read somewhere that the ABR method uses a longer window of information about the network quality, and it gets confused by the high quality connection in the beginning. But the problem is that it appears to also ignore the warnings that usually are thrown by the package to let the player know that it is struggling to download new segments and use that as an indicator to scale down the playback quality.
I am sharing this here, because I was trying to figure out things with buffer issues and expected this setting to be helpful rather than run into a deadlock. Especially since it has been declassified from experimental
to now being a base setting.
videojs version
video.js 8.6.1
Browsers
- Arc 1.21.1
Platforms
- macOS Sanoma