華文網

蘋果終於入夥 WebRTC,新一代移動Web應用爆發路上還有哪些坑?

在剛剛落幕的 WWDC17 上,蘋果為我們帶來了一個不小的驚喜 —— 其流覽器內核WebKit將正式支持 WebRTC,而未來基於 WebKit 內核的蘋果流覽器,比如macOS High Sierra、iOS 11 中的 Safari 流覽器和Safari 技術預覽版 32,都將使用到 WebRTC 技術。

此消息一出便引得無數 WebRTC 開發者為之興奮,更表示其將改變當前的 P2P 視頻通話技術格局。這是為什麼呢?在此,我們需要先簡單地瞭解一下 WebRTC,其全稱為 Web Real-Time Communication(網路即時通信),是一項能夠讓流覽器支援即時語音會話或視頻對話的技術。這一技術前身為 GIPS,本是由 Global IP Solutions 公司研發,

2010 年,Google 以 6820 萬美元的價格將該公司收購並將 GIPS 更名為 WebRTC,次年 5 月正式將其開源。

彼時,我們所能想到的只是因為 Google的推動,這樣一項能夠在流覽器內部進行即時音訊和視頻通信的技術讓 Web 中的即時通訊成為可能。但同時,也有諸多開發者在質疑 WebRTC 是否會曇花一現,畢竟一直以來,雖然 Chrome、Firefox、Opera 等市面上主流的流覽器均已加入 WebRTC 大本營,但蘋果的 Safari 和微軟的 IE 卻都不支持。

如今,Safari 即將在最新版本中集成WebRTC,

其對於整個即時通信領域而言,究竟意味著什麼?對於 WebRTC 開發者來說,又將有著怎樣的改變?我們帶著種種疑問,請教了網路即時通信領域的資深專家 —— 聲網 Agora.io 創始人兼 CEO 趙斌,從 WebRTC 的發展歷程談起,詳細剖析 WebKit 終於支持 WebRTC 將帶來怎樣的變化。

追本溯源:為解決在流覽器上進行視頻通話而生的 WebRTC

但這一兩頭吃力還不討好的局面就這樣被Google 將 WebRTC 項目開源所打破。2011 年,WebRTC 基於 BSD 協議開源,同年,W3C 啟動 WebRTC 計畫,

讓 WebRTC 成為了 HTML5 標準的一部分(目前,該規範還在開發中)。

由此,流覽器廠商將 WebRTC 內建在流覽器中,使得Web 應用研發人員能夠通過 HTML 標籤和 JavaScript API 即可實現 Web 音視頻通信功能。在 WebRTC 的官網上,Google 如此表述道:

互聯網成功的關鍵因素之一,便是一些如HTML、HTTP 和 TCP/IP 等的核心技術是開放和標準化的。目前,在流覽器即時通信領域還沒有免費、高品質、完整的解決方案,而 WebRTC 正是這樣的技術。

該技術包含了使用 STUN、ICE、TURN、RTP-over-TCP的關鍵 NAT 和防火牆穿透技術,

並支援代理。通過流覽器,WebRTC 把通訊雙方的信令狀態直接映射到 PeerConnection 裡面來抽象信令處理,這樣,開發人員按不同的應用場景選擇不同的會話協議,比如 SIP、XMPP/Jingle 等。截至目前,該技術的使用已經超過了 8 年,集成了最佳的音訊、視頻引擎,並被部署到數以百萬的終端中,同時這些技術 Google 不收取任何費用。

從最初的為了解決流覽器上視頻通話而誕生,WebRTC已經發展到可以實現在流覽器之間進行任意資料的通信。

其中,Chrome、Firefox、Opera 對於 WebRTC 的支援已較為成熟,而微軟於 2014 年提出了 ORTC(對象 RTC,也有人稱之為 WebRTC 1.1),希望在對 Google 的 WebRTC 提案稍作修改的基礎上,也提供支援。目前,最新版本的 Microsoft Edge 已經支持 ORTC。

