你会在你的WebRTC 应用程序中使用哪种视频编解码器呢?
正文字數:2555 ?閱讀時長:4 分鐘
當為WebRTC應用程序來選擇正確的視頻編解碼器已經成為了一件非常棘手的事兒時...你是應該使用VP8? H.264? VP9? 還是 AV1? 或者 HEVC呢?
?
文 /?Tsahi Levent-Levi
原文鏈接 /?https://bloggeek.me/webrtc-video-codec/
?WebRTC視頻編解碼器–小提示?
WebRTC曾經是一個非常簡單的編解碼器。您可以有VP8,Opus和G.711。至于為什么G.711被刪除,主要是因為我不希望您使用它,盡管確實也沒有這樣做的理由。而后來,H.264被添加為實施視頻編解碼器的必需項。WebRTC領域中的一切都在正軌之中。
緊接著,谷歌決定在Chrome中引入VP9,作為可選編解碼器。Mozilla也將VP9添加到了Firefox。那么微軟呢?當他們將Edge切換為Chromium時,他們“免費”獲得了它。還有蘋果公司……對的……是蘋果公司。VP9應該在他們的Safari技術預覽版中出現,但主要是因為Google Standia使用了VP9這一事實,聽起來可能令人驚訝。
哦,蘋果公司決定將HEVC作為自己的可選編解碼器添加到WebRTC中——只是為了更好的考慮(層組)。并使我們所有人更加困惑。
然后就是AV1。下一代最佳視頻編解碼器。暫且來說是這樣的。至少當它被添加到Chrome中(即90版),以供開發人員使用。
?支持跨WebRTC瀏覽器的視頻編解碼器?
上圖摘自我最近舉辦的2021年WebRTC趨勢研討會。它顯示了web瀏覽器中對于支持視頻編解碼器當前的狀態。
簡略總結一下:
-?VP8和H.264在瀏覽器中無處不在,但是正如事實那樣,它們兩者之間都存在一些問題
-?VP9在開發多年后并沒有被廣泛采用,但是“很快”就要出現在Safari中了
-?HEVC是蘋果公司“專有”的
-?對比起來AV1是十分嶄新的
?在WebRTC中視頻編解碼器的性能?
上周,我與Philipp Hancke一起參加了本月的WebRTC每月“演奏”。在本月“演奏”中,Philipp建議我們研究視頻編解碼器的性能,因此他也撰寫了一個……“演奏”。
您可以觀看整個演奏:測量視頻編解碼器的性能 (點擊查看:https://webrtccourse.com/course/webrtc-codelab/module/fiddle-of-the-month/lesson/measuring-video-codecs-performance/)
結果非常有趣,并且有時還會令人感到十分驚訝。但這樣做的好處是,您無需固守我們所提供的信息——您可以自己使用代碼并使用它。另外,請確保在您的場景中正確使用它,而不要在我們共享的簡單場景中使用它,因為每個人的情況可能有所不同。
?在WebRTC應用程序中使用VP8還是H.264呢?
今天?您可能正在使用VP8或H.264 ——或者應該正在使用VP8或H.264。
那么兩者之間有什么真正的區別?不,也不能這樣說。而是在對于給定的比特率上,它們產生相似的視頻質量。
但是它們之間存在一些細微差別:
- Google在WebRTC中并沒有真正地去用到H.264。因此,VP8成為了兩者中維護程度更高的視頻編解碼器。例如,H.264多年來一直不支持Chrome中的同步播放(盡管現在已經支持)
- VP8幾乎沒有硬件加速,因此在某些情況下它將消耗更多的CPU。
- H.264具有硬件加速功能。在Apple設備上。有時在PC上。有時在Android上。不過有時,您將無法在WebRTC中安裝啟用H.264,因為硬件不可訪問,軟件實現也不存在(版稅之類的)
- 時域分級(時間可伸縮性)僅在VP8中可用。H.264并沒有。
在我們自己的快速測試結果中表明,H.264解碼器優于VP8解碼器——無論在H.264上是否有硬件加速。這都是一件絕對要考慮其中的事情。
您到底應該使用哪一個?扔骰子來決定…
?WebRTC中的VP8/H.264或VP9?
這是一個真正需要思考的問題。您應該使用VP9嗎?去年,我曾建議這可能是一個使用VP9的好時機。但是這幾乎沒有什么發生變化的是——我看不到有什么人真正的在使用它。
除了Google之外,沒有人使用它。
在我們的測試中,它的CPU使用率接近VP8。這真是令人驚訝。這可能就是Google在Google Meet中使用它的原因。
VP9最大的優點是什么呢?就是它還支持SVC(以一種未記錄的調整方式)
那挑戰又是什么呢?蘋果公司。現在仍然還沒有。但是差不多應該到時候了。但問題是具體什么時候。
?何時在WebRTC中使用HEVC?
這個答案很簡單-永遠不會。
也就是說,如果您僅僅是在Apple設備之間進行通話,那么HEVC可能是一個不錯的選擇。
?對AV1來說,這個時機合適嗎?
是,也不是。
根據我們自己的測試結果來說,就性能而言,AV1比所有其他編解碼器都差很多。在編碼和解碼的過程中AV1所需的CPU是我們嘗試過的所有其他視頻編解碼器的兩倍或更多。
但是AV1應該比其他編解碼器提供更好的質量,因此您實際上可能需要支付額外的CPU。據我所知,今天使用AV1的原因有兩個:
1.要處理某些特定情況,例如非常低的比特率(CPU不是瓶頸,但帶寬是瓶頸)
2.當您僅需要解碼,而編碼器在云端時——一個您控制硬件的地方。不過,您將在計算成本中為此支付
3.據傳它還擅長解碼縮略圖
?歡迎來到多編解碼器WebRTC世界?
WebRTC開始發展時并沒有很多選擇。只有VP8和H.264。就是這樣的情況。但是現在呢?我們可以隨時提供4-5個視頻編解碼器供您選擇。
我們大多數人最終使用VP8并沒有什么原因。而也有些人選擇了H.264,主要是出于對性能方面的考慮。其余的大多數的編解碼器雖然經常被談論,但幾乎從未被使用過。
新型視頻編解碼器確實很有前途——比如VP9,AV1甚至HEVC在WebRTC應用程序中,都具有真正的潛力。盡管如此,它們也面臨著一些巨大的挑戰——主要是CPU和跨瀏覽器的可用性。
要使用它們,需要一種新的方法。那就是通過一個應用程序有時可以進行完全相同的會話中使用多個視頻編解碼器。
這里有一些建議供您探索:
- 僅在1:1的呼叫上支持更高復雜度的編解碼器,并且當呼叫數量超過兩個參與者時,可以動態切換到其他視頻編解碼器
-?在低比特率下動態切換到更高復雜度的編解碼器
- 在一臺設備上并行啟用盡可能多的編解碼器解碼,然后根據其CPU能力決定編碼器應發送的內容
- 在同播中使用多個視頻編解碼器——例如,使用極低比特率的AV1,然后再使用較高比特率的VP8或VP9。雖然目前還不支持此功能,但是您可以使用不同的編解碼器和比特率打開兩個獨立的對等連接,以實現相似的結果。
這值得一試的嗎?答案是也許吧。您可以告訴我提高應用程序中的視頻質量是否重要。在WebRTC中,投機進入多視頻編解碼器領域大約需要80%的努力才能產生最后20%的改進。完成所有其他更簡單的優化后,請轉到此處。
?2021年WebRTC趨勢?
上個月,我主持了一個關于2021年WebRTC趨勢的研討會。
我介紹了單一視頻通話,語音壓縮,背景模糊,E2EE和視頻編碼方面的優化。?還介紹了選擇哪種視頻編解碼器的挑戰。
詳情請掃描圖中二維碼或點擊閱讀原文了解大會更多信息。
總結
以上是生活随笔為你收集整理的你会在你的WebRTC 应用程序中使用哪种视频编解码器呢?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XMC-GAN:从文本到图像的跨模态对比
- 下一篇: 全域调度:云边协同在视频场景下的探索实践