建议的 ExoPlayer 实例数据缓冲和重新缓冲持续时间以及更改这些数据的影响

Recommended buffer and rebuffer duration of data for ExoPlayer instance and the impact of changing those

ExoPlayer 示例带有以下默认值:

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

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

minBufferMs - A minimum duration of data that must be buffered for playback to start or resume following a user action such as a seek.

minRebufferMs - A minimum duration of data that must be buffered for playback to resume after a player invoked rebuffer (i.e. a rebuffer that occurs due to buffer depletion, and not due to a user action such as starting playback or seeking).

这些似乎是合理的默认值,但可能与播放器的平均视频长度有关?在我的应用程序中,平均视频约为 24 秒,但在某些情况下,视频可能为 1 秒或 <6 秒。我认为这些默认值给我带来了一些边缘案例视频的问题(这些视频没有播放,因为它们的持续时间在第一个 buff 之后小于 minBuff 或 minRebuff)所以我正在考虑更改它们。

问题是,建议值是多少?将这两个值设置为 500 和 2000 有什么影响?

这些值与视频的总长度没有真正的关系 - 它们与您想要缓冲的量有关,以尝试确保播放而不必在缓冲更多视频时暂停视频。

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

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

自适应比特率视频也会使水有点浑浊,因为播放器会在比特率之间切换,也会尝试为当前网络条件找到最高质量的比特率。同样,您的 1 秒持续时间视频是一种边缘情况,自适应比特率视频可能没有多大意义,除非它们是连续视频流的一部分并且您希望能够使所有视频的比特率保持相似.