前段时间项目中需要在 Android 中播放视频、流媒体、查看监控,就研究了一下 Android 多媒体解决方案。

查找了一下,大致有如下几种:

  1. Android MediaPlayer
  2. FFmpeg
  3. Google ExoPlayer
  4. Vitamio
  5. VLC

Android MediaPlayer 是 Android 内置的播放器,支持格式很有限:3gp mp4,且不支持流媒体。

FFmpeg 是一套功能强大的跨平台多媒体解决方案,需要用NDK编译,支持海量格式、流媒体。

Google ExoPlayer 是一个Google在2014年才推出的介于现有MediaPlayer和自定义媒体播放器之间的预建播放器,要求 Android 4.1+,支持多种格式、DASH(Dynamic Adaptive Streaming over HTTP),易于扩展。

Vitamio 是国人开发的一个流行的第三方多媒体库,支持 Android、iOS,最新版商业使用需要授权。

VLC是另一个功能强大的跨平台多媒体解决方案,支持海量格式、流媒体,集成了FFmpeg的部分功能,官方支持Android平台。

本文将使用VLC在Android中播放视频,最终效果如下:

基于 VLC 的 Android 多媒体解决方案_第1张图片 基于 VLC 的 Android 多媒体解决方案_第2张图片

1、编译VLC Android

VLC 官方 git 仓库:http://git.videolan.org/

VLC Android 官方 git 仓库:https://code.videolan.org/videolan/vlc-android

VLC Android 官方编译说明:https://wiki.videolan.org/AndroidCompile

VLC Android比较难得的是提供了Android原生aar包,项目里可以直接引用。按照上述说明即可编译出对应架构(ARM、x86、MIPS等)的aar包。

我这里编译好了一份 ARMv7 的aar 包,可以在这里下载。

项目源码已托管在Github:https://github.com/mymbrooks/VLCAndroidDemo

2、新建一个Android项目,把aar包复制到app/libs目录下:

基于 VLC 的 Android 多媒体解决方案_第3张图片

3、修改 app/build.gradle,添加:

基于 VLC 的 Android 多媒体解决方案_第4张图片

4、创建第一个界面,支持播放本地和远程视频:

基于 VLC 的 Android 多媒体解决方案_第5张图片

5、为了兼容 Android 6.0 + ,播放本地视频时需要先请求读取SD卡的权限:

基于 VLC 的 Android 多媒体解决方案_第6张图片

6、使用了一个第三方的方法方便获取Android 4.4及以上的真实视频路径:

基于 VLC 的 Android 多媒体解决方案_第7张图片

7、创建 VLC 播放器界面,使用SurfaceView显示视频,支持进度条、音量控制,暂停、继续,全屏显示:

基于 VLC 的 Android 多媒体解决方案_第8张图片

8、播放进度控制:

基于 VLC 的 Android 多媒体解决方案_第9张图片

9、获取视频长度等信息:

基于 VLC 的 Android 多媒体解决方案_第10张图片

10、播放过程中更新时间进度:

基于 VLC 的 Android 多媒体解决方案_第11张图片

11、将播放时间进度格式化为:hh:mm:ss

基于 VLC 的 Android 多媒体解决方案_第12张图片

12、播放本地和远程视频时使用的方法不同:

基于 VLC 的 Android 多媒体解决方案_第13张图片

VLC Android 提供的功能很丰富,如需要其他高级功能,请参考官方App源码。

此外,VLC Android 还提供了一个原生控件,具体用法可自行尝试:

基于 VLC 的 Android 多媒体解决方案_第14张图片

更多相关文章

  1. Android获取相册中图片的路径 4.4版本前后的变化
  2. Android保证首次获取到的location对象不为空的解决方案
  3. android图片特效,图片过滤
  4. 不支持gif动态图片
  5. Android进阶2之检索Android的图片库并显示图片详细信息
  6. Android保存图片到系统图库
  7. 【Android】获取图片和视频缩略图
  8. Android使用HttpClient下载图片
  9. android切换到后台,返回后图片纹理丢失

随机推荐

  1. OpenKruise v0.8.0 版本发布:K8s 社区首个
  2. Linux运维入门教程01-02 (UNIX和Linux操
  3. 冲着这份大数据分析案例,我立马下载该分析
  4. 掌握这8个Java实战小技巧,再也不用为了内
  5. Prometheus警报规则
  6. 厌倦了excel绘制地图的繁琐操作,来看看这
  7. 3种方法,隐藏苹果Mac档案、资料夹
  8. Kubernetes日志系统新贵Loki-Stack
  9. Kubernetes Scheduler浅析
  10. Centos7 下安装NFS+Heartbeat+DRBD