肥宅钓鱼网
当前位置: 首页 钓鱼百科

webrtc最全面的指南(你未必知道的WebRTC前世)

时间:2023-08-05 作者: 小编 阅读量: 2 栏目名: 钓鱼百科

你未必知道的WebRTC前世图片来源@视觉中国文丨凡泰极客如果你是一位工程师,想必听过WebRtc,就算没有开发过;如果你是一位互联网用户,大概率使用过WebRTC,虽然可能没有意识到在这个视频为王的时代,我们漫谈一下这个技术的。

图片来源@视觉中国

文丨凡泰极客

如果你是一位工程师,想必听过 WebRtc,就算没有开发过;如果你是一位互联网用户,大概率使用过 WebRTC,虽然可能没有意识到。在这个视频为王的时代,我们漫谈一下这个技术的来龙去脉以及一些有趣的应用。

WebRTC 关卿底事?

文言「底」也表示疑问,是「何」、「什么」的意思。如南唐中主李璟在调侃冯延巳时所写「风乍起,吹皱一池春水,干卿底事?」

如果说 20 世纪人类的书写工具是笔、通讯方式是邮局寄信,那么 21 世纪初人类的书写工具就变成键盘、通讯方式就是电子邮件/短信/即时通信聊天,而从现在开始的可见未来,手机摄像头/VR 设备就是你的书写记录这个世界的工具、实时网络通讯就是你的通讯方式。

视频成了娱乐、学习、商务会议、社交、电商的载体,人们逐渐不再有耐心阅读文字性的信息,现在连购买一件自安装的家具,它都附带二维码,用户只要一扫即打开安装指南的视频,再也不用反复研究纸质说明书里那往往画的非常蹩脚的安装图。

视频不仅是信息的展现方式,它从一部部的 mov、jpeg4、wmv(你硬盘上熟悉而又陌生的文件对不对?)变成一个个的播放器,再变成一个个的 App,然后又从这种单向的“录制 上传 下载  找播放器打开  播放”,变成了“现场录制  边录边播  实时收看”,再变成视频与即时通讯工具、会议工具融合的双向“录制与播放”。

远程视频会议已经成为如今办公的标配

传说中的“实况直播”终于发展到一个“平民化”的阶段。WebRTC,全称 Web Real-Time Communication,就是这么一种基础技术,它促进你用新的“笔”(智能视频设备,例如你的手机)以影像而非文字方式去记录与沟通。

它的奥妙在两部分,自然就是:WebRTC!这不是显而易见的废话吗?还真不是… 但我们先聊一下 RTC,实时网络通讯。

与 RTC 相比,WebRTC 仅仅是针对网页实时通信所建立的标准,其中也只提供了基础的前端功能进行实现。我们并不能简单地将 WebRTC 与 RTC 划等号。

“感觉上很快”就是实时?

WebRTC 强调“实时通讯网络”。网络早已无处不在了,但是否“实时”呢?大部分情况下不是。

首先,当前互联网上最重要最基本的 HTTP 协议并不是为“实时”应用设计的,当你访问一个网站的时候,你发起请求,等候网站的服务器把内容应答送回到你的 PC 或者手机设备,虽然这个应答可以非常快,但本质上是“请求-等候-应答”,这个“等候”,往往是一个不易控制的时间变量。

  • 电子邮件是不是“实时”的呢?显然也不是,虽然相比传统的邮递快了十万八千倍,但是它本质上是“存储-转发”(Store-and-Forward)的机制,是由互联网上很多的邮件服务器以接力的方式,在某个最优网络路径上把电邮从某甲的设备送到某乙的设备,任何中间环节都可能延迟。
  • 聊天工具是不是实时?它相比电子邮件而言,有更加“在线”的会话感 – 一个群里聊天信息来来回回、这边发那边看,好像很“实时”,但它的技术本质依然是“存储-转发”,消息接收方不在线没关系,只要“上线”(打开 App)就能收到,也不需要马上回复。

