首页 > 解决方案 > ExoPlayer 如何确定其缓冲速度?

问题描述

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

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

为了了解更多,我应该研究什么课程?

非常感谢!

标签: exoplayermpeg-dashbuffering

解决方案


视频文件在服务器端被分成多个片段,播放器根据其能力和网络条件,或更准确地说,通常取决于它如何基于如何感知网络,从适当的分辨率/比特率流中请求下一个片段它已经缓冲了很多等等。

段的大小是在服务器端预先确定的,而不是播放器请求更小或更大的段。内容段长度的选择是艺术和科学的混合体——用非常简单的术语来说,较短的段允许更好的延迟和灵活性,而较长的段更有效并且可以提供更好的质量。在撰写本文时,这里有一个很好的概述:

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


推荐阅读