為WebRTC服務選擇H.264的四個理由
H.264被設定為取代VP8成為WebRTC服務的視頻編解碼器。
微軟上周在他們的Edge開發博客上宣布, Edge的ORTC開始支持H.264/AVC。
· 是的,它是ORTC而不是WebRTC
· 是的,它僅通過運行時標誌就可以開啟
· 是的,它只在Edge瀏覽器可用,IE瀏覽器不行
但話又說回來,這是目前唯一能夠在Firefox、Chrome和Edge之間跨瀏覽器進行視頻通話的方法。VP8和VP9至多能讓你在Chrome和Firefox之間建立視頻通話。
這也是我寫這篇文章的原因。Edge在ORTC中對H.264的支持並不多。從更大的視角來看,這甚至談不上有意義。相比於其他瀏覽器Edge幾乎沒有市場份額,那麼為什麼還要為它花費心思呢?但是這件事仍然標誌著一個轉折——我們應當問自己:當我們要開發一個基於WebRTC的產品時,我們應該選擇什麼樣的視頻編解碼器。
去年的時候,這個答案可能是「VP8」。
幾個月前,答案可能是「看情況」。
現在,答案將會是「除非必須用VP8,否則就用H.264」。
如下,就是這一切發生的四個原因:
1. 瀏覽器互操作基準
如果你希望你的服務能夠覆蓋儘可能多的瀏覽器,並且需要視頻功能,那麼H.264是你正確的選擇。再過幾個月, H.264將獲得所有瀏覽器廠商的官方支持,並就此一錘定音。此外,你可以期待蘋果首先使用H.264並接下來考慮使用VP8,就像微軟現在在Edge上所做的那樣。
2. 移動領域
相比於VP8,移動設備更喜歡H.264。視頻編解碼器消耗相當多資源;為克服這個問題,移動設備使用硬體加速來進行視頻編解碼。他們都擁有H.264視頻加速能力,儘管開發者並不總是能夠對此進行編程。許多移動設備商對VP8知之甚少,這歸結為移動設備上的WebRTC需要用軟體方式實現VP8。
基於這個原因,一些開發者在移動設備上用H.264替換VP8,特別是針對那些只在移動設備上運行的產品。
雖然我相信在新的晶元上VP8的性能正在提升,但是在已經存在的數百萬個移動設備上支持VP8仍然是個麻煩問題。既然現在所有瀏覽器都以各種方式支持H.264,那麼開發者還有什麼動機去支持那些必須使用VP8的移動應用呢?
3. 遺留視頻系統
遺留視頻系統主要是視頻會議系統,他們使用H.264編解碼器,絕大多數不支持VP8。直到今天,他們仍然通過一種特別的網關(MCU)支持WebRTC,或者根本就不支持。
視頻轉碼是WebRTC連通遺留視頻系統的主要障礙之一,這非常消耗資源。直接讓H.264在運行在各系統上是最容易的辦法,也是當前就可以實現的辦法。
這也是思科用Spark連通Firefox的原因。思科決定在WebRTC中使用H.264,而不是對VP8進行轉碼。
4.流量
互聯網上超過60%的流量都是視頻。這其中大部分不是實時視頻,而是像YouTube或者Netflix這樣的非實時視頻。
如今視頻流基本上都是H.264,某些情況下是VP9(YouTube使用VP9編碼)。
在iPhone上獲取視頻內容需要HLS協議,這再次意味著使用H.264編解碼器。
因此我們面臨兩種選擇:當我們想輸出視頻流時,是把WebRTC生成的視頻內容轉碼成H.264,還是直接在開始就使用H.264生成視頻內容。
你是否需要關注
如果你的視頻服務是一對一的會話服務,沒有伺服器端做視頻處理,那麼你大可不必關注。在這種場景下,瀏覽器的最終協商結果對你來說已經足夠好了,並且很有可能是該特殊場景下的最佳選擇。
如果廠商在服務端視頻處理針對VP8進行大量投入,包括視頻錄製、混合、路由等,那麼把這些服務端設備進行改造使其支持H.264可能很重要。對他們來說,轉向H.264可能是一個困難的決定,但卻是不得不做的決定。
WebRTC視頻編解碼器的未來
一旦我們放眼未來,我們可能需要關注VP9。
然後就是開放媒體聯盟,他們致力於開發一款廣泛使用的下一代免專利視頻編解碼器。我在最近的每月在線會議上更新過他們的進度。
作為紀錄,我相當討厭H.264和它代表的一切。但是現在必須承認, 它留了下來,和WebRTC一起發展。
更多資料可關注官方公眾號:編風網(微信ID:befoio)或 WebRTC編風網(微信ID:webrtcorgcn)
推薦閱讀:
※在Google Chrome WebRTC中分層蛋糕式的VP9 SVC
※Kurento是否可以讓客戶端選擇不同的實時監控視頻?
※WebRTC內置debug工具,詳細參數解讀
※WebRTC視頻通話中最多能容納多少用戶?
※基於 WebRTC 的視頻聊天技術在 iOS 端的實現
TAG:WebRTC |