事实上,对快慢的感觉不能定义实时。网络的低延迟、高带宽固然是实时性的一些保障,但不等同于实时。

用大白话来描述的话,实时视频的目标,是把正在某个地方A发生的人和事,以几乎零延迟、不失真的方式“同步”到另外一个地方 B,让 B 的人瞬间看到、听到,并且反之亦然。人和事都是在不断的变化中,视频需要以“流”的方式源源不断的向远端推送更新,A、B 两地的人虽然隔着十万八千里,但是他们之间的网络能把“视频流”瞬间同步,让彼此感觉近在咫尺,这就是“实时”。

那么现在我们的“实时通讯网络”,距离真正的实时还有多远?

构建元宇宙?无限追求实时

上述问题的简单答案是,有点远。

我们对“实时”的追求是无限的,详细一点的解释,可以借最近热炒的“元宇宙”作为例子。元宇宙,是一个“仿真”或者说“全真”的互联网,它的特点之一,是利用极其强大的实时网络,把物理世界里事物的无限细节信息化并瞬间传播给接收者,使其通过一些特殊设备去复原这些信息并最大程度感受到在原发地事物的原本样子。

这些信息能包括些什么呢?例如有空间感的立体声效(Spatial Audio),让你在一个线上会议室里能听到讲话的人在自己的什么方位,让你在一个虚拟社交沙龙里能听到轻微的背景音乐、左边一群人的闲言碎语、右边吧台上酒保的调酒声;例如能足以让远端设备渲染还原成逼真 3D 效果的人或物的特征数据,大至街景建筑小至毛发与脸部表情,让你在虚拟空间里与其中的物品或人进行互动,像真的一样; 假如有一天我们发明出能收集味道并信息化并在远端通过刺激大脑皮层还原味道的设备,那么这又是一种需要传送的数据。一句话,我们希望把任何物理距离以外的东西,色香味俱全的“同步”到自己的大脑。

如果说我们现在的互联网是 2D 的话(即你只能面对一个屏幕这样的二维平面去交互感知),元宇宙就是下一代 3D 互联网,你“沉浸”在其中,你被实时送达的数据包裹,你的眼耳鼻舌身意“六根”都在里面。不要以为这是科幻,一些技术已经看的到摸得着,简单者如 hubhub,复杂花哨者如 Google 的 Starline。

有兴趣的小伙伴可以去看看 Metaverse Primer

在 Matthew Ball 的“元宇宙入门”( Metaverse Primer)中,提到实时网络是让这一代沉浸式互联网成为可能的8种最核心技术之一。海量数据的极低延迟实时传输能力,目前技术上还是有点遥远。

虽然元宇宙还在“炒作曲线”的不知道哪个点上,可是一些实实在在的商业应用场景确实已经可以基于实时的视频技术进行构建。除了大家熟悉的直播带货、娱乐互动,还有虚拟展会、实时教练培训、远程医疗(Telehealth)等等应用,相信任何线下的场景,只要技术允许,都会有产生线上仿真的一天。

去中心化的通讯方式?

WebRTC 的里的“Web”部分,并非简单无意义的泛指,而是特指 Web Browser(浏览器)。这个标准以及实现它的技术,目前均已内置在各主流浏览器中,理论上让任何用户通过任何 PC、Mac、iPhone、Android 甚至车载系统的浏览器,即可发起彼此之间的直接视频语音通讯。

也就是说,张三和李四,不管人在何方,理论上只要各自有一台设备运行一个支持 HTML5 标准的浏览器,即可以无需经过“中间商”(互联网大平台、电信运营商等等)的通讯服务或渠道而建立这两个浏览器之间的直接连接,实现传说中的“点对点”(Peer-to-Peer)视频通讯和文件分享!如果还有王五、陈六、何七几位呢?欢迎加入,组成一个完全无障碍的、无服务器的、自组织的对等网络,每个人的浏览器都是这个网络的节点,共同进行视频会议、文件分享。

