ExoPlayer 是如何判断其缓冲速度的?

How does ExoPlayer determine its buffering speed?

我正在尝试模拟一组基于 ExoPlayer 的视频播放器从同一组服务器流式传输 MPEG-DASH 流,以进行性能研究。 我熟悉 DefaultLoadControl 的工作原理(并且 this video 帮助很大),但我不知道缓冲时从服务器请求的块的大小。例如,ExoPlayer 是否会在启动时立即尝试在一个 HTTP 请求中获取 minBufferMs 字节?或者它会发送几个较小的请求吗?什么算法(或一系列算法)决定缓冲区填充的速度?正常播放期间是否有相同的行为?在 seekTo()?

之后

另外,这个缓冲率取决于哪些变量?例如,ExoPlayer 是否使用 MPD 清单中的信息?

我应该调查什么 class 才能了解更多?

非常感谢!

视频文件在服务器端被分成多个片段,播放器根据其功能和网络条件,或更准确地说,通常是如何从适当的 resolution/bitrate 流中请求下一个片段它根据缓冲量等感知网络

段的大小是在服务器端预先确定的,而不是玩家请求更小或更大的段。内容段长度的选择是艺术与科学的结合——简单地说,较短的段可以提供更好的延迟和灵活性,而较长的段则效率更高,并且可以提供更好的质量。在撰写本文时,这里有一个很好的概述:

关于 class 要调查的问题,在 ExoPlayer 中,您可能想查看 TrackSelector: