exoplayer - ExoPlayer 如何确定其缓冲速度?
问题描述
我正在尝试模拟一组基于 ExoPlayer 的视频播放器从同一组服务器流式传输 MPEG-DASH 流,以进行性能研究。我熟悉DefaultLoadControl的工作原理(这个视频有很大帮助),但我不知道缓冲时从服务器请求的块的大小。例如, ExoPlayer 是否会在启动时立即尝试在一个 HTTP 请求中获取minBufferMs字节?还是它会发送几个较小的请求?什么算法(或一系列算法)确定缓冲区的填充速度是多少?正常播放时的行为是否相同?在 seekTo() 之后?
另外,这个缓冲率取决于哪些变量?例如,ExoPlayer 是否使用 MPD 清单中的信息?
为了了解更多,我应该研究什么课程?
非常感谢!
解决方案
视频文件在服务器端被分成多个片段,播放器根据其能力和网络条件,或更准确地说,通常取决于它如何基于如何感知网络,从适当的分辨率/比特率流中请求下一个片段它已经缓冲了很多等等。
段的大小是在服务器端预先确定的,而不是播放器请求更小或更大的段。内容段长度的选择是艺术和科学的混合体——用非常简单的术语来说,较短的段允许更好的延迟和灵活性,而较长的段更有效并且可以提供更好的质量。在撰写本文时,这里有一个很好的概述:
对于您要调查的类的问题,在 ExoPlayer 中您可能想查看 TrackSelector:
推荐阅读
- security - 如何从会话 cookie 使用 SameSite 的跨站点请求中恢复会话?
- xslt - 从 XML 中的 cdata 文本中提取 img src
- git - 将未推送的提交移动到另一台没有远程存储库的机器上的存储库
- php - 在 Laravel 的表单中确认删除
- set - 离散数学
- c# - 当我在 xamarin 上除以 0 时出现异常
- azure - 尝试从 azure dev ops 推送到 azure 容器注册表时请求访问被拒绝
- python-3.x - 如何即时处理大量协程返回的值(异步问题)?
- sql - 如何将三个不同表的输出存储到一个表中?
- sql - 获取空记录集的 SQL 语句?