有点像 VR Pro Max 的感觉

无中间商赚差价、无互联网大平台收集通讯各方的隐私数据,个人掌握自己的信息安全,也不依赖任何第三方,是不是忽然有一种自由飞翔的感觉?去中心化、点对点、对等网络,让我们回忆到互联网美好的蛮荒时代 – BT、电驴、迅雷… the good old days…

可惜暂时来说,上述情形只是一种理想,因为互联网的实际环境复杂,例如我们每个人的上网设备实际上都是在某个小区宽带、移动运营商网络、酒店 WiFi、公司局域网等等的后面,互联网实际上是由无数这样大大小小的局部网络通过一系列的网络设备、网络协议进行互联互通的,链路上信息的传递通过不同网络的设备进行层层转发和网络地址/端口的“翻译”转换,最终才到达某个个体设备。

在深圳南山区科技园某公司的员工张某,如何让其浏览器发现并连接北京朝阳区某小区的群众李某的浏览器设备地址,从而建立起点对点直连?没有直接办法。

现有的技术实现方案,依然是中心化的,即张某与李某,不得不通过一个第三方的服务来“发现”彼此的地址,这个环节叫做 Signaling(信令)。

“去中心化”临门一脚,暂时没有现成技术,比较可惜。

区块链WebRTC 有没有的搞?

有一些这方面的研究探索,待有志者进一步深入。

首先是关于技术本身的优化与扩展。例如有人提出利用 Kademlia(一种 DHT/分布式哈希表的算法,被以太坊、Storj 等区块链用于组网)实现信令服务的去中心化。一篇 IEEE 的研究论文则探讨了通过区块链智能合约去提高 WebRTC 的安全性。

区块链能借助WebRtc实现新的突破吗

其次在应用方面,有一种方案提出,在疫情以来远程办公比重日益增加的情况下,出于企业信息安全、合规留痕、工作效率管控等等原因,需要对例如销售、服务等各种发生在公司外部的远程通讯活动进行记录,依靠现有的基础设施提供商的 CDR(Call Detail Record)难以确立单一可信来源、追踪上下文,可以结合区块链与智能合约,对 WebRTC 的通讯记录数据出块,实现单一可信源拷贝、不可篡改以及分布式存储等好处。

很多金融机构的服务,例如开户或者购买理财产品等,需要远程视频见证,也许是区块链 WebRTC 的一个很好的应用场景。

WebRTC的未来与Google的算盘

讲到未来,我们不得不先回顾一下这个技术的历史。

2021 年 1 月 26 日,W3C 正式宣告 1.0 标准(“WebRTC 1.0:Real-Time Communication Between Browser”)。此前 WebRTC 经历了整整 10 年的发展:2011-2014 是这个技术的探索期,大家的主要疑问是:我是否应该尝试这个技术?2015-2019 是这个技术的成长期,随着所有主流浏览器对 WebRTC 的支持,业界的问题变成:我该如何利用这个标准技术?有些什么应用场景?2020 年开始迄今,是这个技术应用的差异化时期。

WebRtc 的标识具有典型的 Google 配色

2020 年的新冠疫情,被认为对 WebRTC 技术产生直接促进性影响。视频会议无处不在,Zoom 变成一个家喻户晓的品牌(在国内市场自然是某些互联网巨头的相应品牌),可以说大众对云端视频会议的认知与接受度得到史无前例的加强。

同样是 W3C 的标准,WebRTC 有没有机会像 HTTP 之于“古典互联网”一样,成为下一代互联网(无论你称它为“实时通讯网络”、“Web3.0”还是“元宇宙”)的基础协议?回答这个问题,得了解一下 WebRTC 背后的真正“操盘手”。

