Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。到目前,全球已经有超过 一万 种应用在使用 Vitamio,覆盖用户超过 5亿 。

Vitamio 能够流畅播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常见格式的视频,还可以在 Android 与 iOS 上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8) 等常见的多种视频流媒体协议,包括点播与直播。

一、vitamio的集成

1.1 下载vitamio

到官网的地址https://www.vitamio.org/Download/ 下载最新的vitamio,下载好有2个文件夹要注意:1个vitamio 另一个是vitamio-simple,这2个文件夹后面都要导入到Android studio中

1.2 导入vitamio

打开Android,在file----new----import module ,然后路径选择上面提到的vitamio,点确定;

同样用上面的方法导入vitamio-simple。

导入的vitamio的build.gradle里面对应的sdk版本不一样,需要你对比自己创建的项目,修改为本地的sdk版本等信息,修改好重新sync project。

1.3 把vitamio集成到项目中

1.3.1 关联so库

参照vitamio-simple里的build.gradle里的compile里的例子,关联vitamio库,如

                            compile project(':vitamio')1.3.2 把功能清单对应的文件拷贝过去a、权限:<uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" />

b、配置,这个配置必须不能少,官方也提示了必须加上

                <!-- Don't forgot InitActivity --><activityandroid:name="io.vov.vitamio.activity.InitActivity"android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"android:launchMode="singleTop"android:theme="@android:style/Theme.NoTitleBar"android:windowSoftInputMode="stateAlwaysHidden" /><activity android:name=".VitamioListActivity" >

1.4 把我们之前写的SystemVideoPlayer 复制一份,改为VitamioVideoPlayer,里面的包引用vitamio包里的,特别是videoview,mediaplayer 这个类。

1.5 布局文件 activity_system_video_player.xml复制一份改为activity_vitamio_video_player.xml,里面引用的包也要改为vitamio的类

1.6 在加载布局文件前,初始化vitamio

1.7 当视频播放出错时,跳转到万能播放器vitamioVideoPlayer播放,并把自定义的这个播放器activity  finish()掉

