http-streaming icon indicating copy to clipboard operation
http-streaming copied to clipboard

bufferBasedABR not scaling down and loading forever

Open chrisspiegl opened this issue 6 months ago • 6 comments

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

chrisspiegl avatar Dec 20 '23 09:12 chrisspiegl