我正在使用 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()
LoadControl
接口定义了ExoPlayer的缓冲策略。 DefaultLoadControl
。 DefaultLoadControl
以及必要的参数来配置 DefaultLoadControl.Builder
,例如 bufferForPlaybackMs、minBufferMs/maxBufferMs。
您需要自定义
LoadErrorHandlingPolicy
来更改重试次数和每次尝试之间的延迟。 Exoplayer 使用 DefaultLoadErrorHandlingPolicy
作为默认实现,重试 3 次,然后传播错误。
此链接可以方便地自定义
DefaultLoadErrorHandlingPolicy
以更好地满足您的需求。