而對於蘋果官方終於宣佈“WebRTC 將在 Safari 11 上支持”,趙斌如此評價道:“目前,WebRTC 已經有了 1.0 版本,暫時還是草案。但是我們可以看到的是,WebRTC 在網路抗丟包處理、視頻引擎(比如 H.264 Codec 支援成熟度)等方面,還是需要加強的。1.0 之後的 1.1 版本,考慮到了和 ORTC 的結合,讓 WebRTC 可以在微軟流覽器上實現,這是 Google 和微軟同時推動的階段性進展。實際上,Google 的 WebRTC 從一開始的計畫就是能支持所有的主流流覽器。之前最大的障礙是微軟流覽器和蘋果流覽器,但是通過 Google 的推動,這些實際上都在發生變化。而 Safari 在 iOS 11 中將支持 WebRTC,既是行業裡最後一個重要的流覽器加入這一潮流,也是這一進程的重大勝利。這在 WebRTC 的發展上是里程碑性的事件,將會極大地推動 RTC 技術在各種應用網站上的普及。當然,目前蘋果對 WebRTC 的支援還比較粗糙,需要更多的時間成熟,並解決互通上的更多問題。微軟則還需要在標準的一致性上參與行業的討論,縮小和拉近在互通性方面的差距。”

那麼,Safari 終於實現對於 WebRTC 的支持,究竟意味著什麼?

一直以來,WebRTC 開發者總被一個無法逃避的陰影所籠罩,那就是來自用戶的“什麼時候微軟和蘋果的流覽器支持呢?”的疑問,每每此時,卻只能給出讓用戶使用 Chrome 和 Firefox 的解決方案。而在移動端,事情變得更加複雜,因為在 iOS 上,使用原生是唯一的辦法,也由此增加了Swift/Objective-C 的開發成本,儘管 React Native能夠構建支援 WebRTC 的 Android 和 iOS 應用讓這一狀態有所改善,但卻無法從根本上解決問題。

而隨著支援 WebRTC 的 iOS 版 Safari 的到來,意味著開發者們可以提供一個在 Web 端、移動端均可運行的回應式網站來實現 WebRTC 通話。對於開發者個人而言,也無需為了完成項目而絞盡腦汁地成為 Objective-C、Swift 或 React Native 方面的專家,通過 JavaScript 即可實現這樣一個精細複雜的網路電話應用,由此開發成本將得到大幅降低。

在談到 WebRTC 移動端實現時,趙斌表示:“在 Safari 支持 WebRTC 後,過去只能在諸如Chrome 流覽器之間實現的音視頻通話,現在在 Safari 以及 Chrome 與 Safari 之間實現了,其影響一定是積極的。可以預見,很多網站及開發者將會更加認真地考慮將這類功能添加至網站及應用中。”

仍有缺憾:WebRTC即將爆發,但成功之路暗坑無數

儘管 WebRTC 應用已經如此廣泛,但其也並非完美,比如在穩定性、P2P 連接率、呼叫成功率、網路抗丟包性能等諸多方面,都還有很大的提升空間。所以到目前為止,大規模單純使用 WebRTC 成功的產品還是鳳毛麟角,且幾乎都是在網路和設備性能非常成熟的美國,比如 Facebook Messenger、Google Hangouts。

且 WebRTC 是基於流覽器上的技術,大部分都是在流覽器中應用。而使用 WebRTC 在移動端上進行開發,差別還是很大。雖然可以實現,但門檻會很高,難度也會很大。對絕大多數開發者來說,要用 WebRTC 在移動端實現良好體驗,不是一件容易的事情,會遇到非常多的坑。在進行 WebRTC 開發之前,開發人員及其團隊需要根據自身的情況,來決定是自主開發還是使用協力廠商 SDK。

對此,趙斌與我們分享了他的經驗:“即時通信是一項實現功能容易,但做好很難的技術。我曾在 WebEx 和 YY 工作將近 20 年,非常清楚 RTC 技術的坑。也知道對於一個開發者而言,要自己在 App 和流覽器中實現即時音視頻通話,是非常麻煩且累人的事情。很多開發者最容易掉進的坑,就是忘了如果想要用好即時通信技術,歸根結底還是在於使用過程中的品質保障,而非研發時寫的那些功能代碼。”

