写点什么

🏆未来可期,WebRTC 成为实时通讯方案的行业标准

发布于: 2021 年 06 月 02 日
🏆未来可期,WebRTC成为实时通讯方案的行业标准

2011 年 Google WebRTC 项目开源。作为 Google 开源的技术标准,而 WebRTC 技术并不是一个可以拿来就用,并且性能很好的产品。本文主要来谈一谈 WebRTC 的优缺点。

发展及现状

WebRTC 技术在被 Google 开源之前,技术就已经被国内很多厂商所使用和青睐。例如,QQ 就使用了 WebRTC 的部分技术。

简介

WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌 2010 年以 6820 万美元收购 Global IP Solutions 公司而获得的一项技术


WebRTC 的发展情况可以从标准规范浏览器支持这两个方面看。

  • WebRTC 标准是由 W3C 和 IETF 所联合制定

  • 在 2016 年 1 月 28 日,W3C 公布了最新的 WebRTC 标准,标准中定义了 WebIDL 中一系列的 ECMAScript API 来允许使用合适的 RTP 的浏览器或设备来接收/发送媒体

  • WebRTC 关于浏览器的实现现状

  • 从 2010 年左右,实时通信只能使用专有软件、插件或 Adobe Flash 进行实时通信;

  • 2013 年,Chrome 和 Firefox 间进行了首次跨浏览器视频通话

  • 2014 年,第一次跨浏览器数据传输得以实现,通过客户端进行实时通信,它被称为 WebRTC,

  • 如今,我们每天都在 Chrome,Mozilla Firefox,Opera,Safari,Edge,iOS 和 Android 的实时互动场景中使用它。

优势之处

  • WebRTC 是开源、 免专利费的项目, 大大节省了开发时间和成本;

  • WebRTC 由 Google 主导, 技术非常先进;

  • Safari 等浏览器以及其他终端逐渐加强对 WebRTC 技术的支持。

优点

  1. 【开发/使用方便】:在 WebRTC 出现之前想要进行实时通信就需要安装插件和客户端,这是一个复杂的过程

  • 现在,WebRTC 技术内置于浏览器中,用户不需要使用任何插件或者软件就能通过浏览器来实现实时通信。

  • 对于开发者来说,在 Google 将 WebRTC 开源之前,浏览器之间实现通信的技术开发是一个很困难的任务,现在开发者使用简单的 HTML 标签和 JavaScript API 就能够实现 Web 音/视频通信的功能

  1. 【使用免费】:WebRTC 技术已经较为成熟,其集成了最佳的音/视频引擎,十分先进的 codec,但是 Google 对于这些技术不收取任何费用。

  2. 【强大的打洞能力】:WebRTC 技术包含了使用 STUN、ICE、TURN、RTP-over-TCP 的关键 NAT 和防火墙穿透技术,并支持代理。

缺点

  1. 【编译 WebRTC 复杂过高】:编译 WebRTC 的源码就是一个比较大的挑战,搭建其复杂的编译环境往往会遇到很多意想不到的问题

  2. 【不稳定因素过多】:WebRTC 技术中很多的参数都是由 GIPS 公司的工程师们依靠经验所设定的值,这就会出现卡顿、延时、回声、丢包、多人视频不稳定等问题

  3. 【设计和部署方案过少】WebRTC 技术缺乏服务器方案的设计和部署

  4. 【传输质量难以保证】:WebRTC 的传输设计基于 P2P,难以保障传输质量,优化手段也有限,只能做一些端到端的优化,难以应对复杂的互联网环境。


比如对跨地区、跨运营商、低带宽、高丢包等场景下的传输质量基本是靠天吃饭,而这恰恰是国内互联网应用的典型场景


  1. 【群聊机制待优化】:WebRTC 比较适合一对一的单聊,虽然功能上可以扩展实现群聊,但是没有针对群聊,特别是超大群聊进行任何优化。

  2. 【设备端适配问题】如回声、录音失败等问题层出不穷。这一点在安卓设备上尤为突出。由于安卓设备厂商众多,每个厂商都会在标准的安卓框架上进行定制化,导致很多可用性问题(访问麦克风失败)和质量问题(如回声、啸叫)

  3. 【对 Native 开发支持不够】:WebRTC 顾名思义,主要面向 Web 应用,虽然也可以用于 Native 开发,但是由于涉及到的领域知识(音视频采集、处理、编解码、实时传输等)较多,整个框架设计比较复杂,API 粒度也比较细,导致连工程项目的编译都不是一件容易的事

总而言之

WebRTC 虽然提供了一套音视频实时通讯的解决方案,但是在实际应用中,由于网络传输、设备适配以及多方通话上都存在很多问题,效果并不理想

技术实现

  • Web 实时通信(WebRTC)是标准,协议和 JavaScript API 的集合,两者的组合可实现浏览器(对等)之间的对等音频,视频和数据共享

  • WebRTC 无需依赖第三方插件或专有软件,而是将实时通信转变为任何 Web 应用程序都可以通过简单的 JavaScript API 加以利用的标准功能


例如,音频和视频电话会议以及对等数据交换,需要在浏览器中提供许多新功能:音频和视频处理功能,新的应用程序 API,以及对六种新功能的支持

网络协议

浏览器将这种复杂性的大部分从三个主要 API 中抽象出来


  • MediaStream:获取音频和视频流

  • RTCPeerConnection:音频和视频数据的通信

  • RTCDataChannel:任意应用程序数据的通信


它只需要十几行 JavaScript 代码,任何 Web 应用程序都可以通过对等数据传输实现丰富的电话会议体验。这就是 WebRTC 的承诺和力量!但是,列出的 API 只是冰山一角:信令,对等设备发现,连接协商,安全性以及新协议的整个层只是将它们整合在一起的一些组件。


实际上,与所有其他浏览器通信不同,WebRTC 通过 UDP 传输其数据。但是,UDP 只是一个起点。要使浏览器中的实时通信成为现实,它需要花费比原始 UDP 多得多的费用。让我们仔细看看。


最新的 Chrome 和 Firefox 浏览器为所有用户提供 WebRTC 支持!话虽这么说,WebRTC 也在浏览器 API 级别以及传输和协议级别上都在积极构建中。因此,未来几章中讨论的特定 API 和协议可能仍会更改

总结

随着移动互联网的、AI、5G 等等新兴技术的高速发展,结合 WebRTC 技术,未来将衍生出更多的应用场景,改变人类的衣、食、住、行等生活方式。

发布于: 2021 年 06 月 02 日阅读数: 153
用户头像

我们始于迷惘,终于更高水平的迷惘。 2020.03.25 加入

🏆 【酷爱计算机技术、醉心开发编程、喜爱健身运动、热衷悬疑推理的”极客狂人“】 🏅 【Java技术领域,MySQL技术领域,APM全链路追踪技术及微服务、分布式方向的技术体系等】 🤝未来我们希望可以共同进步🤝

评论

发布
暂无评论
🏆未来可期,WebRTC成为实时通讯方案的行业标准