首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

1800字带您了解视频会议、视频聊天底层技术:WebRTC 网页实时通信

你好,这里是网络技术联盟站。

现在,基本 Web 的网络时间已经变得无所不能,甚至可以说一切皆可 Web,虽然有点夸张,但是也体现了 Web 技术的强大性。比如在以前,我们要开视频会议,是不是得买一台专业的会议直播系统,会议的双方起初都要花费高昂的代价才能建立起这个系统,并且使用的时候非常麻烦。

但是再想一想现在我们要开直播会议呢?是不是你的老大或者行政直接在群里发一下:

xxx部门的同事,今天下午6点我们将和北京研发中心xxx部门的同事开视频会议讨论xxx事情,会议地址:XXXXXX,验证码:6666,请大家及时参加。

很明显,现在的视频会议多简单,一个 URL 就搞定了,这要归功于 WebRTC 的强大功能,它为开发人员和企业打开了无限可能的大门。

什么是 WebRTC?WebRTC 的工作原理是什么?

带着这个问题,瑞哥今天就带着大家好好聊一聊 WebRTC!

还是那句话,没有深奥得深不见底的技术,技术都是来源于生活,技术的底层都是艺术的结果,瑞哥要做的事情就是将晦涩的技术用人话讲出来,人人都能看得懂!💪💪💪

让我们直接开始吧!

WebRTC 诞生的背景

互联网如今已经是全球最大的基础设施,将其称为基础设施一点也不为过,试想一下,如果没有互联网,那么历史就得倒退到工业时代,那个时代对于现在先进的互联网时代,跟古代没啥区别。

从互联网诞生开始,从传输数据包开始,互联网的发展一刻也没有停止,多媒体通信的发展可以追溯到 1990 年代中期在互联网上建立 IP 语音 (VoIP) 呼叫的系统。

Gmail 视频聊天在 2008 年开始流行,2011 年,谷歌推出了 Talk ,然后收购了 GIPS,这家公司开发了 RTC 所需的许多组件,例如编解码器和回声消除技术,谷歌开源了 GIPS 开发的技术,并与互联网工程任务组 (IETF) 和万维网联盟 (W3C) 的相关标准机构合作,形成标准化,2011 年 5 月,爱立信构建了 WebRTC 的第一个实现。

什么是 WebRTC?

  • 英文全称:Web real-time communication
  • 中文名称:网页实时通信

WebRTC 于 2011 年作为 W3C 标准提出,WebRTC 规范包括开发人员可以在浏览器中使用的 JavaScript API 和一套通信协议,后来,各个科技巨头的开发人员开始将 WebRTC 整合到他们的软件中,自 2017 年以来,所有主流浏览器都支持 WebRTC,比如谷歌浏览器、火狐浏览器、苹果的 Safari 浏览器、微软的的 Edge 浏览器,W3C 于 2021 年最终确定了该标准。

我们访问这个网址可以看到https://www.w3.org/2021/01/pressrelease-webrtc-rec.html.en:

WebRTC 官网

代码语言:javascript
复制
https://webrtc.org/

复制代码

界面是英文版的,我们可以切换简体中文版:

点击右上方🌐图标:

在这里切换成简体中文:

我们可以点击【指南】查看 WebRTC 使用说明。

WebRTC 是如何工作的?

WebRTC 使用三个主要组件来完成对等交互,这三个组件非常重要,而且相互独立,主要有:

媒体流

媒体流是一种 API,主要是提供访问设备摄像头和麦克风的方法,可以通过消耗的数据控制设备的多媒体活动,负责处理有关捕获和渲染媒体的设备信息,理想情况下,它支持通过设备流式传输音频和视频数据。

对等连接

对等连接主要是在不借助任何中间连接的情况下创建直接通信,对等点甚至可以获取音频和视频并对其进行处理。

数据通道

数据通道有助于在对等点之间创建任意数据的双向传输,可以确保通过网络可靠地传输流。

设置和运行 WebRTC 连接前提

设置和运行 WebRTC 连接一般有三个前提:

  • 信令
  • NAT 穿越
  • 压缩解压

信令

WebRTC 信令是指在需要时建立、监视和终止通信会话的处理,可以帮助两个对等方了解彼此的能力和网络地址。

NAT 穿越

NAT 穿越允许路由器修改数据包来供多个设备通过单个公共 IP 地址共享资源。

压缩解压

在对等体双方交换数据的时候原始音频和视频文件太大了,如果直接发送原始文件,则连接将非常慢甚至直接会断开。

所以需要压缩数据来提高传输效率,一旦设备通过对等连接接收到媒体,就必须对其进行解压缩,这个过程是由编解码器进行完成的。

WebRTC 使用五个编解码器:

处理音频文件:

  • PCMU(单声道)
  • PCMA(单声道)
  • Opus(两个立体声通道)

处理视频文件:

  • VP8
  • H.264/AVC

WebRTC 工作过程

  • 第 1 步:通过网络摄像头或麦克风访问媒体流
  • 第 2 步:基础网络端口和 IP 地址等相关信息,这些信息需要通过信令与其他浏览器共享
  • 第 3 步:媒体数据参数信息
  • 第 4 步:传输媒体数据

WebRTC 优点

  • 支持主流网络浏览器,适应性强
  • 开源软件免费
  • 提供比其他各种流媒体系统更高级别的安全性,无需第三方软件
  • WebRTC 不仅限于浏览器,也可用于移动应用程序
  • WebRTC 不仅适用于语音或视频通话,也可以使用它来构建群呼服务、添加录音等
  • WebRTC 通过自适应网络编码确保在恶劣的网络条件下可靠发布

WebRTC 缺点

  • WebRTC 依赖于互联网,所以不支持离线操作
  • WebRTC 作为一个服务端,所以需要占用服务器资源,硬件要求高

总结

WebRTC 使得 Web 浏览器和设备之间实现实时语音、文本和视频通信功能,本文着重于理论的讲解,关于如何使用 WebRTC 可以根据项目去适当看一下 API,使用不难,并且方案也很多,用的恰到好处才是最重要的。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/9596ea824af54f8071684570f
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券