一、简介
ExoPlayer是一款基于Android底层媒体api的应用级媒体播放器 ,现在主流的视频播放器使用的第三方视频框架有Vitamio、B站开源的ijkPlayer、再就是ExoPlayer等,以前用过Vitamio视频框架,网上资料很多,这里就不过多介绍了,主要介绍ExoPlayer。
ExoPlayer是否需要学习,这是个问题,因为我们已经有Vitamio用了呀,我到GitHub上看了,vitamio和ijkPlayer都已经几年没有更新了,存在很多没有关闭的bug,而ExoPlayer还是在维护的,另外其已经应用了AndroidX的新特性,随着技术的发展与提高,我认为有必要了解一下,即使国内论坛资料做的一般,大家都是复制别人的博客或者自己没做明白。
于是我就翻译了一遍官方网站(注意有墙)的例子。
YouTube可是用的这个视频框架哦,有大厂背书,我们还怕什么呢?
优点介绍:
- 它支持许多与MediaPlayer相同的媒体格式,并支持自适应格式,如DASH和SmoothStreaming。
- 外部播放器是高度可定制和可扩展的,这使得它能够支持许多高级用例。
言归正传,开始学习!
如何构建:
- Create a Player 我们将创建一个
SimpleExoPlayer
用来播放音视频资源。 - Activity lifecycle 我们将整合外部播放器与app的活动生命周期,支持单窗口或多窗口环境下的背景、前景和回放恢复。
- Playlists 我们将使用
MediaSource
创建一个播放列表。 - Adaptive video streaming 我们将播放使媒体质量适应可用带宽的自适应视频流。
- Monitoring events 我们将注册事件监听器来监视回放状态,并展示如何使用监听器来测量回放的质量。
- UI components 我们将使用标准的外部播放器UI组件,然后根据我们自己的应用程序风格定制它们。
环境需求:
- Android Studio(>=3.5)
- Android 4.1版本以上
二、Create a Player
1.导入工程
Android Studio导入初始化好的工程,exoplayer-codelab-00点击下载!
导入了工程后,打开工程可以发现有两个module,一个是app
,另一个是player-lib
。app目录几乎是空的,只有一个AndroidManifest.xml
文件,在 app/build.gradle
中添加以下内容
dependencies {
implementation project(":player-lib")
}
2.添加ExoPlayer依赖
添加依赖可以是全量包,也可以是根据自己需要的功能来添加,如下:
com.google.android.exoplayer:exoplayer:rX.X.X
因为这个简单的Demo功能简单,我们选择单独导入依赖。
dependencies {
[...]
implementation 'com.google.android.exoplayer:exoplayer-core:2.10.5'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.10.5'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.5'
}
具体依赖信息访问官方文档
3.创建PlayerView
activity_player.xml
<com.google.android.exoplayer2.ui.PlayerView