Android Kotlin 使用 ExoPlayer 实现视频循环播放

要实现 ExoPlayer 的重复播放,可以使用 setRepeatMode 方法来设置重复模式为 Player.REPEAT_MODE_ALL。以下是一个使用 Androidx Kotlin 实现 ExoPlayer 重复播放的示例代码:

首先,在你的布局文件中添加一个用于显示视频的 SurfaceViewTextureView

<SurfaceView
    android:id="@+id/surface_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

然后,在你的 ActivityFragment 中初始化 ExoPlayer 并设置重复模式:

// 导入相关的包
import com.google.android.exoplayer2.SimpleExoPlayer
import com.google.android.exoplayer2.DefaultLoadControl
import com.google.android.exoplayer2.DefaultRenderersFactory
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory
import com.google.android.exoplayer2.util.Util
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory
import com.google.android.exoplayer2.source.ExtractorMediaSource
import com.google.android.exoplayer2.source.LoopingMediaSource
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector

// 在你的 Activity 或 Fragment 中定义一个 ExoPlayer 实例
private lateinit var player: SimpleExoPlayer

// 在 onCreate 方法或其他合适的地方初始化 ExoPlayer
private fun initExoPlayer() {
    // 创建 DefaultTrackSelector 实例
    val trackSelector = DefaultTrackSelector()

    // 创建 DefaultRenderersFactory 实例
    val renderersFactory = DefaultRenderersFactory(this)

    // 创建 DefaultLoadControl 实例
    val loadControl = DefaultLoadControl()

    // 创建 DefaultDataSourceFactory 实例
    val dataSourceFactory = DefaultDataSourceFactory(
        this,
        Util.getUserAgent(this, "YourApplicationName")
    )

    // 创建 DefaultExtractorsFactory 实例
    val extractorsFactory = DefaultExtractorsFactory()

    // 创建 ExtractorMediaSource 实例
    val mediaSource = ExtractorMediaSource.Factory(dataSourceFactory)
        .setExtractorsFactory(extractorsFactory)
        .createMediaSource(uri)

    // 创建 LoopingMediaSource 实例
    val loopingMediaSource = LoopingMediaSource(mediaSource)

    // 创建 SimpleExoPlayer 实例
    player = ExoPlayerFactory.newSimpleInstance(
        this,
        renderersFactory,
        trackSelector,
        loadControl
    )

    // 设置重复模式为 REPEAT_MODE_ALL
    player.repeatMode = Player.REPEAT_MODE_ALL

    // 准备播放视频
    player.prepare(loopingMediaSource)

    // 将 SurfaceView 与 ExoPlayer 关联
    player.setVideoSurfaceView(surfaceView)
}

// 在 onStart 方法中开始播放视频
override fun onStart() {
    super.onStart()
    player.playWhenReady = true
}

// 在 onStop 方法中停止播放视频
override fun onStop() {
    super.onStop()
    player.playWhenReady = false
}

// 在 onDestroy 方法中释放 ExoPlayer 资源
override fun onDestroy() {
    super.onDestroy()
    player.release()
}

在上面的代码中,我们使用了 LoopingMediaSource 来实现视频的循环播放。LoopingMediaSource 接受一个 MediaSource 作为参数,然后将其循环播放。

请注意,上述代码中的 uri 是视频文件的 URI,你需要将其替换为你自己的视频文件 URI。

这样就完成了 ExoPlayer 的重复播放功能的实现。希望对你有帮助!

Android Kotlin 使用 ExoPlayer 实现视频循环播放

原文地址: https://www.cveoy.top/t/topic/qhMy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录