手淘的產品目前已經拓展到直播、短視頻等領域,業務中存在著大量的圖片和視頻;自2015年起,圖片和視頻的數量呈指數級別高速增長;并且隨著網絡技術的發展與消費升級,用戶對圖片和視頻清晰度的要求也不斷提升,從最早的360P到現在的4k甚至8k,這些都帶來了寬帶成本與存儲成本的大規模提升,這也就是為什么我們希望借助H265技術支持音視頻業務的良性發展。
2、H.265介紹
2.1 成本效益
借助H265技術我們可以實現大規模并發場景下音視頻業務的有效成本控制。帶寬與存儲成本不容小覷,與H264相比,以典型4K場景中使用H265技術為例,可在保持畫質不變的同時節省達50%的帶寬,而以720P直播為例使用H265則可節省30%流量?,F在的流量有90%以上都來自移動端(手機)而非傳統意義的PC、服務器、Pad等;而對手機端尤其是Android設備而言,碎片化帶來的計算能力受限、性能層次不齊等問題使得H265上的很多優化與功能受到限制。如果我們直接將H265應用于手機端則會在解碼時出現發熱大、能耗高、實時編碼無法正常進行等現象;與此同時,也缺少快速、高效且成熟的端上編碼方案,這些都是亟待我們解決的問題。
2.2 編碼框架
接下來介紹下H265的編碼框架。H265編碼框架由四個模塊組成:輸入一段視頻的連續多幀,首先需要經過的是包含幀內預測、幀間預測兩個操作的預測模塊;隨后進行變換量化模塊也就是針對原始圖像塊與預測圖像塊的差值進行DCT和量化;接下來解碼模塊會將圖像解碼以便用于下一幀的預測;最后的熵編碼模塊將針對預測信息和殘差系數進行算數編碼從而進一步消除編碼冗余。
2.3 技術亮點
H265主要有哪些技術亮點?首先H265具有靈活的編碼結構,擁有CUPUN、CTUN等多個細分編碼單元;其次H265的塊大小也非常靈活,包括4×4、8×8等更多塊劃分方式;除此之外,H265的Sample Adaptive Offset(SAO)技術相對于Deblock和ALF具有更高性價比;最后在整個H265中包含了并行化設計,使得H265的優勢更加明顯。
除了以上技術亮點,H265相比于H264 在插值、MV預測、幀內預測、變換、去塊濾波等方面進行了大量改進與優化。上圖右側表展示的是H.265相對于H.264在多方面帶來提升的量化數據。
2.4 改進代價
H.265為音視頻帶來了技術提升,與此同時也帶來了不容忽視的改進代價。碼流的節省意味著計算復雜度的提升,從上圖右側的統計表中我們可以看出,相對于H264,H265的編碼復雜程度增加了約3到4倍,解碼復雜程度也增加了近50%。這就意味著傳統的針對H.264的軟硬件解決方案處理H.265會明顯感到力不從心,我們需要妥善解決因方案升級帶來的諸多技術挑戰。
3、H.265高效編解碼器的實現
即便如此,H.265的優勢也不容忽視。上圖展示的是我們在2017年開展的一項調研,以當時比較成熟的金山HEVC解碼器為例,對比標準H.265解碼器,無論是在解碼速度還是解碼質量上金山的HEVC解碼器都有很大優勢,這項調研結果也讓我們對H.265的未來發展更加充滿信心。
3.1 RDO優化
手淘在H.265編解碼領域作出了哪些探索?我們的優化探索主要分為兩部分:算法優化與工程優化,而算法優化主要集中在RDO方向。由于HEVC支持不同的CTU/CU/PU/TU組合模式,可選編碼模式激增;搜尋最優編碼模式時,隨著編碼模式數量的增加,率失真計算會成為編碼過程的計算瓶頸,這主要是由于傳統H.264中基于SATD的率失真優化不可在H.265中使用,需要精度更高的失真代價計算。為了優化RDO以實現更高效的處理效果,我們進行了以下7項改進:
高效預判CU層次。
采用基于紋理信息等內容的CU遍歷提前終止策略。
基于卷積神經網絡解決圖像分塊的非線性問題。
提前預判殘差AZB塊,從而減少D與R的計算。
使用量化誤差D和殘差比特數R的快速計算模型。
采用基于單調性的ME快速計算模型。
在35中模式中快速選擇合適的幀內預測模式。
1)模式劃分CTU/CU/PU/TU
以PU為例,H.264有7種劃分模式,而H.265則有24種劃分模式。
如果統計H.265中一個圖像可以選擇的所有劃分模式,一個塊有高達384種可選擇的劃分模式。只有計算完成所有選擇后才能確定最佳劃分方案,如何縮短計算如此多選擇所需要的時間?
2)RDO優化
快速模式決策——深度預估
首先,由于每塊的劃分層級與劃分深度和當前塊的參考幀塊之間有很強的相關性,利用時間和空間的相關性,我們可從參考塊的深度預估本塊的深度范圍并得到Min-depth與Max-depth;其次,即使本塊與上一塊或參考塊有相關關系,本塊也有一些自己獨有的信息可被利用,我們可通過結合本塊的運動與紋理信息界定深度的精度范圍,確定具體劃分深度的精度范圍。
快速模式決策——紋理Corner檢測
通過對圖像紋理的檢測我們可快速選擇最優的劃分模式。迅速識別平坦或對比度較強的紋理,提升劃分效率。
快速模式決策——CNN分類
應對帶Corner的紋理時,可通過按照強度判決是否繼續劃分來實現快速選擇,這對線性變化的處理效果較好,而在實際應用中我們需要面對很多非線性變化的應用場景,此時就需要CNN卷積神經網絡+深度學習的模型對非線性變化進行紋理分類與快速模式選擇,這里的線性分析與非線性分析是分開進行的。
快速模式決策——AZB決策
AZB(All Zero Block)是量化后系數為全0的塊,通過AZB提前判別決策可對塊進行快速歸類,從而減少D與R的計算。
縱覽整個劣勢幀的計算過程 ,計算Dp需原圖到重建圖像間的SSE,也就是完成編碼模式P的預測、變換、量化、反量化、反變換、重建等。為避免這樣冗長而復雜的計算過程,我們可以在變換與量化后在頻域計算殘差能量;而碼率統計 則是通過一次熵編碼實現,為了提高計算效率我們可以對殘差數據的碼率統計建立線性估計模型并根據NxN變換矩陣量化后的特征估計其碼率,可減少近50%的計算量。
FME最優搜索位置估計
這里我們主要進行的優化是,通過整像素點及1/2像素點的SAD值和其坐標來估算出最優1/4像素點,從而加速整個搜索過程。
快速幀率預測方法
我們采用了基于貝葉斯模型開發的一套幀內預測快速決策方法,可為幀內預測速度帶來一倍的提升并將損失降低到0.01dB。
3)碼率控制優化
我們使用以下策略對碼率控制與Lookahead進行優化,首先是基于CuTree的信息傳遞來調整CUQP,其次是基于rates和復雜度的IBP FrameQP,最后是·基于參考強度的Slice Type Decision,這一部分內容我會在LiveVideoStackCon 2018上作出更加詳細描述 。
4)參考幀優化——長期參考幀
我們知道,參考幀大都在一個GOP范圍內,往往有更好的編碼質量,參考幀有助于提高被參考幀的質量,而長期參考幀可能源于多個GOP。這就使得對于背景很少發生變化的直播場景,長期參考幀可有效減少信息經過多幀傳遞帶來的損失,引用長期參考幀可將平均EV提高大概0.25dB,
上圖展示的是各模塊計算量占比,以上就是我們圍繞RDO領域進行的多項探索。
3.2 工程化優化方法
基于工程方面我們也進行了多項優化,首先是針對一些特殊函數的匯編計算優化,我們通過采用NEON指令集優化,為典型計算性能帶來2~4倍的提升,如RDO(SSE、SAD)模塊、運動搜索模塊、幀內預測模塊等均提升兩倍以上;其次,針對現在移動端廣泛使用的多核處理器,我們優化多核并行計算并適應現代處理器的架構;除此之外,我們也優化bottleneck的指令和訪存,從而進一步提升整體性能。
3.3 優化成果
1)軟件編碼
經過算法與工程兩個層次上的優化,我們為HEVC編解碼帶來了明顯的性能提升。就編碼速度而言,手淘比X.265 17年初的版本提升3倍以上并可在iPhone6上實現720P&30幀的實時編碼;若想實現相同的編碼質量,手淘的編碼碼率相對于X.265降低了至少15%,上圖展示的便是具體的測試結果。
2)軟件解碼
軟解優化更多集中在工程方面也就是NEON指令集部分,較少在算法層面進行調整。通過對NEON指令集的優化與一些邏輯上的改寫,手淘可實現相對于FFmpeg提升150%以上的視頻解碼速度,例如將1Mbps 720P H.265的測試用例用于小米5手機進行解碼測試,其解碼速度可達兩百幀以上,而CPU的占用率也控制在20%以下;在處理圖片方面,例如對H.265的標準I幀處理上我們也做出了不少優化和改進,APG的圖片解碼速度相對于FFmpeg提升70%以上。
4、總結與未來展望
這里我們對視頻編碼標準的未來進行簡單的展望。過去10年大家都是按照H.264、H.265的標準;而在流媒體漸成趨勢的未來,Google提出的VP8、VP9、VP10,還有H.266、AV1等標準將推動音視頻行業向更光明的未來發展。技術的進步為我們實現更多更新潮的效果打下基礎,助力消費升級與用戶體驗的日漸完善。
如果簡單對比H.266與AV1我們可以看到,因為H.266引入了更多的四叉樹二叉樹結構(QTBT),整體的BD-Rate提升近4%;但H.266對比H.265,在保持畫質不變的情況下碼流降低了近1倍而整體編碼時間卻增加了2倍左右,整體解碼時間則增加近1倍?;谥暗恼{研我們發現,AV1的時間復雜度是X.265的2000~3000倍,這說明AV1未來的改進與優化任重而道遠。
Q&A
Q:VP9在將來會大面積普及嗎?
A:我認為VP9當前存在最大的妨礙其普遍推行的問題是兼容性,因為現在很多設備都采用向下兼容的策略,而VP9在諸多設備上的普及率不高;如果大家在直播等領域使用VP9進行編碼則必須經過轉碼之后才能通過CDN分享,隨后重新轉成H.264或H.265再播放,這樣勢必會帶來很多麻煩。
Q:能否在客戶端實現硬編?
A:現在的一些高端手機已經可以實現性能穩定的硬編H.265,例如對iOS而言,iPhone7以上的機型都可穩定實現。但在較為碎片化的安卓機型上,由于安卓機型解碼時對多種協議的支持力度不統一,加上不同檔次的手機性能差距過大,編碼性能受到很大影響。手淘上主播的機型主要是ios,所以在淘寶上我們主要采用硬編方案;而對于直播環境,因為需要CDN進行內容分發,而CDN重點支持的鏈路基本屬于H.264,編碼方式受限于整個直播的鏈路環境。
-
解碼
+關注
關注
0文章
181瀏覽量
27400 -
工程
+關注
關注
0文章
166瀏覽量
27873 -
H265
+關注
關注
0文章
5瀏覽量
16869
原文標題:手淘H265編解碼算法與工程優化
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論