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会产生什么影响?
答案 0 :(得分:1)
这些值与视频的总长度无关 - 它们与您想要缓冲的数量有关,以确保播放而不必暂停视频,同时缓冲更多视频。
如果你的视频非常短,就像你的1秒示例那样,那么这可能是一个边缘情况,可能值得尝试一些不同的值。
我认为任何推荐值都不会超过推荐值,而且上面的默认值似乎并不合理。您可以尝试更改值,但问题是您的结果将反映测试期间出现的网络,CPU负载等条件。
自适应比特率视频也会使水稍微混乱,因为玩家将在比特率之间切换,以尝试为当前网络状况找到最高质量的比特率。同样,您的1秒持续时间视频是一个边缘情况,自适应比特率视频可能没有多大意义,除非它们是连续视频流的一部分,并且您希望能够保持所有比特率相似