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開源社區的積極貢獻者。
?
文獻參考
?https://www.w3.org/TR/webrtc/
?https://www.w3.org/html/wg/wiki/CR
?https://blog.mozilla.org/webrtc/the-evolution-of-webrtc/
?https://www.w3.org/TR/mediacapture-fromelement
?https://www.w3.org/TR/mediacapture-depth/
?https://github.com/webrtc/adapter
?https://groups.google.com/d/msg/discuss-webrtc/f4Jg53Phgco/YfetnmoqBQAJ
?https://tools.ietf.org/html/draft-uberti-rtcweb-plan-00
?https://tools.ietf.org/html/draft-roach-mmusic-unified-plan-00
?https://bugs.chromium.org/p/chromium/issues/detail?id=465349
?https://developer.apple.com/support/app-store/
?https://bugs.webkit.org/show_bug.cgi?id=175014
?https://bugs.webkit.org/show_bug.cgi?id=176439
?https://webkit.org/blog/7763/a-closer-look-into-webrtc/
酷炫短視頻開發進階&新書抽獎
全民快樂研發高級總監展曉凱講在1月16日線上分享酷炫短視頻開發的設計架構、實現思路以及研發過程中的經驗。
在參與直播互動的小伙伴中,將抽出10位贈送展老師的新書《音視頻開發進階指南——基于Android和iOS平臺的實踐》,同時我們也會面向參與直播的小伙伴開放購書優惠通道。
此外,分享下面海報到朋友圈,將截圖發到公眾號,我們還將額外抽出5位小伙伴贈送展老師的新書。
掃描下方圖中二維碼,加入直播群。
總結
以上是生活随笔為你收集整理的2017-2018:WebRTC标准演进与发展瓶颈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王荣刚:视频画质评定是个“大坑”
- 下一篇: 2018:WebRTC开发五大趋势