google / ExoPlayer

This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
https://developer.android.com/media/media3/exoplayer
Apache License 2.0
21.7k stars 6.01k forks source link

LL DASH with ABR #10630

Open shummakom opened 1 year ago

shummakom commented 1 year ago

Is there any way to play CMAF LL DASH with ABR using Exoplayer? I have tested test stream from akamai and it works perfect on Theoplayer and Dash.js player. there seems to be an issue with exoplayer bandwidth estimation mechanism which makes the player to never recover to the highest profile. Is there any workaround?

tried 2.18.1 and 2.17.0

Thx

christosts commented 1 year ago

ExoPlayer can play ULL-CMAF DASH streams but its ABR algorithm is not finely tuned for this use-case. When you download segments close to the live edge, the bandwidth estimation is not updated because these segments are likely not downloaded at full speed from the server, hence they are not representative of the download throughput.

Can you please read this comment which explains how to overwrite the initial bandwidth estimate?

shummakom commented 1 year ago

Thank you very much! can you please suggest parameters to be set when using LAN connection to Android TV set top box?

shummakom commented 1 year ago

Hello,

I have tried to follow your advice and added default bitrate of 20M which is higher than my largest profile. downswitching works ok but upswitching does not work at all

christosts commented 1 year ago

What is your highest bitrate profile? The player will try to go up to approximately 75% of the reported bandwidth

d4rkside76 commented 1 year ago

We have the same issue: the bandwidth calculation does not work with CMAF streams, we set a high bandwidth to start, but if for some reason the quality goes down, the player never recalculates and never goes up again until we open another URL.

shummakom commented 1 year ago

is there any improvements on 2.19 bitrate calculation and low latency dash abr?