也正因如此,趙斌和他的團隊對 WebRTC在品質保障方面進行了擴展,比如為了解決 WebRTC 在弱網路環境下抗丟包、通話連通率等問題,在全球部署了虛擬通信網 SD-RTN™(Software Defined Real-time Network),有近 100 個資料中心,同時,為開發者提供一個極簡 SDK,幫助其在任何 App、網站上,都能實現高品質的音視頻通話、全互動直播。據趙斌介紹,目前這款 SDK 已經被嵌入到了超過 5 億的終端設備上,僅僅花了1年左右的時間,全球範圍內對於即時通信品質保障的強烈需求可見一斑。

總結:即時通信技術無所不及的應用場景

WebRTC 一直是推動 RTC 即時通信技術發展的最主要力量,讓即時通信技術能夠在互聯網很多行業裡得到廣泛應用。而近兩年來,我們也看到了即時通信技術在很多領域正在驅動非常多的創新應用場景,比如去年大熱的互動直播,主播與觀眾隨時連麥互動、不同房間的主播連麥聊天等,以及當下正在流行的狼人殺,包括語音、視頻甚至是輪麥視頻狼人殺,這些場景都是基於 RTC 創造出來的。另外,在 AR/VR 和 AI 等新技術領域,也有諸多結合,如視頻通話時的動態濾鏡貼紙、戴 VR 眼鏡和虛擬世界裡的朋友聊天等等。當然,對於傳統行業,比如企業協作、金融、客服等領域,都有可能借助 RTC 技術打破地域界限,讓更多人可以做居家客服、居家辦公 SOHO 等。

“我們認為,隨著WebRTC被幾大流覽器統一支持,應用的成長和發展是必然的。未來,無論在怎樣的場景下,即時通信都會成為人們的一個預設選擇,無限縮短人與人之間的距離。而用戶會越來越多地瞭解和熟悉這種使用模式,開發者也會越來越多地理解其中的門檻,以及品質保障在即時通信領域的價值。”最後,趙斌如此總結道。

點擊【閱讀原文】獲取相關資源:

WebRTC 的現狀

WebRTC 的優缺點

WebRTC 入門教程

WebRTC 在 iOS 端的實現

1.0 之後的 1.1 版本,考慮到了和 ORTC 的結合,讓 WebRTC 可以在微軟流覽器上實現,這是 Google 和微軟同時推動的階段性進展。實際上,Google 的 WebRTC 從一開始的計畫就是能支持所有的主流流覽器。之前最大的障礙是微軟流覽器和蘋果流覽器,但是通過 Google 的推動,這些實際上都在發生變化。而 Safari 在 iOS 11 中將支持 WebRTC,既是行業裡最後一個重要的流覽器加入這一潮流,也是這一進程的重大勝利。這在 WebRTC 的發展上是里程碑性的事件,將會極大地推動 RTC 技術在各種應用網站上的普及。當然,目前蘋果對 WebRTC 的支援還比較粗糙,需要更多的時間成熟,並解決互通上的更多問題。微軟則還需要在標準的一致性上參與行業的討論,縮小和拉近在互通性方面的差距。”

那麼,Safari 終於實現對於 WebRTC 的支持,究竟意味著什麼?

一直以來,WebRTC 開發者總被一個無法逃避的陰影所籠罩,那就是來自用戶的“什麼時候微軟和蘋果的流覽器支持呢?”的疑問,每每此時,卻只能給出讓用戶使用 Chrome 和 Firefox 的解決方案。而在移動端,事情變得更加複雜,因為在 iOS 上,使用原生是唯一的辦法,也由此增加了Swift/Objective-C 的開發成本,儘管 React Native能夠構建支援 WebRTC 的 Android 和 iOS 應用讓這一狀態有所改善,但卻無法從根本上解決問題。

而隨著支援 WebRTC 的 iOS 版 Safari 的到來,意味著開發者們可以提供一個在 Web 端、移動端均可運行的回應式網站來實現 WebRTC 通話。對於開發者個人而言,也無需為了完成項目而絞盡腦汁地成為 Objective-C、Swift 或 React Native 方面的專家,通過 JavaScript 即可實現這樣一個精細複雜的網路電話應用,由此開發成本將得到大幅降低。

