ExoPlayer使用讲解(基本使用)

8,604 阅读2分钟

导入ExoPlayer的相关依赖

全包导入

implementation 'com.google.android.exoplayer:exoplayer:2.X.X'

按需导入

implementation 'com.google.android.exoplayer:exoplayer-core:2.17.0'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.17.0'
implementation 'com.google.android.exoplayer:exoplayer-hls:2.17.0'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.17.0'

exoplayer-core:核心库
exoplayer-ui:UI界面库
exoplayer-hls:HLS支持库
exoplayer-dash:dash支持库

添加JAVA8支持

//kotlin
kotlinOptions {
    jvmTarget = '1.8'
}
//java
compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

创建播放器

exoplayer提供了ExoPlayer和SimpleExoPlayer两种播放器实例,其中SimpleExoPlayer在最新的版本中已经弃用,官方推荐使用ExoPlayer实例

val mPlayer = ExoPlayer.Builder(this).build()

将播放器与播放界面关联

exoPlayer提供了多种播放界面可供选择,包括PlayerView和StyledPlayerView,PlayerView提供了基本的播放控制,StyledPlayerView在基本播放控制的基础上增加了快进、倍速播放等几个常用的操作。我们来看一下这两种播放视图的界面效果。

PlayerView

<com.google.android.exoplayer2.ui.PlayerView
    android:id="@+id/exo_player"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

图片.png

StyledPlayerView

<com.google.android.exoplayer2.ui.StyledPlayerView
    android:id="@+id/exo_player"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

图片.png

关联视图和播放器实例

mBinding.exoPlayer.player=mPlayer

创建媒体资源

任何播放器都是一样的,想要播放音频或者视频必须要创建对应的媒体资源,exoplayer创建媒体资源也是非常简单的,只需要使用url便可创建一个MediaItem。

val url="https://xxx/xxx.mp4"
val mediaItem = MediaItem.fromUri(Uri.parse(url))
mPlayer.setMediaItem(mediaItem)//准备媒体资源
mPlayer.prepare()
mPlayer.play()//开始播放

控制播放器

由于PlayerView或者SytledPlayerView都内置控制器,不用编写任何代码便可实现对播放器的基本控制,比如开始、暂停、上一个下一个等,但是考虑到后续的定制化操作,Exoplayer也提供了控制播放器的操作方法,达到通过代码来控制播放器的目的。一些常用的方法如下:

  • player和pause控制开始和暂停播放
  • seekTo控制进度条位置
  • setRepetModel 控制是否循环播放
  • setShuffleModeEnabled 控制随机播放
  • setPlaybackParameters 调整播放速度和音调

释放播放器资源

当不需要播放时要考虑在合适的时机和位置释放播放器资源,调用release方法可以释放资源

override fun onDestroy() {
    super.onDestroy()
    mPlayer.stop()
    mPlayer.release()
}

结束语

这篇文章作为音视频系列的开篇,简单介绍了ExoPlayer的基本使用,下一篇会介绍ExoPlayer的相关事件监听