本篇文章主要介绍 Android 原生 VideoView,Google 开源视频播放框架 ExoPlayer,Vitamio 视频播放框架以及 Bilibili 开源视频播放框架 ijkplayer 的使用方法和优缺点。android
前段时间使用MediaPlayer+SurfaceView封装了一个视频播放器,因为VideoView就是采用这种方案封装,因此再也不累赘。bash
VideoView 的使用很是简单,播放视频的步骤:微信
在界面布局文件中定义 VideoView 组件,或在程序中建立 VideoView 组件网络
调用 VideoView 的以下两个方法来加载指定的视频:app
setVidePath(String path):加载 path 文件表明的视频
setVideoURI(Uri uri):加载 uri 所对应的视频
复制代码
调用 VideoView 的 start()、stop()、psuse() 方法来控制视频的播放框架
ExoPlayer 开源项目包含了 library 和 示例:ide
ExoPlayer 库的核心类是 ExoPlayer 类。该类维护了播放器的全局状态 。好比如何获取媒体数据,如何缓冲以及是怎样的编码格式。布局
ExoPlayer 基于 MediaCodec 和 AudioTrack 提供了默认的音视频的 TrackRenderer 实现。全部的 renderers 都须要 SampleSource 对象,ExoPlayer 从 SampleSource 得到 media samples 用于播放。ui
ExoPlayer 相较于 MediaPlayer 有不少不少的优势:this
1.下载 Vitamio 库,并做为工程依赖。
2.在 Activity 的 onCreate 方法中添加以下代码,初始化 Vitamio 的解码器
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
if (!LibsChecker.checkVitamioLibs(this))
return;
}
复制代码
3.在 AndroidManifest.xml 中声明 InitActivity
<activity android:name="io.vov.vitamio.activity.InitActivity"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden"/>
复制代码
4.其他步骤和使用 Android 原生的 VideoView 是同样的。
ijkplayer 最大的优势就是能够根据须要编译须要的解码器。在编译的时候经过 ln -s module-default.sh module.sh 选择要编译的解码器。ijkplayer 在 config 目录下提供了三种 module.sh 。也可本身修改 module.sh 。
ijkplayer 的缺点是库太大。加入项目后会大大增长你的 APP 的大小。
更多内容,关注个人微信公众号——Android机动车