
基于Beamer的幀級內容自適應速率控制進(jìn)行視頻編碼
在視頻方面,質(zhì)量和比特率之間的權衡十分微妙。內容制作人希望最大限度地提高觀(guān)眾的質(zhì)量,而存儲和交付成本上的壓力迫使人們需要盡可能降低比特率。內容自適應編碼致力于通過(guò)使每個(gè)獨一無(wú)二的內容(無(wú)論是完整剪輯還是單個(gè)場(chǎng)景)達到“最佳”比特率來(lái)解決這一挑戰。我們的CABR技術(shù)在幀級別調整編碼上取得了顯著(zhù)進(jìn)展。CABR是一種閉環(huán)內容自適應速率控制機制,可在降低視頻編碼器編碼輸出文件的比特率的同時(shí),保留更高比特率編碼的感知質(zhì)量。作為一種低復雜度的解決方案,CABR還可以用于直播或實(shí)時(shí)編碼。
視頻服務(wù),萬(wàn)眾矚目
根據Grand View Research的研究,從2019年到2025年,全球視頻流媒體市場(chǎng)預計將以19.6%的復合年增長(cháng)率持續增長(cháng)。這一轉變得益于Netflix、亞馬遜和Hulu等消費級流媒體服務(wù)的日益普及,同時(shí)也得益于社交媒體網(wǎng)絡(luò )和UGC視頻平臺(如Facebook和YouTube)以及其他應用程序(如在線(xiàn)教育和視頻監控)上視頻內容的不斷擴張,保持視頻工作流程的高效運轉成為大家關(guān)注的焦點(diǎn)問(wèn)題。因此,就編碼和交付成本而言,升級視頻編碼以滿(mǎn)足觀(guān)眾不斷提高的對視頻質(zhì)量的期待已成為擺在視頻服務(wù)提供商面前的首要命題。Beamer的CABR解決方案可以在不降低視頻質(zhì)量的情況下降低碼率,同時(shí)保持較低的計算成本以提升視頻服務(wù)的營(yíng)收效果。
對比內容自適應編碼解決方案
內容自適應編碼不是使用固定的編碼參數,而是根據視頻剪輯的內容動(dòng)態(tài)配置視頻編碼器以實(shí)現比特率和質(zhì)量之間的最佳平衡。過(guò)去業(yè)界已經(jīng)使用了各種內容自適應編碼技術(shù)以降低交付成本并提供更好的用戶(hù)體驗。其中一些是完全手動(dòng)的,其原理是針對每個(gè)內容類(lèi)別手動(dòng)調整編碼參數,有些是基于場(chǎng)景級別上(例如大量的藍光影片)調整。手動(dòng)內容自適應技術(shù)在場(chǎng)景等方面都存在諸多限制。
其他一些技術(shù)(例如YouTube和Netflix使用的技術(shù))基于應用廣泛的編碼參數,對每個(gè)主題(Title)使用“蠻力”編碼,然后通過(guò)使用速率失真模型或機器學(xué)習技術(shù)嘗試為每個(gè)主題(Title)或場(chǎng)景單獨設定編碼參數。該方法需對每個(gè)主題(Title)以不同的分辨率和比特率執行多次完全編碼,因此需要大量的CPU資源。此類(lèi)技術(shù)適用于大小受限制的各種內容庫,包括電視連續劇和電影等專(zhuān)業(yè)編碼內容。但此方法不適用于視頻的大規模存儲庫,例如UGC和實(shí)時(shí)編碼。
Beamer的CABR解決方案與上述技術(shù)的不同之處在于,其在閉環(huán)中工作并適應每幀的編碼:視頻編碼器首先使用基于其常規速率控制機制的配置對幀進(jìn)行編碼,從而進(jìn)行初始編碼;然后Beamer的CABR速率控制指令編碼器使用各種編碼參數值再次對同一幀進(jìn)行編碼,從而創(chuàng )建候選編碼。使用獲得專(zhuān)利的感知質(zhì)量度量,CABR將每個(gè)候選編碼與初始編碼進(jìn)行比較,隨后選擇出最佳候選并將其放置在輸出流中,最佳候選是比特率最低但仍具有與初始編碼相同的視覺(jué)感知質(zhì)量的編碼數據。
利用Beamer的CABR速率控制
為了使Beamer的CABR技術(shù)能夠實(shí)現以最小的視頻碼率達到以往高碼率編碼才能達到的視覺(jué)感知質(zhì)量,我們嘗試將每個(gè)視頻幀壓縮到最大程度以確保觀(guān)眾在觀(guān)看激烈運動(dòng)畫(huà)面時(shí)能獲得滿(mǎn)意的視覺(jué)質(zhì)量。圖1是包含CABR技術(shù)的編碼解決方案的流程架構示意圖。

