基于 VLC 的 Android 多媒体解决方案
来源:互联网 发布:2017人工智能龙头股 编辑:程序博客网 时间:2024/06/06 05:57
前段时间项目中需要在 Android 中播放视频、流媒体、查看监控,就研究了一下 Android 多媒体解决方案。
查找了一下,大致有如下几种:
Android MediaPlayerFFmpegGoogle ExoPlayerVitamioVLC
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中播放视频,最终效果如下:
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目录下:
3、修改 app/build.gradle,添加:
4、创建第一个界面,支持播放本地和远程视频:
5、为了兼容 Android 6.0 + ,播放本地视频时需要先请求读取SD卡的权限:
6、使用了一个第三方的方法方便获取Android 4.4及以上的真实视频路径:
7、创建 VLC 播放器界面,使用SurfaceView显示视频,支持进度条、音量控制,暂停、继续,全屏显示:
8、播放进度控制:
9、获取视频长度等信息:
10、播放过程中更新时间进度:
11、将播放时间进度格式化为:hh:mm:ss
12、播放本地和远程视频时使用的方法不同:
http://image.codes51.com/Article/image/20160419/20160419140957_5625.png
VLC Android 提供的功能很丰富,如需要其他高级功能,请参考官方App源码。
此外,VLC Android 还提供了一个原生控件,具体用法可自行尝试:
以上就介绍了基于 VLC 的 Android 多媒体解决方案,包括了Android方面的内容,希望对Android开发有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_754238.html
最后:感恩原创。
- 基于 VLC 的 Android 多媒体解决方案
- 基于 VLC 的 Android 多媒体解决方案
- 基于移动平台的多媒体框架——用VLC搭建简单的流媒体服务器
- VLC for android Windows平台上基于 Eclipse的开发
- VLC for android Windows平台上基于 Eclipse的开发
- 基于VLC框架的Android视频播放器Demo
- 基于android多媒体框架实现播放APE音频的实现
- 基于Android的多媒体播放器(毕业设计)
- 基于VLC SDK的二次开发
- 基于VLC SDK的二次开发
- Android VLC的编译
- 基于ffmpeg的多媒体框架
- 编译VLC,出错的解决方案之一
- VLC configure的portaudio错误解决方案
- Android的多媒体框架
- Android多媒体的Demo
- android的多媒体数据库
- android的多媒体数据库
- linux crontab
- NYoj 69 数的长度(求阶乘长度)
- bzoj2142 礼物
- sass入门
- 成员变量和局部变量的区别?
- 基于 VLC 的 Android 多媒体解决方案
- 国际化
- 前端构建工具gulp使用
- linux一些有趣的命令
- MYSQL5.7版本sql_mode=only_full_group_by问题
- eclipse添加智能提示
- 用Phaser来制作一个html5游戏——flappy bird (一)
- J.U.C之AQS:同步状态的获取与释放
- 信号量与互斥锁