先來了解一下視頻在互聯網上傳輸需要經歷哪些環節。它必須先使用麥克風和攝像機捕捉音頻與視頻。然后,原始數據必須壓縮(編碼)到編解碼器中,通過互聯網連接(使用傳輸協議)廣播,發送到某種服務器端解決方案(server-side solution)(通常是CDN或一個基于云的集群(cloud-based cluster),如Red5 Pro),然后解壓(解碼),最終供用戶觀看視頻。
目前有相當多的編解碼器正在被使用,包括VP8/9,H.264(AVC),H. 265(HEVC)和AV1。今天這篇文章將主要關注VP8/VP9。我們把VP8與VP9歸為一類,因為它們在許可方面(regards to licensing)相似,且VP9是由VP8的演進。
盡管這篇文章主要關注VP9和H.265,但最重要的問題是使用什么樣的編碼器最好。最后,我們將說明為什么H.264是低延遲實時流媒體(low latency live streaming)的一個更有效的選擇。
VP9
VP9編解碼器是由Google開發的一款免費的開源視頻編碼標準。它是VP8的后續產品,最初用于壓縮YouTube上的超高清內容,因為它提高了其前一代的編碼效率。最初的VPX解編碼器來自于2010年被Google收購的On2技術公司。Google隨后將該編解碼器源。
H.265
H.265編解碼器,或稱高效視頻編碼(HEVC),是由視頻編碼專家組(VCEG)和動態圖像專家組(MPEG)的聯合開發出來的。它于2013年4月被批準為H.264(也被稱為高級視頻編碼(AVC))的官方后續產品。它提高了H.264的壓縮效率,并且將視頻的大小減小了大約50%。
H.264
如上所述,H.264或是AVC是目前最廣泛使用的視頻編輯解碼器。截至2019年9月,有91%的視頻行業開發者使用它。正如H.265一樣,H.264也是由動態圖像專家組(MPEG)作為對以前標準的改進而開發的,旨在通過互聯網有效地傳輸壓縮的高質量視頻。
H.264受多項專利保護,并得到了MPEG-LA組織的授權。然而,Cisco System在2013年向公眾提供了一種廣泛使用的免費開源編碼器和openH264解碼器。換句話說,Cisco為我們所有人使用的專利許可證付費。這反過來創造了H.264編解碼器的廣泛采用。OpenH264在所有的網絡瀏覽器中出現了。
上文我們已經介紹了編解碼器,讓我們來比較一下它們之間的不同。我們列出了6個關鍵因素來評估每個編解碼器。
編碼質量
VP9和H.265在這一類上沒有太大區別。無論使用哪種編解碼器,視頻看起來都很好。然而,當比特率較高時,H.265的性能略優于VP9,反之亦然。
為了判斷圖像質量,我們可以使用SSIM(結構標準指數測量),如下圖所示。當在因特網上廣播一個流(broadcasting a stream)時,壓縮和擴展(編碼和解碼)流中包含的可視數據的過程可能會導致輕微失真(slight distortions),因為解碼器會外推數據( decoder extrapolates the data )以顯示它。因此,SSIM本質上是編碼和解碼后衡量傳輸的圖像在編碼和解碼后的精確度。
圖1:比較libvpx(VP9)、x264(H.264)和x265(HEVC)的質量/比特率圖。(圖片來源:https://blogs.gnome.org/rbultje/2015/09/28/vp9-encodingdecoding-performance-vs-hevch-264/)
然而,與H.264相比,有一點不同。
VP9和H.265能夠提高壓縮的部分方法是通過使用larger macroblocks。macroblocks是圖像或視頻的處理單元,包含要顯示的圖像像素。H.264使用16×16宏塊,而PV9和H.265使用64×64宏塊。這些宏塊經過一系列稱為“幀內預測方向(intra-prediction directions)”的計算,將這些宏塊重建為相同的原始圖像,只是在非關鍵區域的細節略有減少。這使得VP9和H.265能夠提高效率,因為不太詳細的區域(如天空或圖像的模糊背景)不會被分解成更小的單元。這些區域中丟失的細節不會顯著降低圖像的整體質量,因為其重要部分被渲染得更加詳細。還應該注意的是,隨著比特率的增加,AVC(H.264)和其他兩種編解碼器之間的質量差異會變小。
圖片來源:https://www.macxdvd.com/mac-dvd-video-converter-how-to/h265-vs-h264.htm
H.264會產生較差的圖像,特別是在較低的比特率下。當比較以相同比特率運行的圖像時,VP9和H.265都比用H.264生成的圖像更詳細和更清晰。換句話說,為了產生相同質量的VP9或H.265圖像,H.264需要以更高的比特率運行。然而,質量上的差異雖然可以察覺,但并不一定是一個直接的問題。為了更客觀地衡量這一點,我們可以看看SSIM,它顯示H.264的結果非常接近VP9和H.265。因此,雖然H.264在圖像質量方面可能不如h.264,但這種差異不足以克服下一節中詳細介紹的大的權衡(big tradeoff)。
我們還應該指出其他因素,如改進的亞像素插值(sub-pixel interpolation)和運動矢量參考選擇( motion vector reference selection )(運動估計motion estimation)也提高了圖像質量。這是因為它們有助于預測電影中下一幀會是什么樣子。這些都是相當復雜的概念,值得他們在自己的文章中討論,所以我們到此為止。
優勝者:平局
Encoding Time
為了達到更高的壓縮率,VP9和H.265需要執行更多的處理。所有這些額外的處理意味著它們需要更長的時間來編碼視頻。這將對你的延遲造成損害,因為所有額外的處理時間都會延遲視頻的播放。除了其他因素之外,延遲對于確保你的實時視頻流能夠提供交互式體驗非常重要。
圖2:將編碼時間作為比特率改進的因素,比較libvpx(VP9)、x264(AVC)和x265(HEVC)圖片來源:https://blogs.gnome.org/rbultje/2015/09/28/vp9-encodingdecoding-performance-vs-hevch-264/
那么,上面的圖表到底是什么意思呢?
此圖在水平軸上顯示了編碼時間(以秒為單位)??v軸顯示了比特率的改進,它將SSIM和比特率的組合與設置為x265@veryslow的參考點進行比較。參考點是為什么x264沒有超過0%的原因。
這張圖告訴了我們什么?
VP9和H.265(如廣告宣傳的那樣)比H.264好50%。但它們的速度也慢10到20倍。如果你追循x264(AVC)的藍線,你將看到對于大多數比特率基準點,它始終低于其他兩條線。不僅如此,綠色(H.265)和橙色(VP9)線在它們的曲線中很早就與H.264相交。這意味著每幀速率的秒數將開始急劇增加,并真正降低你的流性能(stream performance.)。因此,雖然VP9和H.265顯示出更好的壓縮率,但它以非常高的編碼時間為代價,這將大大增加延遲。Waterloo University的這項研究對編碼時間和編解碼器的比較進行了更深入的分析。(參考資料:https://ece.uwaterloo.ca/~w238liu/2019comparative/paper/iciar2019cc.pdf)
優勝者:H.264
中央處理器消耗
正如上一節所述,VP9和H.265都必須比H.264運行更多的壓縮算法(compression algorithms),這將增加它們的CPU使用率。即使在完全優化的情況下,實時流媒體也是一個CPU密集型的過程,因此提高已經很高的使用率將是一個問題。然而,有一些東西可以緩解這一點:硬件支持。專用芯片組將降低CPU消耗。
目前H.265享受更多的硬件支撐,包括Windows10(可下載或通過Inter Kaby Lake或更新的處理器)、Apple(iOS 11)和Android(Android 5.0)設備。雖然大多數移動設備支持VP9,但大多數其他系統不支持。如果沒有直接的硬件支持,VP9編碼過程將會限制CPU,消耗大量資源,縮短電池壽命,并可能增加延遲。
我們將在下一節中介紹H.264享有廣泛的支持,而且不會像VP9或H.265那樣消耗CPU。
優勝者:H.264,H.265緊跟其后。
Adoption and Browser Implementation
為了使用編解碼器,需要有硬件的支持或軟件編碼器。H.265的采用率很低,這在很大程度上是由于專利許可。H.265有四個相關的專利池:HEVE Advance、MPEG LA、Velos Media和Technicolor。這使得它更加昂貴,也阻礙了它的廣泛應用,從而限制了它僅限于特定的硬件編碼器和移動芯片組( mobile chipsets)。只有Edge、Internet Explorer和Safari支持H.265硬件編碼。即使到那時運行瀏覽器的設備仍然需要支持H.265硬件編碼。即使在正確實現的瀏覽器中支持H.265,WebRTC也往往無法正常工作。沒有WebRTC的支持,實現實時延遲會是困難的。
VP9是免稅版和開源的,這為其更廣泛的采用掃清了道路。主要瀏覽器Chrome、Firefox、Edge以及操作系統Windows10、Android 5.0、iOS 14和macOS BigSur都支持該功能。由于WebRTC支持VP9,它也可以直接在瀏覽器中工作。也有傳言說Safari瀏覽器的支持也即將到來。
盡管H.264有一項與之相關的專利,正如我們前面提到的,2013年思科對H.264實現進行了開源,并以free binary download的形式發布了它。這對H.264的廣泛應用是一個巨大的推動。因此,H.264得到了所有瀏覽器、筆記本電腦和移動設備的支持。
優勝者:H.264與VP9之間縮小了差距。
帶寬節省
提高壓縮率和減小文件大小的最大好處是在廣播時消耗更少的帶寬。這意味著網速較慢的用戶仍然可以觀看更高質量的視頻流。
那么,哪種編解碼器能產生更好的壓縮效率來創建一個更小的視頻呢?
根據Nettfix的一項測試,H.265的表現比VP9高出約20%。盡管其他的測試產生了不同的結果,但他們都得出結論,H.265創建了更小的文件大小。根據所使用的客觀度量標準( objective metric ),H.265比VP9節省了0.6%至38.2%的比特率。
然而,雖然消耗更少的帶寬是有用的,但還有其他一些因素需要考慮。全球固定寬帶連接的平均上傳速度為42.63 Mbps,這意味著盡管H.264要求更高的連接速度,大多數地方也能支持4K流媒體。盡管移動設備的平均上傳速度低得多,為10.93 Mbps,但它們仍然可以支持1080p流。
這張來自Boxcast的圖表顯示,全球平均連接速度肯定能夠滿足所有分辨率級別的上傳速度要求。注意:我們無法找到一個比較所有三種編解碼器的圖表,但是VP9應該介于H.264和H.265之間。
圖片來源:https://www.boxcast.com/blog/hevc-h.265-vs.-h.264-avc-whats-the-difference
此外,還有一些方法可以配置你的流媒體應用程序,以滿足網速較慢國家的用戶。您可以通過添加ABR和代碼轉換支持來實現這一點。ABR(自適應比特率)將修改比特率,以提供最佳的體驗。代碼轉換將廣播分成多個質量,這樣客戶端可以根據可用帶寬請求最佳質量。
你可能會想“如果移動設備卡在2或3G連接上怎么辦?”幸運的是,手掌大小的設備不需要傳輸最高分辨率就能看起來很好。720甚至480依然會顯示出不錯的質量。
“While bandwidth consumption may not matter as much to a consumer, it must be acknowledged that companies will save money in regards to bandwidth costs if they stream with VP9 or h.265. The savings come from the smaller files which means they will not pay as much for more data streaming over CDN or cloud networks. While that is certainly nice, it is only at really high-resolution settings such as 4K that halving the data consumption makes a substantial difference.”
雖然帶寬消耗對消費者來說可能不是那么重要,但必須承認的是,如果公司使用VP9或H.265進行傳輸,就會節省帶寬成本。這些節省的費用來自于較小的文件,這意味著他們不用為通過CDN或云網絡傳輸上的更多數據流支付那么多的費用。這當然很好,但只有在像4K這樣的高分辨率環境下,數據消耗減半才會產生實質性的影響。
當然,無論什么規模,省錢當然是重要的。這就引出了我們的下一個觀點,它將呈現兩個世界的最佳狀態:相同的性能下更好的壓縮。
優勝者:H.265
LCEVC回避了整個爭論
LCEVC(低復雜度增強視頻編碼)為所有編解碼器增加了大約40%的壓縮率。這是因為它是一個額外的處理層,可以與現有和未來版本的MPEG或其他編解碼器(如VP9和AV1)一起工作。正如我們在上一篇文章中所提到的,LCEVC對視頻流技術有著巨大的潛在影響。在不改變所有現有協議的組成的情況下,LCEVC可以使它們本身更有效。
從目前的情況來看,內容提供商似乎能夠使用支持LCEVC的軟件或基于硬件的編碼器,并結合Red5 Pro跨云平臺來解鎖實時流,盡管它們是用處理密集型視頻格式構建的。根據使用的核心編解碼器的不同,這不僅適用于4K,最終也適用于8K UHD,還適用于為360度觀看、虛擬現實和其他創新設計的格式。
LCEVC被廣泛采用背后的驅動力是:幾乎任何設備都可以支持thin LCEVC客戶端,這些客戶端可以獨立下載到觀眾的設備上,或者嵌入到服務提供商的app player中。通過它的HTML5 JavaScript實現, LCEVC也支持插件式免費瀏覽器支持。這意味著廣泛的實現應該是相當簡單的。
什么是實用?
在考慮了這里列出的一切之后,AVC/H.264由于其廣泛的采用和快速的編碼速度成為目前的最佳選擇。雖然提高壓縮和視頻質量是重要的考慮因素,但目前的權衡太嚴重了。具體來說,高編碼時間和大量的CPU消耗對于直播視頻來說是非常糟糕的。
也就是說,考慮到VP9是免費的,而且還享有廣泛的設備支持,一旦更快的軟件或硬件編碼器被創建出來,在不久的將來它將是一個可行的選擇。在遙遠的將來,AV1最終將會取代VP9,但考慮到它目前所面臨的超高編碼時間,在它準備好廣泛使用之前,還需要進行大量的簡化工作。當然,LCEVC可能會繞過更改編解碼器以獲得更好壓縮的整個問題。也許它只是H.264和AV1之間的一座長存的橋梁。
盡管如此,AV1仍將取代H.264、H.265和VP8/9。隨著視頻消費的增長,帶寬限制的減少將使發送用戶正在尋找的高質量視頻變得更加容易。這對于遠離有線連接、更依賴手機連接的發展中地區來說尤其如此。它背后的財團有所有主要的參與者參與,而且是免版稅的。目前, AV1缺乏實時編碼器是阻礙AV1發展的主要原因。一旦它們變得廣泛可用,AV1(特別是當與LCEVC配對使用)將是前進的方向。
-
編解碼
+關注
關注
1文章
140瀏覽量
19628
原文標題:VP9與H.265的6個不同點
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論