前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android主流播放器比较

Android主流播放器比较

作者头像
蜻蜓队长
发布2018-08-03 11:28:43
2.8K0
发布2018-08-03 11:28:43
举报
文章被收录于专栏:Android机动车Android机动车

本篇文章主要介绍 Android 原生 VideoView,Google 开源视频播放框架 ExoPlayer,Vitamio 视频播放框架以及 Bilibili 开源视频播放框架 ijkplayer 的使用方法和优缺点。

VideoView

前段时间使用MediaPlayer+SurfaceView封装了一个视频播放器,由于VideoView就是采用这种方案封装,所以不再累赘。

VideoView 的使用非常简单,播放视频的步骤:

  • 在界面布局文件中定义 VideoView 组件,或在程序中创建 VideoView 组件
  • 调用 VideoView 的如下两个方法来加载指定的视频: setVidePath(String path):加载 path 文件代表的视频 setVideoURI(Uri uri):加载 uri 所对应的视频
  • 调用 VideoView 的 start()、stop()、psuse() 方法来控制视频的播放
不足:
  • 原生VideoView只能播放mp4和3gp两种格式;
  • seekTo定位不准,只能定位到关键帧;
  • VideoView不保存视频播放状态,需自行处理;
  • VideoView加载网络视频时,常见黑屏情况,因为VideoView每次都会重新加载。

ExoPlayer

ExoPlayer 开源项目包含了 library 和 示例:

  • ExoPlayer library - 这部分是核心的库
  • Demo app - 这部分是演示怎么使用 ExoPlayer 的 Demo

ExoPlayer 库的核心类是 ExoPlayer 类。该类维护了播放器的全局状态 。比如如何获取媒体数据,如何缓冲以及是怎样的编码格式。

ExoPlayer 基于 MediaCodec 和 AudioTrack 提供了默认的音视频的 TrackRenderer 实现。所有的 renderers 都需要 SampleSource 对象,ExoPlayer 从 SampleSource 获得 media samples 用于播放。

优点:

ExoPlayer 相较于 MediaPlayer 有很多很多的优点:

  • 支持动态的自适应流 HTTP (DASH) 和 平滑流,任何目前 MediaPlayer 支持的视频格式(同时它还支持 HTTP 直播(HLS),MP4,MP3,WebM,M4A,MPEG-TS 和 AAC)。
  • 支持高级的 HLS 特性,例如正确处理 EXT-X-DISCONTINUITY 标签;
  • 支持自定义和扩展,ExoPlayer 专门为此设计;
  • 便于随着 App 的升级而升级。因为 ExoPlayer 是一个包含在你的应用中的库,对于你使用哪个版本有完全的控制权,并且你可以简单的跟随应用的升级而升级;
  • 更少的适配性问题。
缺点:
  • ExoPlayer 的音频和视频组件依赖 Android 的 MediaCodec 接口,该接口发布于 Android4.1(API 等级 16)。因此它不能工作于之前的Android 版本。

Vitamio

简单使用:

1.下载 Vitamio 库,并作为工程依赖。

2.在 Activity 的 onCreate 方法中添加如下代码,初始化 Vitamio 的解码器

代码语言:javascript
复制
@Override 
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    if (!LibsChecker.checkVitamioLibs(this)) 
    return;
}

3.在 AndroidManifest.xml 中声明 InitActivity

代码语言:javascript
复制
<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

优点:

ijkplayer 最大的优点就是可以根据需要编译需要的解码器。在编译的时候通过 ln -s module-default.sh module.sh 选择要编译的解码器。ijkplayer 在 config 目录下提供了三种 module.sh 。也可自己修改 module.sh 。

缺点:

ijkplayer 的缺点是库太大。加入项目后会大大增加你的 APP 的大小。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android机动车 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VideoView
    • 不足:
    • ExoPlayer
      • 优点:
        • 缺点:
        • Vitamio
          • 简单使用:
            • 优点:
            • IjkPlayer
              • 优点:
                • 缺点:
                相关产品与服务
                云直播
                云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档