最近在做一个移动端与移动端、网页端文字、视频、语音聊天的功能。文字聊天使用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与网页端及移动端视频、语音聊天的更多相关文章

  1. 对接网易云信音视频2.0呼叫组件集成到vue中,实现web端呼叫app,视频语音通话。

    项目中需要实现视频通话功能,经过公司的赛选,采用网易云信的视频通话服务,app小伙伴集成很顺利.web端需要实现呼叫app端用户.网易云信文档介绍不全,vue的demo满足不了需求,和客服人员沟通,只 ...

  2. WebRtc(网页即时通讯技术)知识点总结

    前言 WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术.并且还支持跨平台:window ...

  3. 【Javascript Demo】移动端访问PC端网页时跳转到对应的移动端网页

    不想通过CSS自适应在PC端和移动端分别显示不同的样式,那么只能通过在移动端访问PC端网页时跳转到对应的移动端网页了,那么怎么跳转呢,网上也有很多文章说明,下面是本人测试有效的方式. 1.效果图 PC ...

  4. webRTC视频通话,https协议,录制端和播放端

    最近做视频直播模块,在网上也看到很多大神写的代码,写的都不错,但不是我想要的,有的可能比较老,不支持https协议,有的又将直播端和显示端放在一个程序中,不利于我使用,则本篇着重添加了https协议( ...

  5. 网页背景H5视频自动播放---PC端、移动端兼容问题完美解决方案(IOS、安卓、微信端)

    最近公司官网需要使用视频当做banner背景且自动播放,并且因为是官网需要做到PC端和移动端都可以适配兼容,这些问题很是头疼: 兵来将挡,水来土掩,进过查阅相关技术资料,现已完美兼容PC端和移动端.下 ...

  6. EasyNVR摄像机网页无插件直播方案H5前端构建之:如何区分PC端和移动端

    背景分析 随着互联网基础设施建设的不断完善和发展,带宽的不断提速,尤其是光纤入户,4G/5G/NB-IoT各种网络技术的大规模商用,视频随时随地可看.可控的诉求越来越多,尤其是移动应用技术和前端技术的 ...

  7. 如何直接在 PC 端获取其它端设备的 UserAgent 信息呢?

    如何直接在 PC 端获取其它端设备的 UserAgent 信息呢 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5909615.html 序 希望收 ...

  8. js判断游览器是移动端还是PC端

    js判断网页游览器是移动端还是PC端 <script type="text/javascript"> function browserRedirect() { var ...

  9. 如何解决PC端和移动端自适应问题?

    做网页时,我们通常需要考虑到不同电脑屏幕尺寸,以及不同手机屏幕大小等问题,解决样式发生改变的情况,那么如何解决呢?现在主要是采用自适应来解决高度,宽度的,以及图片自适应问题,下面就PC端和移动端来总结 ...

随机推荐

  1. Cache Lucene IndexReader with Apache Commons Pool

    IndexReaderFactory.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...

  2. Delphi声明Record变量后直接初始化

    TARec = record    A1: string;    A2: string;  end; TBRec = record    A1: string;    A2: string;    A ...

  3. The maximum column size is 767 bytes (Mysql)

     ERROR app.wsutils 419 INCRON: Error: ('HY000', '[HY000] [MySQL][ODBC 5.2(w) Driver][mysqld-5.7.7-rc ...

  4. Cookie进行会话管理

    一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...

  5. Alberta family's QR code is world's largest corn maze

    BY DARREN WEIR     SEP 10, 2012 IN ODD NEWS Link:http://www.digitaljournal.com/article/332512   Laco ...

  6. leetcdoe 175. Combine Two Tables

    给定两个表,一个是人,一个是地址,要求查询所有人,可以没有地址. select a.FirstName, a.LastName, b.City, b.State from Person as a le ...

  7. PAT L1-020 帅到没朋友(模拟数组)

    当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋友圈的个数:随后N行,每行首先给 ...

  8. iis 应用程序连接池 在计算机“.”上没有找到WAS服务

    重新打开控制面板----打开或关闭windows功能,全部勾选internet information services 可承载的web核心. internet信息服务.microsoft.net f ...

  9. LocalBroadcastManager 的使用

    一.使用本地广播发送一条广播(本例为自己发送自己接收,本地广播也可以是其他应用接收)然后接收到广播时回调Receiver类中的回调方法onReceive()在此方法中自定义发出通知 代码 packag ...

  10. Electronic Trading[z]

    This article is to discuss the operation model between Fund Managers(Client) and Broker Firms. They ...