/*** 播放出错*/
class MyOnErrorListener implements MediaPlayer.OnErrorListener {@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {//出错后,系统会自动提示播放出错,同时自己也弹一个吐司//Toast.makeText(SystemVideoPlayer.this,"播放出错",Toast.LENGTH_SHORT).show();//播放出错的原因//1.播放的视频格式不支持  ----解决办法,跳转到万能播放器去播放//1、关闭老的播放器//2、把数据传过去startVitamioPlayer();//2.播放网络视频时,网路中断   -----如果网络确实断了,提示用户网络断了;如果网络断断续续,重新播//3.播放的视频中间有空白  -----只能去重新下载return true;}
}private void startVitamioPlayer() {if (videoview!=null){videoview.stopPlayback();}Intent intent=new Intent(this, VitamioVideoPlayer.class);if(medialist!=null&&medialist.size()>0){Bundle bundle=new Bundle();bundle.putSerializable("mediallist",(ArrayList<MediaItem>)medialist);intent.putExtras(bundle);intent.putExtra("position",position);  //将点击的视频的位置传过去,方便定位播放的是哪个视频}else if (uri!=null){intent.setData(uri);}startActivity(intent);finish();}

1.8 在vitamio万能播放器里,如果播放还是出错,则提示用户,无法播放视频

/*** 播放出错*/
class MyOnErrorListener implements MediaPlayer.OnErrorListener {@Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {//出错后,系统会自动提示播放出错,同时自己也弹一个吐司Toast.makeText(VitamioVideoPlayer.this,"播放出错",Toast.LENGTH_SHORT).show();//播放出错的原因//1.播放的视频格式不支持  ----解决办法,跳转到万能播放器去播放//2.播放网络视频时,网路中断   -----如果网络确实断了,提示用户网络断了;如果网络断断续续,重新播//3.播放的视频中间有空白  -----只能去重新下载//万能播放器出错了,那么弹出一个对话框showErrrorDialog();return true;}
}private void showErrrorDialog() {AlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage("播放出错了");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});builder.show();}

二、补充之前播放控制栏里的切换播放器的按钮

点击后,弹出一个dialog,然后在用户点击确定时,通过intent,把数据传给vitamio播放器,同理,在vitamio里,点击这个把数据传到这个自定义的播放器里。

else if ( v == switchPlayer ) {// Handle clicks for switchPlayerAlertDialog.Builder builder=new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage("当播放画面有花屏时,尝试切换到系统播放器");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {startSystemPlayer();}});builder.setNegativeButton("取消",null);builder.show();}private void startSystemPlayer() {if (videoview!=null){videoview.stopPlayback();}Intent intent=new Intent(this, SystemVideoPlayer.class);if(medialist!=null&&medialist.size()>0){Bundle bundle=new Bundle();bundle.putSerializable("mediallist",(ArrayList<MediaItem>)medialist);intent.putExtras(bundle);intent.putExtra("position",position);  //将点击的视频的位置传过去,方便定位播放的是哪个视频}else if (uri!=null){intent.setData(uri);}startActivity(intent);finish();}

转载于:https://blog.51cto.com/cm0425/1950895

手机影音第十二天,集成vitamio万能播放器相关推荐

  1. android 播放器集成,手机影音第十二天,集成vitamio万能播放器

    Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染.Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐.到目前,全球 ...

  2. Android之集成万能播放器Vitamio

    万能解码框架简介: 1.ffmpeg 多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能.视频格式转换.视频抓图.给视频加水印等. 国内很多手机客户端都是集成这个开源框架. http:// ...

  3. Vitamio打造自己的Android万能播放器

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  4. 使用Vitamio打造自己的Android万能播放器(1)——准备

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  5. 使用Vitamio打造自己的Android万能播放器(6)——在线播放(播放列表)

    前言 新版本的VPlayer由设计转入开发阶段,预计开发周期为一个月,这也意味着新版本的Vitamio将随之发布,开发者们可以和本系列文章一样,先开发其他功能.本章内容为"在线视频播放列表& ...

  6. 使用Vitamio打造自己的Android万能播放器

    前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...

  7. 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)...

    前言 关键字:Vitamio.VPlayer.Android播放器.Android影音.Android开源播放器 本章节把Android万能播放器本地播放的主要功能(缓存播放列表和A-Z快速查询功能) ...

  8. 操作简单的影音文件播放工具-万能播放器下载

    万能播放器是一款操作简单的影音文件播放工具,小伙伴们可以使用万能播放器播放喜欢的影音文件.万能播放器可支持p2p在线点播.边看边下.防病毒等功能.万能播放器几乎兼容市面上所有视频格式,有喜欢的小伙伴们 ...

  9. 使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放

    前言 本章继续完善播放相关播放器的核心功能,为后续扩展打好基础. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over1 ...

最新文章

  1. golang中的aliyunoss
  2. python io_python-IO
  3. mysql数据库熟悉表空间数据文件_Oracle表空间和数据文件
  4. 《金色梦乡》金句摘抄(二)
  5. Python格式化函数format详解
  6. c语言将pwd结果赋给变量,《网络系统管理linux实训》全套PPT电子课件教案-第4章 shell编程.ppt...
  7. 在反复的复习中给自己一点收益,一个机会,一些动力!
  8. 点可云ERP-V7.0-国产免费开源的ERP进销存系统 附带安装详细教程
  9. kindle3使用技巧
  10. Meta标签:让360浏览器默认使用极速模式打开网页
  11. 支持流量计费的云服务器,云服务器流量计费功能
  12. asterisk服务器搭建 入门教程
  13. go文件下载(普通文件和压缩文件)
  14. undefined control sequence_control两个超级实用的短语解析
  15. C语言 提取软件文字,使用OCR文字识别软件如何将图中文字识别提取出来
  16. 英语中 distinct 与 distinctive 的区别
  17. 计算机桌面上的软件是内存上吗,电脑软件运行提示内存不足,占内存小的游戏-...
  18. 光学传感器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  19. Springboot (持续更新)
  20. Motoman机器人离线编程——Motocom32开发简介

热门文章

  1. 集总型的威尔金森功分器(建议用于600MHz以下)
  2. iOS 图标上下浮动的动画效果
  3. 驾驶员行为检测+疲劳驾驶
  4. App复杂动画实现——Rive保姆级教程 | 京东云技术团队
  5. 高级计算机网络 知识点总结
  6. 截至 2005年11月29日 CSDN 单独任命制度下的5星用户名单
  7. 电商系统商品中心产品设计
  8. Jmeter验证码注册接口压力测试实战
  9. 小米笔记本指纹识别失效解决方法
  10. HbuilderX指定部分区域查找和替换