前言
本篇文章主要介绍 Android 原生 VideoView,Google 开源视频播放框架 ExoPlayer,Vitamio 视频播放框架以及 Bilibili 开源视频播放框架 ijkplayer 的使用方法和优缺点。
VideoView
VideoView 的使用非常简单,播放视频的步骤:
在界面布局文件中定义 VideoView 组件,或在程序中创建 VideoView 组件
调用 VideoView 的如下两个方法来加载指定的视频:
setVidePath(String path):加载 path 文件代表的视频
setVideoURI(Uri uri):加载 uri 所对应的视频
调用 VideoView 的 start()、stop()、psuse() 方法来控制视频的播放
ExoPlayer
用法
ExoPlayer 开源项目包含了 library 和 示例:
- ExoPlayer library - 这部分是核心的库
- Demo app - 这部分是演示怎么使用 ExoPlayer 的 Demo
ExoPlayer 库的核心类是 ExoPlayer 类。该类维护了播放器的全局状态 。比如如何获取媒体数据,如何缓冲以及是怎样的编码格式。
ExoPlayer 基于 MediaCodec 和 AudioTrack 提供了默认的音视频的 TrackRenderer 实现。所有的 renderers 都需要 SampleSource 对象,ExoPlayer 从 SampleSource 获得 media samples 用于播放。下图展示了 ExoPlayer 是如何配置组合这些组件用于播放音视频的。
ExoPlayer 库提供了一些不同类型的 SampleSource 实例:
- ExtractorSampleSource - 用于 MP3,M4A,WebM,M