一、适合使用exoplayer 库
exoplayer 的git 仓库地址:https://github.com/google/ExoPlayer。在该仓库地址中介绍了两种使用exoplayer的方式。
1、AS 导入在线库:
在 android studio 创建项目指挥,build.gradle 中添加如下代码导入exoplayer的各个库:
implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-dash:2.X.X'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X'
......
这里仅仅列出了三个例子,其他还有诸如 hls 等库
exoplayer-core
: 这个是必须导入的核心代码库exoplayer-dash
: 用来支持dash视频流exoplayer-hls
: 用来支持hls m3u8类型的视频流exoplayer-smoothstreaming
: smoothstreaming视频流支持exoplayer-ui
:exoplayer 封装了的ui控件,可以用来快速搭建播放器界面,包括播放控制,播放界面等
导入库还需要启用 java8 编译:
compileOptions {
targetCompatibility JavaVersion 。VERSION_1_8
}
2、导入Exoplayer 源码作为依赖项目:
a、clone 代码
git clone https://github.com/google/ExoPlayer.git
b、settings.gradle中添加:
gradle.ext.exoplayerRoot = 'path/to/exoplayer'
gradle.ext.exoplayerModulePrefix = 'exoplayer-'
apply from: new File(gradle.ext.exoplayerRoot, 'core_settings.gradle')
c、 在biuld.gradle中添加项目依赖:
implementation project(':exoplayer-library-core')
implementation project(':exoplayer-library-dash')
implementation project(':exoplayer-library-ui')
除了core是必要的,其他的需要哪个添加哪个库进去即可。
二、如何使用exoplayer 播放在线视频
exoplayer 因为是一个开源的项目,所以更新速度会比较快。如下方法基于 exoplayer v2.12.3所写.
1、 播放清流方法:
SimpleExoPlayer player = new SimpleExoPlayer.Builder(context).build();
StyledPlayerView playview = findviewbyid(xxxxxxx)
playerView.setPlayer(player);
MediaItem mediaItem = MediaItem.fromUri(videoUri);
player.setMediaItem(mediaItem);
player.prepare();
player.play();
2、 播放加密流方法,以widevine为例子
加密流只是在创建mediaitem 的时候有区别,其他的步骤一致。下面的是widvine的,如果是 playready或者其他的加密方式,则修改C.xxxx即可。
hlsMediaItem = new MediaItem.Builder()
.setUri(videoUri)
.setDrmUuid(C.WIDEVINE_UUID)
.setDrmMultiSession(true)
.setDrmLicenseUri(授权服务器)
.setDrmMultiSession(true)
.build();