操盘手是 Google – 它不仅推动 WebRTC 成为一个互联网标准,也贡献了大部分的底层开源技术。十年前 Google 干这事的动机是什么呢?大概有这么几个原因:

  • 押注这十年的技术发展,让视频编码技术、视频质量、网络带宽、运算资源都有重大发展,视频成为网上最最重要的应用载体;
  • 很多企业当时的视频会议还是企业内部的、设置使用繁复的、需要专用设备的那种技术。随着云计算的发展,视频会议会不会变成云服务?很有可能;
  • 视频应用需要专门的软件工具(回忆一下十年前五花八门的视频播放器?),Google 不控制计算机操作系统,但是它的 Chrome 浏览器已经开始击败微软和火狐,成为无处不在的存在。把一个视频技术内置于浏览器,给用户带来极大便利,视频内容与网页内容随时交织在一起,打开即看,下载什么视频播放器呢?
  • 最重要一点来了,当年 Google 在视频会议这个领域,毫无优势可言,领先的技术平台提供商并不是 Google。所以,开个源、搅个局,完全没有坏处。

WebRTC 标准与技术,最终赢得了 Firefox、Opera、Apple Safari、Microsoft Edge 以及各种 Chrome 变种浏览器的支持,从这个角度看,是取得巨大的成功。但比较讽刺的是,Google 自己的产品中涉及视频的,似乎都没有太取得商业上的成功。例如视频会议方面,大家甚至都不太想起 Google 也有这方面的产品(而且质量不错),反而 Google 的竞争者们不少都采用 WebRTC 却取得竞争优势。

WebRtc 在各浏览器中的支持程度超过 90%

当 WebRTC 成为公共标准后,Google自己貌似在开始与 WebRTC “脱钩”,开始投资到另一个全新的技术栈:WebTransportWebCodecsWebAssembly。其中 WebTransport 主要基于 QUIC(HTTP/3的传输层协议),带来更低的网络延迟,更适合视频类应用。WebCodecs 内置于浏览器,让其有独立的音视频编码解码能力。WebAssembly,一个已经发展了相当长时间、进入成熟期的开源技术,它不仅让浏览器渲染执行 JavaScript 代码的性能获得“原生”级别的提升,更重要的是它可能支持机器学习方面的结合。

如果 Google 作为 WebRTC 开源技术的主要推手,不再投资到其中,那么 WebRTC 1.0 之后,除了修修补补的小版本,还有持续发展的未来吗?我们基于 WebRTC 打造应用,是否得担心一下?

WebRTC 成为下一代互联网的实时应用基石,估计有点悬,因为确实有潜在的更优解在那里。但是,对于应用开发者,未来几年内,WebRTC可能就是我们的最优解,原因有三:

  1. 不要说 HTTP/3,到了今天互联网的主体还是依赖古老过时的 HTTP/1.1,HTTP/2 还在缓慢的增长中。替换一个积累10年而成熟的标准不容易;
  2. 虽然 Apple 有它的 FaceTime、Zoom(以及国内外的视频服务巨头们)有自己的封闭技术,未必在意 WebRTC,但是对于独立开发者,一个标准的、开放的、互联互通的、工业品质的开源技术,依然是我们最好的选择;
  3. 标准与开源的好处就是,只要有企业能利用它做出杀手级应用、商业成功,就会有人去继续支持维护与创新,接过 Google 的枪。例如会不会有人把 WebRTC 更彻底的去中心化?利用 QUIC 去优化 WebRTC 的低延迟?总是有人会去琢磨。

作为应用开发者,可以做的事情是应用场景的创意发掘与创新,是促进一个标准/技术繁荣有生命力的最佳保证。

杀手级WebRTC应用有哪些?

Alexa,亚马逊的智能音箱 Echo 里的智能助手,采用 WebRTC。

Facebook Messenger、Discord、Amazon Chime、Google Meet/Hangout/Duo,都是基于 WebRTC 的视频通讯工具、视频会议应用。

Clubhouse,2021 年现象级的语音社交工具。

