WebRTC(全称 Web Real-Time Communication),即网页即时通信。 是一个支持网页浏览器进行实时语音对话或视频对话的技术方案。从前端技术开发的视角来看,是一组可调用的API标准。在WebRTC发布之前,开发实时音视频交互应用的成本是非常昂贵,需要考虑的技术问题很多,如音视频的编解码问题,数据传输问题,延时、丢包、抖动、回音的处理和消除等,如果要兼容浏览器端的实时音视频通信,还需要额外安装插件。

WebRTC的出现、发展和被业内标准组织(如W3C)等普遍认可,对于当下和未来大前端技术发展具有重要的意义。

降低在web端的音视频交互开发门槛:

1)以往的音视频交互开发对于Web开发者而言具有一定技术门槛;
    2)现在借助于WebRTC,Web开发者通过调用JS接口,可快速的实现音视频交互应用。

避免依赖、插件造成的次生问题:

1)以往的音视频交互应用构建依赖于各种插件、软件和服务器等;
    2)现在借助于主流浏览器即可形成端到端的音视频交互。

统一化和标准化对传统音视频交互环境差异性的规避:

1)以往音视频交互需要面对不同的 NAT 、防火墙对媒体 P2P 的建立带来了很大的挑战;
    2)现在WebRTC 中有P2P 打洞的开源项目 libjingle ,支持 STUN,TURN 等协议。

更高效优化的算法、技术对于音视频交互性能的提升:

1)WebRTC 通过NACK、FEC技术,避免了经过服务端路由中转,减少了延迟和带宽消耗;
    2)还有 TCC + SVC + PACER + JitterBuffer 等技术对于音视频流畅性进行了优化。

WebRTC内容丰富,主要的技术特征包含以下几点。

1)实时通讯:

WebRTC是一项实时通讯技术,允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。

2)无依赖/插件:

WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

3)协议栈 众多:

WebRTC并不是单一的协议,包含了媒体、加密、传输层等在内的多个协议标准以及一套基于 JavaScript的 API,它包括了音视频的采集、编解码、网络传输、显示等功能。通过简单易用的 JavaScript API ,在不安装任何插件的情况下,让浏览器拥有了 P2P音视频和数据分享的能力。

同时WebRTC 并不是一个孤立的协议,它拥有灵活的信令,可以便捷的对接现有的SIP 和电话网络的系统。即时通讯聊天软件app开发可以加蔚可云

主流浏览器都支持 WebRTC 标准 API ,因此也让浏览器之间无插件化的音视频互通成为可能, 大大降低了音视频开发的门槛,开发者只需要调用 WebRTC API 即可快速构建出音视频应用。

WebRTC主要面向三类开发者的API设计:

1)对于Web开发者的API:框架包含了基于JavaScript 、 经过W3C认证了的一套API标准,使得web开发者可以基于这套API开发基于WebRTC的即时通讯应用;
    2)对于浏览器厂商的API:框架同样包含了基于C++的底层WebRTC接口,对于浏览器厂商底层的接入十分友好;
    3)浏览器厂商可自定义的部分:框架中还包含浏览器厂商可自定义的音视频截取等扩展部分。

从上节框架中可以看到,WebRTC主要有音频、视频引擎和传输三部分组成,其中又包含众多的协议和方法等。

1)Voice Engine(音频引擎):

a、Voice Engine包含iSAC/iLBC Codec(音频编解码器,前者是针对宽带和超宽带,后者是针对窄带);
    b、NetEQ for voice(处理网络抖动和语音包丢失);
    c、Echo Canceler(回声消除器)/ Noise Reduction(噪声抑制)。

2)Video Engine(视频引擎):

a、VP8 Codec(视频图像编解码器);
    b、Video jitter buffer(视频抖动缓冲器,处理视频抖动和视频信息包丢失);
    c、Image enhancements(图像质量增强)。

3)Transport。

WebRTC是基于浏览器端到端的连接(P2P)实现的.

由于不需要服务器中转,所以获取连接对象的网络地址的方式,是借助于ICE、STUN、TURN等辅助内网穿透技术(NAT)得到对应主机的公网网络地址和端口等网络定位信息。

明确网络定位是建立端与端直接通讯的基础。

