ExoPlayer实例的推荐缓冲区和缓冲区数据持续时间以及更改这些数据的影响

时间:2016-09-15 13:35:11

标签: android video exoplayer

ExoPlayer示例附带以下默认值:

mPlayer = ExoPlayer.Factory.newInstance(RENDERER_COUNT, 1000, 5000);

其中1000是minBufferMs而5000是minRebufferMs。来自文档:

  

minBufferMs - 必须缓冲的最小数据持续时间   播放以在用户操作(例如搜索)之后开始或恢复。

     

minRebufferMs - 必须缓冲的最小数据持续时间   播放器调用rebuffer(即一个rebuffer)后播放恢复   这是由于缓冲区耗尽而发生的,而不是由于用户的行为造成的   作为开始播放或寻求)。

这些似乎是合理的默认值,但可能与播放器的平均视频长度有关?在我的应用程序中,平均视频大约是24秒,但是,存在视频可以是1秒或<6秒的情况。我认为这些默认值会导致我对这些边缘情况视频的一些问题(那些视频没有播放,因为它们的持续时间是&lt; minBuff或minRebuff在第一次buff之后)所以我想改变它们。

问题是,建议的值是什么以及将这两个值设置为500和2000会产生什么影响?

1 个答案:

答案 0 :(得分:1)

这些值与视频的总长度无关 - 它们与您想要缓冲的数量有关,以确保播放而不必暂停视频,同时缓冲更多视频。

如果你的视频非常短,就像你的1秒示例那样,那么这可能是一个边缘情况,可能值得尝试一些不同的值。

我认为任何推荐值都不会超过推荐值,而且上面的默认值似乎并不合理。您可以尝试更改值,但问题是您的结果将反映测试期间出现的网络,CPU负载等条件。

自适应比特率视频也会使水稍微混乱,因为玩家将在比特率之间切换,以尝试为当前网络状况找到最高质量的比特率。同样,您的1秒持续时间视频是一个边缘情况,自适应比特率视频可能没有多大意义,除非它们是连续视频流的一部分,并且您希望能够保持所有比特率相似