最近在做一个移动端与移动端、网页端文字、视频、语音聊天的功能。文字聊天使用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. 有3D效果的进度条

    // The Unofficial Newsletter of Delphi Users - Issue #12 - February 23rd, 1996 unit Percnt3d; (* TPe ...

  2. 可以foreach的 必须继承IEnumable 接口才行

    只要是继承IEnumable 都可以用foreach遍历

  3. VB 共享软件防破解设计技术初探(一)

    VB 共享软件防破解设计技术初探(一) ×××××××××××××××××××××××××××××××××××××××××××××× 其他文章快速链接: VB 共享软件防破解设计技术初探(二)http ...

  4. SSH框架整合思想

    --------------------siwuxie095                                 SSH 框架整合思想         1.SSH 框架,即 Struts2 ...

  5. 迭代器&生成器&yield异步

    迭代器 #迭代器是访问集合元素的一种形式,迭代器从集合的第一个元素开始访问,直到所有的元素被访问# 结束才结束,迭代器只能往前访问,不能往后访问,比如你先访问1,在访问2,在访问3.如果已经# 访问到 ...

  6. 交叉字符串 · Interleaving String

    [抄题]: 给出三个字符串:s1.s2.s3,判断s3是否由s1和s2交叉构成.(洗牌) 比如 s1 = "aabcc" s2 = "dbbca" - 当 s3 ...

  7. Weblogic 12c 一个domain建多个server(端口)

    一.基本概念 我觉得如果刚接触Weblogic,首先应该做的是明白几个基本的概念,可以从一张图入手: 1. 域(domain) 它是一个基本管理单元: 每个域包含一个管理服务器(Administrat ...

  8. 批量去重URL地址并剔除打不开网址

    #coding=utf-8 import os import httplib import socket dictlist ={}; def ReadHost(): hosts = []; obn = ...

  9. linux系统命令笔记

    一.linux系统目录 /bin 系统命令目录 /dev 设备目录 /home 每个系统用户在home下都有一个目录, 每个用户登录到系统后会自动登录到这个目录下, root用户会在/root文件夹下 ...

  10. .NET 发送邮件

    //邮件配置 public static string mail_smtp = System.Configuration.ConfigurationManager.AppSettings[" ...