Chrome Remote Desktop,远程桌面工具。对于一般商务人士例如市场、销售等等来说,可能过于技术,难以驾驭。但这种工具为什么没有人深入研究借鉴一下,发展出实时远程销售培训、实时远程机器维修人员培训、实时远程医疗人员培训这样的东西呢?

最后必须特别推荐三个值得关注的 WebRTC 相关公司及其应用场景:

peer5.com

Peer 5,一个基于 WebRTC 的 eCDN(企业内容分发网络),对内容进行网络加速,充分利用到 WebRTC 内置在浏览器中的 P2P 能力。今年8月份被微软收购。这是一个借力新标准、开源技术成就一家创业公司的成功故事。

hopin.com

Hopin,一家英国的独角兽公司,采用 WebRTC 打造“虚拟活动平台”,成立两年成功融资 5 亿 7 千万美元、收购 4 家公司。

stadia.com

Stadia,这是 Google 尝试进军游戏行业的一大尝试,能否成功不去讨论。其有趣的地方是开启 Cloud Gaming 这一领域,也可以称之为“Gaming As A Service”(游戏即服务)或者“On-Demand Gaming”。怎么理解它呢,一直以来我们打 Xbox、任天堂的游戏,都是需要买一个游戏机,打不同的游戏就放进去不同的游戏光盘。 Cloud Gaming,就是你不需要本地的光盘了,游戏在云端运行,然后通过流媒体的方式传输到你的屏幕上,就像你在电视上点播电影一样,但你用游戏手柄可以与“电影”互动。

你怎么看待 WebRtc 在未来的发展?欢迎与我们交流。

