2017-2018:WebRTC标准演进与发展瓶颈

时间:2022-10-29 06:34:17

2017-2018:WebRTC标准演进与发展瓶颈


尽管WebRTC获得了主流浏览器的官方支持,但各浏览器之间还存一定的互操作性问题。本文来自英特尔Web技术及优化中心资深软件工程师诸剑俊的投稿,文章回顾了WebRTC在2017年取得的里程碑,以及当下的发展瓶颈,并对苹果对WebRTC的投入充满期待。如果你愿意分享技术实践或洞察,欢迎联系 contribute@livevideostack.com。


文 / 诸剑俊


WebRTC 1.0标准【1】在经过了数年的设计和改进之后,终于在2017年末进入了CR(Candidate Recommendation)【2】阶段。这意味着WebRTC 1.0的功能和API定义已经基本完成。与此同时,Edge和Safari也在2017年正式加入了对WebRTC的支持,加上之前已经支持WebRTC的Chrome、Firefox和Opera,目前这项技术已经获得当前主流浏览器上的普遍支持。


回顾


WebRTC标准由W3C Web Real-Time Communications Working Group和IETF RTCWEB Working Group参与制定。自2011年以来,WebRTC 1.0在演进过程中经历了早期基于流(stream)的阶段,发展到基于轨道(track)的阶段,并加入了收发器(transceiver)的概念【3】。目前的版本提供了更大的灵活度和更多的使用场景,并且加快了连接建立的速度。


与WebRTC密切相关的Media Capture and Streams(getUserMedia)标准及其扩展也得到了增强。除了传统地从摄像头、麦克风获取音视频数据以外,新的扩展也支持从DOM元素获取视频数据【4】。深度扩展【5】则允许浏览器获取到摄像头的深度信息,深度信息的加入可对物体识别等应用带来帮助。


相对于标准的完善,对于web开发者而言,更重要的是需要有浏览器实实在在地支持。目前主流的浏览器基本都已支持WebRTC,部分浏览器之间存在的互操作性问题也可以通过adapter【6】来解决。但是由于标准在演进过程中经历了较大的改动,部分后期的改动和新加入的API尚未得到完整地支持。Chrome社区正在积极地增强对标准的支持【7】,部分与标准不匹配的实现已经于2017年得到了修正。Firefox对基于轨道的API也已经有较好地实现,并且将部分已经移除的API标记为过时的API,不建议使用。开发者将大大减少在适配多种浏览器上的投入。


展望


随着5G网络的建设和直播等应用的持续火爆,实时的音视频互动需求十分强劲。WebRTC无插件、浏览器原生支持的优点,成为了在互联网平台进行音视频直播互动的一个良好的选择。


WebRTC 1.0标准稳定后,工作组已经开始探索新的篇章。新的标准有望加入对新传输协议的支持,以及更易用的API。


从技术上亟待解决的几个问题来看,目前浏览器互操作中一个比较主要的问题是Chrome对于多个媒体源的时候使用的是Plan B【8】,而Firefox使用的是Unified Plan【9】,当一个PeerConnection有多个流的时候可能会遇到问题【10】。Chrome已经在实现Unified Plan并取得了一些进展。希望这个问题解决以后浏览器之间有更好的互操作性。


对小程序开发者来说,Safari/WebKit加入WebRTC支持无疑是一个非常好的消息。由于iOS平台Web运行环境相对统一,并且新系统部署速度较快【11】,各类小程序有望在较短时间内利用起WebRTC提供的实时音视频和数据传输功能。目前来看,Safari加入对WebRTC支持后在iOS平台尚有一些不稳定【12】【13】,该问题在iOS 11.2已有所改善。另外,Media Capture API (getUserMedia)目前只在Safari上支持,各类iOS应用程序内使用的WKWebView和UIWebView还不允许做获取摄像头和麦克风等操作【14】。希望2018年WebRTC在iOS平台得到更好地支持后,能有更多的应用程序/小程序可以增加实时的音视频互动,为用户提供更好的体验。


英特尔公司作为W3C的成员,正在与业界同仁一起为WebRTC完善和发展而努力。除了对WebRTC标准层面的影响,英特尔早在2014年就推出了端到端的音视频应用解决方案“面向WebRTC的英特尔®协同通信开发套件”,并历经10多个版本的更新,该套件可以帮助开发人员快速开发出支持多个平台实时通信的复杂应用。


关于作者


诸剑俊,英特尔Web技术及优化中心资深软件工程师,W3C WebRTC 工作组成员。面向WebRTC的英特尔®协同通信开发套件中客户端协议栈的主要开发者之一,同时也是Chromium WebRTC开源社区的积极贡献者。

 

2017-2018:WebRTC标准演进与发展瓶颈


文献参考


  1.  https://www.w3.org/TR/webrtc/

  2.  https://www.w3.org/html/wg/wiki/CR

  3.  https://blog.mozilla.org/webrtc/the-evolution-of-webrtc/

  4.  https://www.w3.org/TR/mediacapture-fromelement

  5.  https://www.w3.org/TR/mediacapture-depth/

  6.  https://github.com/webrtc/adapter

  7.  https://groups.google.com/d/msg/discuss-webrtc/f4Jg53Phgco/YfetnmoqBQAJ

  8.  https://tools.ietf.org/html/draft-uberti-rtcweb-plan-00

  9.  https://tools.ietf.org/html/draft-roach-mmusic-unified-plan-00

  10.  https://bugs.chromium.org/p/chromium/issues/detail?id=465349

  11.  https://developer.apple.com/support/app-store/

  12.  https://bugs.webkit.org/show_bug.cgi?id=175014

  13.  https://bugs.webkit.org/show_bug.cgi?id=176439

  14.  https://webkit.org/blog/7763/a-closer-look-into-webrtc/


酷炫短视频开发进阶&新书抽奖


全民快乐研发高级总监展晓凯讲在1月16日线上分享酷炫短视频开发的设计架构、实现思路以及研发过程中的经验。


在参与直播互动的小伙伴中,将抽出10位赠送展老师的新书《音视频开发进阶指南——基于Android和iOS平台的实践》,同时我们也会面向参与直播的小伙伴开放购书优惠通道。


此外,分享下面海报到朋友圈,将截图发到公众号,我们还将额外抽出5位小伙伴赠送展老师的新书。


扫描下方图中二维码,加入直播群。

2017-2018:WebRTC标准演进与发展瓶颈