dash.js icon indicating copy to clipboard operation
dash.js copied to clipboard

Sometimes player picks low quality and doesn't recover - average viewing time affected

Open Coralielm opened this issue 1 year ago • 2 comments

Steps to reproduce
  1. Play any content
Observed behavior

We detected a higher number of DASH sessions playing back in lower resolutions like 384x216, 640x360 or 768x432. We can reproduce this effect on multiple devices (and even on Chrome/Win) - however this just seems to happen by coincidence: Sometimes the playback starts in a lower resolution and does not switch to a better quality unless the user actively seeks to a different position. Sometimes the playback switches to a lower resolution right after the beginning of the session. Next session on same device can be fine. The behaviour is not connected to specific media assets. It happens across multiple vendors (even though they are not evenly represented).

Something wrong with the built-in bandwidth estimation?

This does have a direct impact on the user experience and behaviour. While for mp4/oipf, we can see an average playback time of 20.5 mins, for dash.js it is 17.8 mins. For the >80% dash.js sessions played back at FullHD it's 20.2 mins, very similar to mp4/oipf. However, for roughly 8% of the dash.js sessions the playback resolution is 384x216 or 640x360, with an average playback time of only 4.2 mins. While we always expect to see some sessions in low-res, 8% seems far too high. At this point we can say that some devices are more frequently affected than others, mainly

  • Vestel MB180, MB181, MB230
  • Panasonic 2018...2021
  • Hisense and Hisense-based Loewe's
  • Samsung The effect is not limited to these vendors.
Expected behavior

Always provide the best resolution in front of bandwidth.

Coralielm avatar Sep 26 '23 16:09 Coralielm

@Coralielm It is hard to tell what might be the root cause here. We are actively working on the throughput calculation and also the ABR rules for version 5.0.0 of dash.js. What you can try meanwhile is to adjust the ABR configuration in dash.js. For instance, switch from ABR_STRATEGY_DYNAMIC to ABR_STRATEGY_BOLA or ABR_STRATEGY_THROUGHPUT. It is also worth trying out ewma as a movingAverageMethod.

Once we have a first alpha version of 5.0.0 available I will let you know. It would be great if you can run some tests on your end with this new version to see how it performs.

dsilhavy avatar Oct 11 '23 14:10 dsilhavy

ABR logic was refactored and improved, current development version of v5 is hosted here: https://reference.dashif.org/dash.js/v5/samples/dash-if-reference-player/index.html. To re-evaluate against the changes that were made.

dsilhavy avatar Nov 16 '23 13:11 dsilhavy