Android ExoPlayer зациклить видео

val playerListener = object : Player.Listener {
    override fun onPlaybackStateChanged(playbackState: Int) {
        super.onPlaybackStateChanged(playbackState)
        when (playbackState) {
            Player.STATE_ENDED -> {
                restartPlayer()
                Log.d("Player", "STATE_ENDED")
            }

            Player.STATE_READY -> {
                videoView.player = player
                play()
                Log.d("Player", "STATE_READY")
            }

            Player.STATE_BUFFERING -> {
                Log.d("Player", "STATE_BUFFERING")
            }

            Player.STATE_IDLE -> {
                Log.d("Player", "STATE_IDLE")
            }
        }
    }

    override fun onPlayerError(error: PlaybackException) {
        super.onPlayerError(error)
    }
}

val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory()

player = ExoPlayer.Builder(itemView.context)
    .build()
    .apply {
         val source = ProgressiveMediaSource.Factory(dataSourceFactory)
             .createMediaSource(MediaItem.fromUri(Uri.parse(item.file)))

         setMediaSource(source)
         prepare()
         addListener(playerListener)
         volume = 0f
    }

Я создаю плеер в андроид приложении, для проигрывания видео идея крутить видео в цикле на странице товара, далее для управления использую методы

fun releasePlayer() {
    player?.release()
    player = null
}

fun pause() {
    player?.playWhenReady = false
}

fun play() {
    player?.playWhenReady = true
}

fun restartPlayer() {
    player?.seekTo(0)
    player?.playWhenReady = true
}

И моя проблема в том, что с вызовом метода restartPlayer, видео начинает загружаться повторно, в логах я вижу лог STATE_BUFFERING.

Но если я добавляю repeatMode = Player.REPEAT_MODE_ONE, то переход с конца видео в начало происходит плавно и автоматически, но каждых 2-3 секунды видео стопорится, и начинает буферизироваться.

Вопрос: Как реализовать быструю загрузку 10-30 секундного видео, и заставить его работать максимально плавно в цикле?


Ответы (0 шт):