圖1 – CABR編碼解決方案的流程架構示意圖
集成的CABR編碼解決方案由視頻編碼器和CABR速率控制引擎組成。CABR引擎則包含負責管理優(yōu)化過(guò)程的CABR控制模塊和評估視頻質(zhì)量模塊。
如圖2所示,CABR編碼過(guò)程包括多個(gè)步驟。這些步驟中的一些會(huì )對每個(gè)編碼會(huì )話(huà)執行一次,一些則會(huì )對每個(gè)幀執行一次,另一些則是對每個(gè)候選幀編碼的迭代執行。當內容自適應編碼會(huì )話(huà)被啟動(dòng)時(shí),CABR引擎和編碼器將被初始化。在此階段,我們設置系統級參數如每幀的最大迭代次數,然后編碼器速率控制模塊通過(guò)應用其內部邏輯來(lái)對每個(gè)幀進(jìn)行幀類(lèi)型選擇工作。

圖2.包含內容自適應比特率編碼的視頻編碼器的流程架構示意圖
編碼器為CABR引擎提供每個(gè)原始輸入幀,以便其在質(zhì)量度量計算器中進(jìn)行預分析。編碼器使用其自身的邏輯(用于位分配、運動(dòng)估計、模式選擇、量化參數QP等)對幀執行初始編碼;在對幀進(jìn)行編碼之后,編碼器向CABR引擎提供與之對應的重構幀初始編碼的幀以及一些輔助信息,例如以位為單位的幀大小和為每個(gè)MacroBlock或編碼樹(shù)單元(CTU)選擇的QP。
在每次迭代中,CABR控制模塊首先確定是否應該重新編碼該幀。例如根據幀類(lèi)型、幀的位消耗、先前幀或迭代的質(zhì)量以及根據為幀設置的最大迭代次數來(lái)完成。在某些情況下,CABR控制模塊可能會(huì )決定完全不對幀進(jìn)行重新編碼;在這種情況下,初始編碼幀將直接成為輸出幀,而編碼器將繼續下一幀的編碼工作;當CABR控制模塊決定重新編碼時(shí),CABR引擎會(huì )為編碼器提供經(jīng)過(guò)修改的編碼參數,例如建議的幀平均QP或與初始編碼的QP之間的差值。請注意,這里的QP或增量QP值是平均值,每個(gè)編碼塊的QP調制仍可以由編碼器執行。在更復雜的實(shí)施方式中,CABR引擎可以提供每個(gè)編碼塊值的QP圖以及附加的編碼器配置參數。
編碼器使用修改后的參數對幀進(jìn)行重新編碼(請注意:此重新編碼不是完全編碼,而是利用初始編碼中的許多編碼決策;實(shí)際上編碼器可以?xún)H對幀進(jìn)行重新量化,從而重新使用所有先前的運動(dòng)矢量和模式?jīng)Q策。);然后編碼器向CABR引擎提供重構的重新編碼幀,該幀成為候選幀之一;接下來(lái)質(zhì)量度量模塊計算相對于初始編碼幀的候選重新編碼幀的質(zhì)量,并將此質(zhì)量分數以及編碼器報告的碼率消耗一起提供給CABR控制模塊,CABR控制模塊再次確定該幀是否應該重新編碼;在這種情況下,CABR控制模塊會(huì )為下一次迭代設置編碼參數并重復上述過(guò)程;如果控制模塊確定對最佳幀參數的搜索已完成,則它將指示出,應在輸出視頻流中使用該幀的所有先前編碼版本中的特定幀。請注意——編碼器速率控制模塊從當前幀的初始編碼接收其反饋,下一幀的初始編碼(確定比特流的目標質(zhì)量)不會(huì )受到影響。
CABR引擎可以以串行迭代方式或并行方式運行。在串行方法中,先前迭代的結果可用于選擇下一個(gè)迭代的QP值;在并行方法中,CABR引擎同時(shí)提供所有候選QP值并且并行進(jìn)行編碼過(guò)程以減少等待時(shí)間。
將CABR引擎與軟件和硬件編碼器集成
Beamr已將CABR引擎集成到其AVC軟件編碼器Beamer 4和HEVC軟件編碼器Beamer 5中。實(shí)際上CABR引擎可以與任何軟件或硬件視頻編碼器集成,同時(shí)支持任何基于塊的視頻標準,例如MPEG-、AVC、HEVC、EVC、VVC、VP9和AV1。
要將CABR引擎與視頻編碼器集成在一起,編碼器應支持多項條件:首先,編碼器應該能夠使用幾個(gè)不同的編碼參數(例如QP值)對輸入幀(已經(jīng)編碼的幀)進(jìn)行重新編碼,并保存每個(gè)編碼的不同階段狀態(tài),包括初始編碼;保存狀態(tài)的原因是當CABR控制模塊選擇一個(gè)候選幀編碼(或初始編碼)作為輸出流中的一種時(shí),編碼器的狀態(tài)應對應于候選幀編碼后的狀態(tài);通常情況下,支持多線(xiàn)程操作的編碼器和硬件編碼器通常具有此功能,因為每個(gè)幀編碼都是由無(wú)狀態(tài)單元執行的。
其次,編碼器應支持一個(gè)接口以提供重構幀和編碼幀的每塊QP和碼率消耗信息。為了提高計算性能,我們還建議編碼器支持部分重新編碼模式,在該模式下,編碼器可以將在初始編碼中發(fā)現的與運動(dòng)估計、分區和模式?jīng)Q策有關(guān)的信息用于重新編碼而無(wú)需再次計算;這樣便使得對于每個(gè)候選編碼,僅需要重復量化和熵編碼階段;而與完全重新編碼相比,這樣也使得優(yōu)化編碼結果的最小編碼效率下降,并且帶來(lái)顯著(zhù)的速度提升。如上所述,我們建議編碼器將初始編碼數據(QP、壓縮大小等)用于其速率控制狀態(tài)更新;而將CABR引擎與支持并行編碼且不增加延遲的硬件編碼器集成時(shí),我們建議使用并行搜索方法,允許每幀同時(shí)評估多個(gè)QP值。如果硬件編碼器可以執行并行部分編碼(例如僅進(jìn)行重新量化和熵編碼)而所有并行編碼都使用初始編碼的分析階段(例如運動(dòng)估計和模式?jīng)Q策),則可以實(shí)現更好的CPU性能。
樣品編碼結果
下面,我們提供了兩個(gè)基于CABR引擎編碼的示例結果,當與Beamer 5集成時(shí),Beamer的HEVC軟件編碼器將分別說(shuō)明CABR的不同方面。
對于第一個(gè)示例,我們將多個(gè)4K 24FPS源剪輯片段按照目標碼率為10 Mbps進(jìn)行編碼,每個(gè)剪輯的樣本幀如圖3所示。剪輯的內容復雜度各不相同:“人群奔跑”(上)具有很高的復雜性,因為其畫(huà)面中的眾多跑步者具有大量細節和非常重要的動(dòng)作;“ 家庭聚會(huì )”(左下)則具有中等復雜度,同時(shí)還有一些視頻壓縮方面的挑戰,例如不同的照明條件和相當高的膠片顆粒感;最后,由于相對較低的運動(dòng)和簡(jiǎn)單的場(chǎng)景,Beamr制作的“人物采訪(fǎng)”(右下)剪輯片段具有較低的復雜性。