在談到 WebRTC 移動端實現時,趙斌表示:“在 Safari 支持 WebRTC 後,過去只能在諸如Chrome 流覽器之間實現的音視頻通話,現在在 Safari 以及 Chrome 與 Safari 之間實現了,其影響一定是積極的。可以預見,很多網站及開發者將會更加認真地考慮將這類功能添加至網站及應用中。”

仍有缺憾:WebRTC即將爆發,但成功之路暗坑無數

儘管 WebRTC 應用已經如此廣泛,但其也並非完美,比如在穩定性、P2P 連接率、呼叫成功率、網路抗丟包性能等諸多方面,都還有很大的提升空間。所以到目前為止,大規模單純使用 WebRTC 成功的產品還是鳳毛麟角,且幾乎都是在網路和設備性能非常成熟的美國,比如 Facebook Messenger、Google Hangouts。

且 WebRTC 是基於流覽器上的技術,大部分都是在流覽器中應用。而使用 WebRTC 在移動端上進行開發,差別還是很大。雖然可以實現,但門檻會很高,難度也會很大。對絕大多數開發者來說,要用 WebRTC 在移動端實現良好體驗,不是一件容易的事情,會遇到非常多的坑。在進行 WebRTC 開發之前,開發人員及其團隊需要根據自身的情況,來決定是自主開發還是使用協力廠商 SDK。

對此,趙斌與我們分享了他的經驗:“即時通信是一項實現功能容易,但做好很難的技術。我曾在 WebEx 和 YY 工作將近 20 年,非常清楚 RTC 技術的坑。也知道對於一個開發者而言,要自己在 App 和流覽器中實現即時音視頻通話,是非常麻煩且累人的事情。很多開發者最容易掉進的坑,就是忘了如果想要用好即時通信技術,歸根結底還是在於使用過程中的品質保障,而非研發時寫的那些功能代碼。”

也正因如此,趙斌和他的團隊對 WebRTC在品質保障方面進行了擴展,比如為了解決 WebRTC 在弱網路環境下抗丟包、通話連通率等問題,在全球部署了虛擬通信網 SD-RTN™(Software Defined Real-time Network),有近 100 個資料中心,同時,為開發者提供一個極簡 SDK,幫助其在任何 App、網站上,都能實現高品質的音視頻通話、全互動直播。據趙斌介紹,目前這款 SDK 已經被嵌入到了超過 5 億的終端設備上,僅僅花了1年左右的時間,全球範圍內對於即時通信品質保障的強烈需求可見一斑。

總結:即時通信技術無所不及的應用場景

WebRTC 一直是推動 RTC 即時通信技術發展的最主要力量,讓即時通信技術能夠在互聯網很多行業裡得到廣泛應用。而近兩年來,我們也看到了即時通信技術在很多領域正在驅動非常多的創新應用場景,比如去年大熱的互動直播,主播與觀眾隨時連麥互動、不同房間的主播連麥聊天等,以及當下正在流行的狼人殺,包括語音、視頻甚至是輪麥視頻狼人殺,這些場景都是基於 RTC 創造出來的。另外,在 AR/VR 和 AI 等新技術領域,也有諸多結合,如視頻通話時的動態濾鏡貼紙、戴 VR 眼鏡和虛擬世界裡的朋友聊天等等。當然,對於傳統行業,比如企業協作、金融、客服等領域,都有可能借助 RTC 技術打破地域界限,讓更多人可以做居家客服、居家辦公 SOHO 等。

“我們認為,隨著WebRTC被幾大流覽器統一支持,應用的成長和發展是必然的。未來,無論在怎樣的場景下,即時通信都會成為人們的一個預設選擇,無限縮短人與人之間的距離。而用戶會越來越多地瞭解和熟悉這種使用模式,開發者也會越來越多地理解其中的門檻,以及品質保障在即時通信領域的價值。”最後,趙斌如此總結道。

點擊【閱讀原文】獲取相關資源:

WebRTC 的現狀

WebRTC 的優缺點

WebRTC 入門教程

WebRTC 在 iOS 端的實現