,
    推荐阅读
  • 开展创建国家卫生县城(呵护一座城共建一个家)

    开展创建国家卫生县城全县居民:创造干净、整洁的人居环境,营造文明、和谐的社会秩序,是我们每一个兴县居民的共同心愿,也是我们义不容辞的责任。强化“兴县是我家,创卫靠大家”的共建共享意识,大力宣传创卫工作,亲自参与创卫工作,踊跃参加陈年垃圾清理、植树种花护绿、卫生科普宣传等活动,提升周边环境卫生治理,主动为创卫工作贡献才智和力量。兴县创建国家卫生县城指挥部2021年8月

  • 宋朝押司是什么官职(宋朝的押司是个什么官)

    押司中的“押”,除了画押的意思之外,还有拘留、看押、押解等意思。而所谓的“司”,则是主管、操作之意,例如司法等。所以押司一职,主要就是指主管刑狱一类的官吏书佐,主要职责是将相关的刑狱档案整理好之后,便开始报给县令审核。这也就是说,押司的首要意义并不是一项官职,而只是一项差役而已。在当时担任押司的是某些特定人家的义务或者劳役,是没有俸禄的。

  • 最拽的网名(最拽的网名推荐)

    妖孽快回来洗头发的秃子,下面我们就来聊聊关于最拽的网名?接下来我们就一起去了解一下吧!最拽的网名妖孽快回来洗头发的秃子专业三秒男给朕换尿片孤独患者懵小逼蘸点软妹酱他乡遇古人有种放学别走小笨蛋-.=十秒萌定你佩奇♀女孩酒味泡芙空气猫萌阿萌萝莉身御姐心“野蛮小可爱°哥贱到你烦软的要命猫性小仙女屎香味的猪萌面大瞎拿老公换糖吃爱哭鬼风吹随他去仙气女孩拯救胡萝卜猪鼓励豆一身公主病

  • 大年初一给长辈拜年有什么讲究(大年初一拜年的顺序)

    行礼时,双手抱拳前举,左手握右手,拱手齐眉,上下加重摇动几下,重礼可作揖后鞠躬。当然,长辈受拜以后,一定会将事先准备好的“压岁钱”分给晚辈。所以向邻居长辈拜年仅次于本属长辈,一般说,邻居长辈也会给“压岁钱”的。如给朋友拜年,一进屋门,仅向佛像三叩首,如与主人系平辈则只须拱手一揖而已,如比自己年长,仍应主动跪拜,主人应走下座位做搀扶状,连说免礼表示谦恭。主人受拜后,也应择日回拜。

  • 日本是亚洲还是欧洲(日本算亚欧大陆吗)

    日本是亚洲国家。日本国,简称“日本”,是位于东亚的岛屿国家,西隔东海、黄海、朝鲜海峡、日本海与中国、朝鲜、韩国等国相望。日本三大都市圈是东京都市圈、大阪都市圈和名古屋都市圈。属温带海洋性季风气候,终年温和湿润。

  • 22课为中华之崛起而读书四年级上(统编四年级上册22课为中华之崛起而读书重点知识点)

    从这个反问句能看出围观的中国人也是敢怒不敢言。从这个比喻句能看出周恩来耳闻目睹了“中华不振”,内心很焦灼,他急切地想拯救处在水深火热中的祖国和人民。这令人愤怒的事情激发了周恩来的爱国之心。在外国人的地盘里,他又目睹中国人受外国人的欺负,中国巡警局不为中国人申冤,反而训斥那位妇女,围观的中国人敢怒不敢言,这使周恩来深刻体会到中华的确不振。

  • 清洗皮沙发的6个小妙招(清洗皮沙发的6个小妙招解说)

    清洗皮沙发的6个小妙招关于污渍,各种色泽的真皮沙发,尤其是浅色泽的真皮表面,使用稍久就会沾满污渍。可用洗洁精之类清洁液稀释,用毛巾蘸取并浸湿抹拭真皮表面,然后用玻璃瓶装的“安全漂白水”以毛巾蘸取来擦拭积垢之处,最后用清水浸湿毛巾将沙发表面抹干净。对付这种霉斑,首先用旧牙刷蘸取高度白酒,擦拭有霉斑的地方。如果这种办法无效,可用氨水用清水稀释20倍,用毛巾不易抹去的霉斑,等挥发晾干之后,就干净了。

  • 萌少是橘诺的私生子吗(一起来了解一下)

    萌少是橘诺的私生子吗萌少乃是相里橘诺的第二个儿子,也就是二王子。阿兰若和沉晔是两情相悦,可惜橘诺也喜欢沉晔,倾画夫人就把橘诺许配给沉晔。据了解橘诺是和夫子珠胎暗结,这件事曝光后,橘诺本来是要被处死的,却被阿兰若和沉晔所救,之后贬为庶民,最后在倾画夫人的扶持下,橘诺成为了比翼鸟族的女君。橘诺当初怀的孩子不是相里萌,萌少是正儿八经比翼鸟族的后代,他的父亲是橘诺后来嫁的夫君,所以橘诺没有跟沉晔在一起。

  • 最简单的家常卤肉做法(大厨教你这么做卤肉)

    大厨教你这么做卤肉软软糯糯的我女儿很爱吃~By暖暖花开y用料五花肉500克八角2个桂皮1块香叶3片辣辣生抽老抽料酒生姜冰糖做法步骤1、把五花肉切成小肉丁,要买肥瘦相间的比较好吃!2、锅里下油,最好用红葱头或者洋葱在油里。

  • 凤尾竹笋的做法(瘦又高挑蒿子杆与脆嫩马蹄拌一起)

    雪白的马蹄片比较不受酸豆角的影响,挺有个性的小子。步骤4先干炒酸豆角后加入蒜末,胡椒粉炒均取出放凉备用。步骤5水中加入油与盐,水开下蒿子杆,焯至断生即可捞出,甩干水分,放入盆中。步骤6马蹄若是买带皮的,事先去皮,洗净切薄片,大约0.1公分厚度,加入捞好的蒿子杆中。步骤7最后加上炒过的酸豆角与红椒圈,用筷子把它们拌匀即可装盘。