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 官网
界面是英文版的,我们可以切换简体中文版:
点击右上方🌐图标:
在这里切换成简体中文:
我们可以点击【指南】查看 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 作者【wljslmz】的原创文章。
原文链接:【http://xie.infoq.cn/article/9596ea824af54f8071684570f】。未经作者许可,禁止转载。
评论