即时通讯开发之开源工程WebRTC原理相关推荐

  1. 即时通讯开发时Https的安全性原理

    那么什么是HTTPS?我们看维基百科给HTTPS的定义:HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议.HTTPS经由HT ...

  2. im即时通讯开发:进程被杀底层原理、APP应对被杀技巧

    本文的技术原理讲解透彻.系统源码分享到位.样例代码也很有参考意义,希望能对有同样兴趣爱好的Android开发者.IM开发者.推送系统开发者等,带来对于Android进程保活技术的深入理解. 一直以来, ...

  3. 基于Netty实现分布式IM即时通讯开发

    计算机编程的学习,能不能把知识学到手,讲究的是动手实践.在我编写的文章中,基本都是以实践代码验证结果为核心来讲述文章内容. 可能有人不知道 Netty 是什么,这里简单介绍下: Netty 是一个 J ...

  4. Android 即时通讯开发小结(一)

    本文将基于 IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 客户端架构 作为一个 IM 软件,最重要的一个特性就是保证消息的达到率和实时性. ...

  5. im即时通讯开发:移动端需要面对的问题

    统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连接方式,协议选择)和常见问题. P2P还是服务器中转? IM通讯方式无非两种选择:设备直连(P2P)和通过服务器中转. 1P2P ...

  6. 即时通讯开发如何构建一套移动端消息推送系统

    消息推送作为移动端 APP 运营中的一项关键技术,已经被越来越广泛的运用. 本文追溯了推送技术的发展历史,剖析了其核心原理,并对推送服务的关键技术进行深入剖析,围绕消息推送时产生的服务不稳定性,消息丢 ...

  7. im即时通讯开发:万人群聊消息

    传统意义上的IM群聊,通常都是像微信这样的500人群,或者QQ的2000人群(QQ有3000人群,但那是单独收费的,也就意味着它并非无门槛标配,能用上的人并不多). 自从国外某号称"世界上最 ...

  8. im即时通讯开发的那些坑:架构设计、通信协议和客户端

    有过移动端开发经历的开发者都深有体会:移动端IM的开发,与传统PC端IM有很大的不同,尤其无线网络的不可靠性.移动端硬件设备资源的有限性等问题,导致一个完整的移动端IM架构设计和实现都充满着大量的挑战 ...

  9. 即时通讯开发用什么语言开发_如何开始开发者通讯

    即时通讯开发用什么语言开发 Developing software has become a collaborative effort. Many development platforms are ...

  10. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 相关推荐阅读:. Android即时通讯 ...

最新文章

  1. linux系统打包工具,Linux 压缩、解压缩和打包工具
  2. 让你的 wowza server提供 RESTful web 服务
  3. 超越Swin,Transformer屠榜三大视觉任务!微软推出新作:Focal Self-Attention
  4. 个人总结的一个中高级Java开发工程师或架构师需要掌握的一些技能...
  5. 读取html文件,让其中的内容和notepad打开这个html的样子一样。
  6. mysql安装条款_mysql 安装注意
  7. 写给准备参加秋招的学弟学妹们~一定要来看哦~
  8. 【译】用SQL统一所有:一种有效的、语法惯用的流和表管理方法
  9. FCC 中级算法题 Where art thou
  10. 二叉树构造c语言实现,递归创建二叉树c语言实现+详细解释
  11. python爬虫入门实例
  12. 通达信 移动平均算法_高德网络定位算法的演进
  13. Windows 10 输入法莫名其妙变为繁体的解决方法
  14. Axure RP Extension for Chrome的安装
  15. python画图修改背景颜色_如何在 Matplotlib 中更改绘图背景的实现
  16. 5.雅思口语——别再用delicious food啦
  17. 国外数据挖掘方面的经典博客
  18. 关于Context的理解(转)
  19. JVM调优:卡表(CardTable)简介
  20. redo和undo日志

热门文章

  1. 【Vue插件】一款很好用的vue日历插件——vue-sweet-calendar
  2. OpenCV学习笔记-Shi-Tomasi角点检测
  3. 基于Java坦克大战小游戏设计(3)
  4. Java、JSP高速公路收费系统
  5. 谁说淘宝客不赚钱?用此招,票子流量手到擒来!
  6. c语言中整形常量表达形式,C语言中整型常量的表示方法.doc
  7. 常用的android脱壳工具,Android万能脱壳机
  8. TCP的request_sock与sock
  9. 小蚁智能摄像机无法连接服务器,小米摄像头连接不上
  10. unity android录制视频教程,Unity移动端视频录制,Android和IOS都支持