android之视频直播与播放Vitamio

直播APP

l  直播原理

直播本质:实时推送/拉取过来的音视频数据


直播相关的协议:

l  RTMP(实时消息的传输协议)

RTMP协议是一个互联网TCP/IP五层体系结构中的应用层协议

RTMP协议可以用来推送又可以用来直播

RTMP协议中基本的数据单元成为消息(Message)


RTMP协议在互联网传输数据的时候,消息会被拆分成更小的单元,成为消息块(Chunk)


二:FLV协议

FLV协议是在大块的视频帧和音频帧头部加入一些标记条信息。

FLV协议在延迟变现  和  大规模并发方面和成熟

FLV非常适合  手机端APP的直播协议

三:HLS

     苹果推出的解决方案:

     将视频分成5~10秒的视频小分片,然后用m3u8索引进行管理。

     HLS在iphone和大部分Android手机浏览器上的支持非常给力,

常用的想QQ和微信朋友圈的URL分享。

什么是m3U8


VItamio操作:

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

Github下载地址:https://github.com/yixia/VitamioBundle

     第一步在GitHub上下载Vitamio的依赖库,下载后的结构为:


之后将Vitamio文件夹作为Module导入到项目中。


将module导入到APP中,作为依赖库使用




或者直接在app的build.gradle中添加


将Vitamio的依赖库导入到APP中!

注意:最好是将Vitamio—res下的raw中的libarm.so   so

文件复制到app res  下的raw中:

之后可能会出现的 问题是:显示api过期等问题,

学要在build,gradle中加入代码:


之后将defaultConfig中的targetSdkVersion设置为21 Vitamio的版本为4.0.0。此版本测试为21 不会出现问题!之后clear一下过程!编辑即可通过!!

清单文件的操作:

添加必要的权限:

<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"/>

导入actiivity

<activity
    android: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"
/>

XML布局的设置:

布局使用io.vov.vitamio.widget.VideoView中的VideoView,切记不要使用原始的VideoView。

 

 

Activity的操作:

1、      检测Vitamio框架是否可以使用

    if(!LibsChecker.checkVitamioLibs(this)) {

            return;

        }

不建议使用模拟器进行测试,真机测试出现 闪退的情况(说明Vitamio不能使用)上面代码直接用Toast进行的是。

2、      初始化加载库文件

   Vitamio.Initialized(getApplicationContext());

3、      判读初始化是否成功(模拟器部分显示不成功)

   Vitamio.isInitialized(getApplicationContext());

返回值为boolean,true表示初始化成功,false表示初始化失败。

4、      设置播放的url地址

mVideoView.setVideoURI(Uri.parse(url));

     5、     设置控制器(this表示系统知道的模式,可以自定义)

MediaControllercontroller = new MediaController(this);

           videoView.setMediaController(controller);

     实现的接口:





函数:



















本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从真实项目中抠出来的设计模式——第一篇:策略模式

有时候因为种种原因导致我们会写出很多丑陋的代码&#xff0c;比如赶工时&#xff0c;短暂性的偷懒&#xff0c;不会设计模式等等导致代码沉积&#xff0c;一个cs上万行代码这样场景是有发生&#xff0c; 当然这里也包括我。。。所以时间充裕一点之后就想重构一下&#xff0c;…

jquery实现单击div切换背景,再次单击回到原来样式

首先来看看效果图&#xff1a; 1.这是默认的的div样式&#xff1a; 2.当我们单击第一个div时的样式&#xff1a; 3.当我们再次单击第一个div时的样式&#xff1a; 如果你需要的效果是这样的&#xff0c;那么请您继续往下面看&#xff0c;如果不是&#xff0c;您也可以看看实…

Java进阶之对象克隆(复制)

转载自 Java进阶之对象克隆&#xff08;复制&#xff09; 假如说你想复制一个简单变量。很简单&#xff1a; int apples 5; int pears apples; 不仅仅是int类型&#xff0c;其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。 但…

wxapkg的html反编译,wxapkg反编译工具包

软件简介 Soft IntroductionWechat App微信小程序反编译解包工具wxapkg及相关文件(.wxss,.json,.wxs,.wxml)还原工具。wxappUnpacker版本V0.3&#xff0c;当前功能如下(分包功能尚未完成&#xff01;)将app-config.json中的内容拆分到各个文件对应的 .json和app.json , 并通过搜…

如何下载网页中的视频成mp4格式

1.在生活中&#xff0c;我们经常在网页上看到某个视频之后想要下载下来&#xff0c;可是&#xff0c;网上大部分的视频都在几大播放器所占领&#xff0c;比如爱奇艺、优酷、腾讯等等&#xff0c;当你在这些上面下载的时候会发现先要让你下载播放器&#xff0c;才能下载视频。这…

微软CNTK 2.0版本发布,支持C#

微软 CNTK 2.0 版本今天正式发布。 CNTK&#xff08;Cognitive Toolkit&#xff09;是微软的深度学习工具包&#xff0c;可以帮助企业加速图像和语音识别进程。有了今天的更新&#xff0c;企业可以在本地或云端结合 Azure GPU 使用 CNTK了。 伴随着今天的新版本发布&#xff0c…

Android碎片Fragment详讲(1)