圖3.測試剪輯中的樣本幀。上:人群運行 左下:家庭聚會(huì ) 右下:人物采訪(fǎng)。
我們使用Beamr 5 HEVC編碼器的VBR模式(執行常規編碼)和CABR模式(可創(chuàng )建較低的碼率),將每個(gè)剪輯中的500幀編碼為10 Mbps的目標碼率。對于高復雜度的剪輯“人群奔跑”來(lái)說(shuō),基于如此嚴苛的碼率條件提供足夠出色的質(zhì)量非常困難,CABR僅將碼率降低了3%;對于中等復雜性片段“ 家庭聚會(huì )”來(lái)說(shuō),CABR所能節省的碼率更多,達到了17%;對于最低復雜度的剪輯“人物采訪(fǎng)”,CABR將碼率降低了驚人的45%,同時(shí)仍獲得了與10 Mbps VBR編碼質(zhì)量相當的出色質(zhì)量。可觀(guān)的碼率降低百分比證明了CABR增強編碼器具有足夠的內容自適應特性,可以達到令人滿(mǎn)意的碼率節省效果,
第二個(gè)示例使用來(lái)自Blender開(kāi)放電影項目的著(zhù)名電影“Tears of Steel”中的500幀1080p 24 FPS剪輯電影片段,使用Beamer 5 HEVC軟件編碼器的VBR和CABR模式對同一片段進(jìn)行編碼并以三個(gè)目標碼率輸出:1.5、3和5 Mbps。在這種情況下,對于最低碼率(可產(chǎn)生1.4 Mbps編碼)CABR模式可節省13%;對于中等碼率(可產(chǎn)生1.8 Mbps編碼)則可節省44%;對于最高碼率(可產(chǎn)生2 Mbps編碼)則可節省62%。

