android - Exoplayer 的缓冲问题
问题描述
我正在尝试使用 exoplayer 设置一个流媒体应用程序,但是我对缓冲没有什么了解。
它应该尝试确保缓冲区大小始终在 DEFAULT_MIN_BUFFER_MS 和 DEFAULT_MAX_BUFFER_MS 之间。我还可以设置一个 DEFAULT_BUFFER_FOR_PLAYBACK_MS,它设置开始播放流所需的缓冲区大小。
但是,每当我将 DEFAULT_BUFFER_FOR_PLAYBACK_MS 设置为低于 DEFAULT_MIN_BUFFER_MS 时,似乎 DEFAULT_MIN_BUFFER_MS 就采用了 DEFAULT_BUFFER_FOR_PLAYBACK_MS 的值。
例如:如果我将 DEFAULT_MIN_BUFFER_MS 设置为 10000,将 DEFAULT_MAX_BUFFER_MS 设置为 20000 并将 DEFAULT_BUFFER_FOR_PLAYBACK_MS 设置为 5000,那么我的缓冲区大小将保持在 5 秒到 20 秒之间,而不是 10 到 20 秒。这是预期的还是我在设置我的方式时遗漏了什么玩家?
这是我的代码示例,如果您需要更多,请随时询问:
public static final int DEFAULT_MIN_BUFFER_MS = 10000;
public static final int DEFAULT_MAX_BUFFER_MS = 20000;
public static final int DEFAULT_BUFFER_FOR_PLAYBACK_MS = 5000;
public static final int DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS = 5000;
DefaultLoadControl loadControl = new DefaultLoadControl.Builder()
.setAllocator(new DefaultAllocator(true, C.DEFAULT_BUFFER_SEGMENT_SIZE))
.setBufferDurationsMs(DEFAULT_MIN_BUFFER_MS,
DEFAULT_MAX_BUFFER_MS, DEFAULT_BUFFER_FOR_PLAYBACK_MS, DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS)
.setPrioritizeTimeOverSizeThresholds(true)
.createDefaultLoadControl();
player = newSimpleInstance(this,defaultRenderersFactory, trackSelector, loadControl, null, bandwidthMeter);
解决方案
推荐阅读
- swift - swift firebase 从存储中获取图像并在 JSQMessage 控制器中显示
- javascript - Google BigQuery Python 库下载结果的速度是 Node JS 库的 2 倍
- python - -x 在 sorted 函数的键中是什么意思?
- junit - 使用 Mockito 和 JUNIT 和 CDI 模拟服务
- go - 如何使用 Golang 移位十六进制值?
- python - 从部分 href 下载和保存 PDF?
- stored-procedures - [Amazon](500310) 无效操作:"$$" 处或附近未终止的美元引号字符串
- swift - 结果类型通用参数“T”无法快速推断 5
- angular - 您可以使用不同的 sessionid cookie 发送令牌身份验证吗
- javascript - 屏幕在 CSS 中分成两部分