cordova使用webrtc与网页端及移动端视频、语音聊天
最近在做一个移动端与移动端、网页端文字、视频、语音聊天的功能。文字聊天使用websocket,在网上很多资料,也没什么难度。但是在视频、语音聊天上遇到了小小的难点。之前一直在找一些SDK想快速开发,例如opentok、云通讯等,但是项目的使用环境是内网,这些SDK必须要在外网情况下才能使用,需要在他们的服务器上获取信令。后来就想办法自己用webrtc做一个视频语音聊天,因为已经用了websocket了。在webrtc的官网,看源码安卓有3G多,编译后差不多9G,直接吓尿了。就算写了插件给cordova,这个APP也会很大。然后就想直接通过web来实现整个过程,下面记录下问题解决的过程。
1.阅读谷歌WebRTC官方英文文档,了解WebRT总体框架以及工作流程。阅读部分官方托管在githu的源码,确定前端与后台实现方案。
2.编写视频、语音聊天后台,使用Nodejs作为服务端,完成了频道登录、信令交换、通道建立等功能的代码编写。并完成了客户端登录请求、信令发送、信令保存、通道建立、摄像头及麦克风调用代码的编写。通过web端测试通过,但安卓4.0-4.4全部无法使用。
3.通过VPN访问被封的google浏览器开发者网站,查询chrome的WebRTC开发文档,发现只有26版本的WebView才支持WebRTC。通过安卓5.0成功在系统内置浏览器中调用了摄像头与麦克风,并与Web端进行了通信。但在Cordova项目中无法弹出授权窗口,导致视频显示一片漆黑。
4.通过写入安卓权限,成功在5.0的系统中通过Cordova调用系统WebRTC内核实现视频语音聊天。但对系统版本要求较高,兼容性差,但是5.0系统刚出几个月,普及面小且占用内存更大,因此继续寻找更好的方案。
5.在外国网站上查阅了大量资料,最后开始尝试提取安卓5.0的WebView内核,并成功移植到项目中,使得cordova项目脱离安卓系统本身的WebView,直接使用移植来的WebView,成功在安卓4.0-5.0所有平台上成功完成视频、语音聊天,并测试通过。至此,移动端与web端的视频、语音聊天功能Demo完成。
此博客不再维护,已经转CSDN。最后内核问题,很多人问,这个都是的几年前写的了,现在应该不存在了,如果还需要在4版本上做,可以使用crosswork插件,直接替换cordova安卓内核即可,比我当年方便多了。
cordova使用webrtc与网页端及移动端视频、语音聊天的更多相关文章
- 对接网易云信音视频2.0呼叫组件集成到vue中,实现web端呼叫app,视频语音通话。
项目中需要实现视频通话功能,经过公司的赛选,采用网易云信的视频通话服务,app小伙伴集成很顺利.web端需要实现呼叫app端用户.网易云信文档介绍不全,vue的demo满足不了需求,和客服人员沟通,只 ...
- WebRtc(网页即时通讯技术)知识点总结
前言 WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术.并且还支持跨平台:window ...
- 【Javascript Demo】移动端访问PC端网页时跳转到对应的移动端网页
不想通过CSS自适应在PC端和移动端分别显示不同的样式,那么只能通过在移动端访问PC端网页时跳转到对应的移动端网页了,那么怎么跳转呢,网上也有很多文章说明,下面是本人测试有效的方式. 1.效果图 PC ...
- webRTC视频通话,https协议,录制端和播放端
最近做视频直播模块,在网上也看到很多大神写的代码,写的都不错,但不是我想要的,有的可能比较老,不支持https协议,有的又将直播端和显示端放在一个程序中,不利于我使用,则本篇着重添加了https协议( ...
- 网页背景H5视频自动播放---PC端、移动端兼容问题完美解决方案(IOS、安卓、微信端)
最近公司官网需要使用视频当做banner背景且自动播放,并且因为是官网需要做到PC端和移动端都可以适配兼容,这些问题很是头疼: 兵来将挡,水来土掩,进过查阅相关技术资料,现已完美兼容PC端和移动端.下 ...
- EasyNVR摄像机网页无插件直播方案H5前端构建之:如何区分PC端和移动端
背景分析 随着互联网基础设施建设的不断完善和发展,带宽的不断提速,尤其是光纤入户,4G/5G/NB-IoT各种网络技术的大规模商用,视频随时随地可看.可控的诉求越来越多,尤其是移动应用技术和前端技术的 ...
- 如何直接在 PC 端获取其它端设备的 UserAgent 信息呢?
如何直接在 PC 端获取其它端设备的 UserAgent 信息呢 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5909615.html 序 希望收 ...
- js判断游览器是移动端还是PC端
js判断网页游览器是移动端还是PC端 <script type="text/javascript"> function browserRedirect() { var ...
- 如何解决PC端和移动端自适应问题?
做网页时,我们通常需要考虑到不同电脑屏幕尺寸,以及不同手机屏幕大小等问题,解决样式发生改变的情况,那么如何解决呢?现在主要是采用自适应来解决高度,宽度的,以及图片自适应问题,下面就PC端和移动端来总结 ...
随机推荐
- spark性能调优 数据倾斜 内存不足 oom解决办法
[重要] Spark性能调优——扩展篇 : http://blog.csdn.net/zdy0_2004/article/details/51705043
- SQL数据库简单的建立与操作
数据类型 符号标志 整数型 bigint,int,smallint,mediumint,tinyint 精确数值型 decimal,numeric 浮点型 float,real,double 位型 b ...
- Hadoop 3.0.0-alpha1几个值得关注的特性
1.支持纠删码:意味着更灵活的存储策略,即经常使用的数据利用备份方式存储(3倍存储消耗),冷数据利用纠删码容错(1.4倍存储消耗,但会造成额外的IO及CPU消耗): 2.MapReduce任务支持本地 ...
- java中checked和unchecked 异常处理
有两种类型的异常:一种是checked异常一种是unchecked异常,在这篇文章中我们将利用实例来学习这两种异常,checked的异常和unchecked异常最大的区别就是checked去唱是在编译 ...
- 在Windows下远程连接CentOS6
远程连接linux服务器的方式:以显示的类型来分类,可以分为字符界面和图形界面两种.字符界面软件有SecureCRT.PUTTY等:图形界面有Xmanager.Xdmcp和VNC软件等.
- java程序运行时间
方法一 long startTime = System.currentTimeMillis(); //获取开始时间 doSomething(); //测试的代码段 long endTime = Sys ...
- 慕课网access_token的获取
access_token的接口是微信公众号一个基础接口,access_token接口微信公众号一个非常重要的接口 access_token是微信公众号的全局唯一票据,公众号的所有接口的调用都需要使用到 ...
- 【校招面试 之 剑指offer】第16题 数值的整数次方
方法1:直接求解,但是要注意特殊情况的处理:即当指数为负,且底数为0的情况. #include<iostream> using namespace std; template<typ ...
- centos安装Python插件后找不到对应的插件ModuleNotFoundError: No module named*
题记 在之前的文章中,我在centos服务器装了python3并且给python与pip建立了软链,利用git上传代码到centos服务器之后利用终端运行app.py的时候会报错. 报错: [root ...
- Swift 项目中可能用到的第三方框架
这里记录下swift开发中可能用的框架 , 最近浏览了不少,积累在这里,以后用的时候方便查阅.顺便推荐给大家! 这里的框架都是纯swift的 , 感谢开源 ,感谢大神们 . 下拉刷新 BreakOut ...