今年1月份, W3C和IETF正式宣布, WebRTC现已成为官方标准,这意味着它可以将音频和视频通信带到 Web 的任何地方,实现真正意义上的全球互联。
2020年的疫情使数百万人改变了他们的日常生活和工作方式,为了减少身体接触,越来越多的人使用音视频实时通信(如直播互动、在线教育、视频会议,在线问诊等),而这些不同应用场景背后的核心技术就是WebRTC,一个通过简单的API为浏览器和移动App提供实时通信功能的免费开源项目。
距离谷歌正式开源WebRTC实时通信项目,已经有10年时间,这10年中,WebRTC的重要性日益凸显,应用场景也越来越广泛。那么10年以前呢?WebRTC是怎样开发出来的?开发过程中遇到了哪些挑战?背后又有哪些幕后英雄?
接下来让曾参与过WebRTC开发工作,目前为谷歌产品管理总监的Serge Lachapelle 来为我们讲述WebRTC的诞生过程。
Serge Lachapelle,谷歌产品管理总监,Marratech联合创始人
从事WebRTC开发工作的原因
从大学开始,我就对通信软件开发非常感兴趣。90年代,开始出现nv(Network Video,早期视频会议)这样的技术,但是却很难使用。所以我开发了一个项目,可以让人们从浏览器上直接加入视频通话,我还把它移植到了Windows上。
我把这个项目带到了Marratech(一家由我和其他人一起创立的公司)。我和那里的同事一起为群组视频会议开发软件。那个时候的技术环境和现在大不一样,视频方面的前沿技术主要基于组播网络。在一次通话中,用户可以通过网络将视频包发送给所有人,这同时也意味着我们的服务器会非常简单。但这里有一个很大的问题,我们需要为视频包设计可以容纳它的网络。所以我们后来就弃用了这种方法,而采用了包转发的模式,也就是后来被人们熟知的SFU。
2007年,我的公司Marratech被谷歌收购,我在谷歌继续从事视频通信的相关工作,而这些工作对日后的WebRTC产生了一定影响。
第一个谷歌项目
当时的团队(即未来的WebRTC团队)做的第一个项目就是Gmail Voice和Video Chat。将音频和视频加入到浏览器中绝非是一件容易的事情。我们需要从不同公司获得不同的专业组件,而这一切都要获得对方公司的许可,如来自GIPS的音频,Vidyo的视频,libjingle的网络。接下来就是奇迹的发生:把它们组装到一起!
每个子系统都有一个完全不同的API,所以你要去解决不同的问题。在这个过程中,你要用到多种领域的知识,如网络、密码学、媒体等等。承担这项工作的是 Justin Uberti ,他将所有的这些组件组装到一起,做出了一件非常有用的产品。
Justin Uberti,WebRTC和Google Duo创造者之一,前段时间刚刚离开了工作近15年的谷歌,目前为Clubhouse流媒体技术负责人
浏览器中的实时渲染也是一个大难题。我们不得不用到NPAPI(Netscape Plugin API,网景插件接口),并下了一番苦工才让它实现。整个过程虽然艰难,但却对日后的WebRTC影响深远。
Chrome
同一时期,Chrome项目也在谷歌内部开启。当时大家都非常激动,因为这个项目将会实现很多重大的目标。当时大家经常讨论的话题还有WebGL、离线Web技术、数据库性能,游戏的低延时输入等等。
放弃使用NPAPI是当时做的很重要的一件事。NPAPI虽然很强大,但却带来了很多安全问题。Chrome中使用了沙盒设计来确保用户数据安全。不同进程中,存在很多有安全隐患的操作,在这种设计下,即使出现问题,攻击者也无法获取用户数据。
WebRTC诞生了!
在我看来,促成WebRTC诞生的因素有好几个,正是在它们的一起作用下,才有了今天的WebRTC。
WebRTC的开发难度不应如此之大。不同的开发人员去重新实现同一个东西,导致浪费了太多的时间和精力。我们应该一次性解决这些麻烦的集成问题,然后专注于其他工作。
人与人之间的交流应该是开放且不受阻碍的。我的实时语音和图像为什么不能像文本和 HTML 那样开放出来?
最需要解决的是安全问题。对于用户来说,使用NPAPI存在安全隐患,并不是最佳选择。这也使得默认是安全的网络协议应运而生。
为了实现WebRTC,Google收购并开源了我们之前用到的组件,比如On2的视频技术,GIPS的RTC技术(我曾负责GIPS的收购)。我们需要将这些组件组合到一起,使它可以在浏览器内、外都能易于使用。
标准化工作
标准化WebRTC是我们一直都想做的事情,但我和团队成员之前都没有做过这方面的工作。非常幸运的是,Harald Alvestrand在谷歌!他曾经在IETF工作过,所以就由他接手了WebRTC的标准化工作。
Harald Alvestrand,计算机科学家,目前任职于谷歌,自1991年以来,他一直通过IETF积极参与互联网标准化工作
我记得是2010年的一个夏天,当时在Maastricht有一个非正式的午餐会。很多公司(包括谷歌、思科、爱立信、Skype、Mozilla、Linden Labs等)的开发者齐聚一堂,讨论WebRTC应该是什么样子的。你可以在rtc-web.alvestrand.com上找到当时现场的PPT。
Skype对IETF设计的Opus所做的贡献同样为WebRTC的实现提供了重要的指南。
站在巨人的肩膀上
在IETF时,你需要做许多扩展工作。而开发WebRTC却很幸运,因为很多技术已经存在,所以我们不必事事亲为地去解决问题。但如果你不喜欢这些已存在的技术,就会很麻烦。摒弃这些已有的技术需要一个相当充分的理由,开发你自己的技术显然并不是明智之举。
我们没有试图去再标准化诸如信令这样的东西,这些通过SIP和其他非IETF的方式已得到解决。
我没有像Justin 和Harald那样投入到标准化工作中去,但是我很享受参与WebRTC开发的过程。那个时候,我对于能够回来为用户开发新的产品感到非常兴奋。
未来
WebRTC今时今日的地位已经非常重要。它还在不断地迭代中,但我已经不再参与其中的工作了。
我非常高兴看到云计算给通信带来的进步。使用高级算法可以消除背景噪音,使以前无法实现的通信成为可能。我们看到,WebRTC已经不再限于通信。当时谁能知道,9年以后,它能用在基于云的游戏上呢?没有WebRTC,这一切都不可能。
Serge Lachapelle 谷歌产品管理总监,从事视频通信工作超过20年时间,曾是视频会议软件公司Marratech 的联合创始人,该公司后被谷歌收购,Serge Lachapelle随后加入谷歌。在谷歌,Serge Lachapelle启动了很多重要的视频会话项目,包括 Gmail Video Chat, Google Hangouts, WebRTC, Google Duo, 和Google Meet等。
延伸阅读:W3C与IETF共同定义WebRTC未来6大应用方向
翻译 /Alex Li
技术Review:刘连响
原文链接:https://webrtcforthecurious.c...
详情请扫描图中的二维码或点击阅读原文了解大会更多信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。