Fragment Fragment创建的步骤 1、 继承fragment一定是V4包下的 2、 有且只有一个无参的构造方法 3、 如果Fragment需要显示界面&#xff0c;需要重写onCreateView方法 4、 指定布局资源&#xff0c;或者创建布局&#xff0c;返回即可 静态创建frag…

关于人脸和指纹识别共同交流方案

尊敬的各位朋友&#xff0c;各位粉丝&#xff1a; 非常感谢各位能从博客看到关于人脸识别的文章给我的评论以及点赞&#xff0c;也有好多粉丝从博客中直接加我的QQ&#xff0c;找我要js和jar包&#xff0c;我也大部分都给了。还有的找我要源码&#xff01;&#xff01;&#xf…

这些BATJ必考的Java面试题,你都懂了吗?

转载自 这些BATJ必考的Java面试题&#xff0c;你都懂了吗&#xff1f; 题目一 请对比 Exception 和 Error&#xff0c;另外&#xff0c;运行时异常与一般异常有什么区别&#xff1f; 考点分析&#xff1a; 分析 Exception 和 Error 的区别&#xff0c;是从概念角度考察了…

计算机玩游戏特别卡,Win7电脑游戏卡顿怎么办 win7玩游戏卡如何解决

很多人都喜欢在win7系统中玩游戏&#xff0c;而在玩游戏的时候经常会碰到一些故障&#xff0c;比如有很多用户反映的游戏卡顿、玩游戏太卡&#xff0c;这让很多游戏玩家很是苦恼&#xff0c;那么Win7电脑游戏卡顿怎么办呢&#xff1f;下面给大家介绍一下win7玩游戏卡的解决方法…

在IIS上部署你的ASP.NET Core项目

概述 与ASP.NET时代不同&#xff0c;ASP.NET Core不再是由IIS工作进程&#xff08;w3wp.exe&#xff09;托管&#xff0c;而是使用自托管Web服务器&#xff08;Kestrel&#xff09;运行&#xff0c;IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中&a…

2020蓝桥杯省赛---java---A---2(既分数组)

题目描述 代码实现 package TEST;public class Main {public static void main(String[] args) {int ans 0;for(int i1; i<2020; i)for(int j1; j<2020; j) // if(j>i){{if(gcd(i, j) 1) ans;} // }else { // if(gcd(i, j) …

第一章数据库系统基础

第一章数据库系统基础 一、数据库&#xff1a;存储数据的仓库 二、数据库能够做什么&#xff1a; 1.存储大量的数据&#xff0c;方便检索和访问。 2.保持数据的信息一致、完整 3.共享和安全 4.通过组合分析&#xff0c;产生新的有用信息。 三、应用程序和数据库的关系 应用程序…

微信消息提醒与消息数字提示之BadgeView

微信消息提醒与消息数字提示之BadgeView BadgeView 一个可以自由定制外观、支持拖拽消除的 MaterialDesign 风格 Android BadgeView。 GitHub地址&#xff1a;https://github.com/stefanjauker/BadgeView 代码&#xff1a; MainActivity&#xff1a; package com.example.jash.…

西安理工大学计算机专业毕业,西安理工大学什么专业好找工作?毕业工资大概多少?答案在这里...

文/圆梦志愿 马老师西安理工大学是中央与地方共建的省属高水平大学&#xff0c;在本省的知名度较高&#xff0c;是一所实力还不错的理工类高校。那么&#xff0c;西安理工大学就业最好的专业是哪些&#xff1f;学校毕业生的薪资水平如何呢&#xff1f;一起来了解一下吧。一、西…

这些排序算法的使用时机,你都知道吗?

转载自 这些排序算法的使用时机&#xff0c;你都知道吗&#xff1f; 概述 排序有内部排序和外部排序&#xff0c;内部排序是数据记录在内存中进行排序&#xff0c;而外部排序是因排序的数据很大&#xff0c;一次不能容纳全部的排序记录&#xff0c;在排序过程中需要访问外存…

第二章用表组织数据

第二章用表组织数据 一、数据库的完整性大多数是由设计的时候引起的。 二、可靠性准确性数据完整性 三、数据库的四种完整性约束&#xff1a; 1.实体完整性约束 2.域完整性约束 3.引用完整性约束 4.自定义完整性约束 四、数据库数据的数据类型&#xff1a; 1.char:字符类型&…

2020蓝桥杯省赛---java---A---7(回文日期)

题目描述 思路分析 暴力判断 代码实现 package lanqiao;import java.util.Scanner;public class Main {public static String str"";public static boolean isLeap(int year){return (year%40&&year%100!0)||year%4000;}public static boolean check(int …

小学计算机学情分析报告,小学信息技术_重点文字图说话教学设计学情分析教材分析课后反思...

教学设计一、导入师&#xff1a;为了弘扬传统文化&#xff0c;丰富校园生活&#xff0c;我们学校举办了一场“穿越千年&#xff0c;诗文校园”阅读推广活动。活动要求选取古诗、优美散文、自写文章进行艺术加工&#xff0c;最终遴选出十篇文章入驻学校宣传栏&#xff0c;进行推…

RecyclerView的使用

RecyclerView 1. 为什么叫RecyclerView&#xff1f; 1. 不关心Item是否显示在正确的位置&#xff0c;如何显示。 2. 不关心Item之间如何分隔 3. 不关注Item的增加与删除的动画效果 4. 仅仅关注如何回收与复用View 2. 需要引入的类 LayoutManage确定显示…