如何增加ExoPlayer的缓冲时间?

问题描述 投票:0回答:2

我正在使用 ExoPlayer 在 Android 上播放视频/直播流。如果连接出现问题(连接丢失/速度降低/等),播放器将进入缓冲状态 -

STATE_BUFFERING
,尝试加载数据。几秒钟后,它会变成
STATE_IDLE
。如果连接恢复并且播放器处于
STATE_IDLE
状态,则不会开始播放。如果连接恢复并且播放器处于
STATE_BUFFERING
,它将加载数据并开始播放。 如何更改缓冲超时?让它尽可能大,让ExoPlayer等待数据尽可能长。

ExoPlayer初始化:

exoPlayer = ExoPlayer.Builder(context)
            .build()

数据源初始化:

val dataSourceFactory = DefaultHttpDataSource.Factory()
val mediaSource = HlsMediaSource.Factory(dataSourceFactory)
        .createMediaSource(link)

exoPlayer?.setMediaSource(mediaSource)
exoPlayer?.playWhenReady = false
exoPlayer?.prepare()
android exoplayer
2个回答
0
投票

LoadControl
接口定义了ExoPlayer的缓冲策略。
ExoPlayer 带有一个默认实现 -
DefaultLoadControl

您可以使用
DefaultLoadControl
以及必要的参数来配置
DefaultLoadControl.Builder
,例如 bufferForPlaybackMs、minBufferMs/maxBufferMs。


0
投票

您需要自定义

LoadErrorHandlingPolicy
来更改重试次数和每次尝试之间的延迟。 Exoplayer 使用
DefaultLoadErrorHandlingPolicy
作为默认实现,重试 3 次,然后传播错误。

此链接可以方便地自定义

DefaultLoadErrorHandlingPolicy
以更好地满足您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.