圖4.來(lái)自“鋼之淚”的1080p 24 FPS的樣本編碼為5 Mbps(頂部)和1.5 Mbps(底部),以VBR模式(左)和CABR模式(右)編碼
圖4和5顯示了來(lái)自編碼剪輯的樣本幀,左側為VBR編碼,右側為CABR編碼。頂部的兩個(gè)圖像是從源編碼到5 Mbps碼率的幀,而底部的兩個(gè)圖像是從1.5 Mbps編碼得到的幀。如圖所示,兩種目標碼率為5 Mbps的編碼幀均保留細節,例如下唇的紋理或右眼上方額頭上的兩根頭發(fā)的紋理,而在較低碼率的編碼幀中,這些細節有些模糊。這就是以不同目標碼率開(kāi)始編碼時(shí)CABR不會(huì )收斂到相同碼率的原因。但是,我們還看到,初始編碼情況越好通常可以獲得更多的碼率節省。此示例表明,CABR不僅適應內容的復雜性,還適應目標編碼的質(zhì)量,并在提供可觀(guān)節省的同時(shí)保留滿(mǎn)足運動(dòng)畫(huà)面的感知質(zhì)量。

圖5.圖4中的臉部特寫(xiě)視圖,顯示了以VBR模式(左)和CABR模式(右)進(jìn)行編碼的5 Mbps(頂部)和1.5 Mbps(底部)的嘴唇和額頭細節。
原文 https://blog.beamr.com/2019/09/11/cabr-content-adaptive-rate-control/
原文 https://blog.beamr.com/2019/09/11/cabr-content-adaptive-rate-control/