基于Beamer的幀級(jí)內(nèi)容自適應(yīng)速率控制進(jìn)行視頻編碼
在視頻方面,質(zhì)量和比特率之間的權(quán)衡十分微妙。內(nèi)容制作人希望最大限度地提高觀眾的質(zhì)量,而存儲(chǔ)和交付成本上的壓力迫使人們需要盡可能降低比特率。內(nèi)容自適應(yīng)編碼致力于通過(guò)使每個(gè)獨(dú)一無(wú)二的內(nèi)容(無(wú)論是完整剪輯還是單個(gè)場(chǎng)景)達(dá)到“最佳”比特率來(lái)解決這一挑戰(zhàn)。我們的CABR技術(shù)在幀級(jí)別調(diào)整編碼上取得了顯著進(jìn)展。CABR是一種閉環(huán)內(nèi)容自適應(yīng)速率控制機(jī)制,可在降低視頻編碼器編碼輸出文件的比特率的同時(shí),保留更高比特率編碼的感知質(zhì)量。作為一種低復(fù)雜度的解決方案,CABR還可以用于直播或?qū)崟r(shí)編碼。
視頻服務(wù),萬(wàn)眾矚目
根據(jù)Grand View Research的研究,從2019年到2025年,全球視頻流媒體市場(chǎng)預(yù)計(jì)將以19.6%的復(fù)合年增長(zhǎng)率持續(xù)增長(zhǎng)。這一轉(zhuǎn)變得益于Netflix、亞馬遜和Hulu等消費(fèi)級(jí)流媒體服務(wù)的日益普及,同時(shí)也得益于社交媒體網(wǎng)絡(luò)和UGC視頻平臺(tái)(如Facebook和YouTube)以及其他應(yīng)用程序(如在線教育和視頻監(jiān)控)上視頻內(nèi)容的不斷擴(kuò)張,保持視頻工作流程的高效運(yùn)轉(zhuǎn)成為大家關(guān)注的焦點(diǎn)問(wèn)題。因此,就編碼和交付成本而言,升級(jí)視頻編碼以滿足觀眾不斷提高的對(duì)視頻質(zhì)量的期待已成為擺在視頻服務(wù)提供商面前的首要命題。Beamer的CABR解決方案可以在不降低視頻質(zhì)量的情況下降低碼率,同時(shí)保持較低的計(jì)算成本以提升視頻服務(wù)的營(yíng)收效果。
對(duì)比內(nèi)容自適應(yīng)編碼解決方案
內(nèi)容自適應(yīng)編碼不是使用固定的編碼參數(shù),而是根據(jù)視頻剪輯的內(nèi)容動(dòng)態(tài)配置視頻編碼器以實(shí)現(xiàn)比特率和質(zhì)量之間的最佳平衡。過(guò)去業(yè)界已經(jīng)使用了各種內(nèi)容自適應(yīng)編碼技術(shù)以降低交付成本并提供更好的用戶體驗(yàn)。其中一些是完全手動(dòng)的,其原理是針對(duì)每個(gè)內(nèi)容類別手動(dòng)調(diào)整編碼參數(shù),有些是基于場(chǎng)景級(jí)別上(例如大量的藍(lán)光影片)調(diào)整。手動(dòng)內(nèi)容自適應(yīng)技術(shù)在場(chǎng)景等方面都存在諸多限制。
其他一些技術(shù)(例如YouTube和Netflix使用的技術(shù))基于應(yīng)用廣泛的編碼參數(shù),對(duì)每個(gè)主題(Title)使用“蠻力”編碼,然后通過(guò)使用速率失真模型或機(jī)器學(xué)習(xí)技術(shù)嘗試為每個(gè)主題(Title)或場(chǎng)景單獨(dú)設(shè)定編碼參數(shù)。該方法需對(duì)每個(gè)主題(Title)以不同的分辨率和比特率執(zhí)行多次完全編碼,因此需要大量的CPU資源。此類技術(shù)適用于大小受限制的各種內(nèi)容庫(kù),包括電視連續(xù)劇和電影等專業(yè)編碼內(nèi)容。但此方法不適用于視頻的大規(guī)模存儲(chǔ)庫(kù),例如UGC和實(shí)時(shí)編碼。
Beamer的CABR解決方案與上述技術(shù)的不同之處在于,其在閉環(huán)中工作并適應(yīng)每幀的編碼:視頻編碼器首先使用基于其常規(guī)速率控制機(jī)制的配置對(duì)幀進(jìn)行編碼,從而進(jìn)行初始編碼;然后Beamer的CABR速率控制指令編碼器使用各種編碼參數(shù)值再次對(duì)同一幀進(jìn)行編碼,從而創(chuàng)建候選編碼。使用獲得專利的感知質(zhì)量度量,CABR將每個(gè)候選編碼與初始編碼進(jìn)行比較,隨后選擇出最佳候選并將其放置在輸出流中,最佳候選是比特率最低但仍具有與初始編碼相同的視覺(jué)感知質(zhì)量的編碼數(shù)據(jù)。
利用Beamer的CABR速率控制
為了使Beamer的CABR技術(shù)能夠?qū)崿F(xiàn)以最小的視頻碼率達(dá)到以往高碼率編碼才能達(dá)到的視覺(jué)感知質(zhì)量,我們嘗試將每個(gè)視頻幀壓縮到最大程度以確保觀眾在觀看激烈運(yùn)動(dòng)畫面時(shí)能獲得滿意的視覺(jué)質(zhì)量。圖1是包含CABR技術(shù)的編碼解決方案的流程架構(gòu)示意圖。
圖1 – CABR編碼解決方案的流程架構(gòu)示意圖
集成的CABR編碼解決方案由視頻編碼器和CABR速率控制引擎組成。CABR引擎則包含負(fù)責(zé)管理優(yōu)化過(guò)程的CABR控制模塊和評(píng)估視頻質(zhì)量模塊。
如圖2所示,CABR編碼過(guò)程包括多個(gè)步驟。這些步驟中的一些會(huì)對(duì)每個(gè)編碼會(huì)話執(zhí)行一次,一些則會(huì)對(duì)每個(gè)幀執(zhí)行一次,另一些則是對(duì)每個(gè)候選幀編碼的迭代執(zhí)行。當(dāng)內(nèi)容自適應(yīng)編碼會(huì)話被啟動(dòng)時(shí),CABR引擎和編碼器將被初始化。在此階段,我們?cè)O(shè)置系統(tǒng)級(jí)參數(shù)如每幀的最大迭代次數(shù),然后編碼器速率控制模塊通過(guò)應(yīng)用其內(nèi)部邏輯來(lái)對(duì)每個(gè)幀進(jìn)行幀類型選擇工作。
圖2.包含內(nèi)容自適應(yīng)比特率編碼的視頻編碼器的流程架構(gòu)示意圖
編碼器為CABR引擎提供每個(gè)原始輸入幀,以便其在質(zhì)量度量計(jì)算器中進(jìn)行預(yù)分析。編碼器使用其自身的邏輯(用于位分配、運(yùn)動(dòng)估計(jì)、模式選擇、量化參數(shù)QP等)對(duì)幀執(zhí)行初始編碼;在對(duì)幀進(jìn)行編碼之后,編碼器向CABR引擎提供與之對(duì)應(yīng)的重構(gòu)幀初始編碼的幀以及一些輔助信息,例如以位為單位的幀大小和為每個(gè)MacroBlock或編碼樹單元(CTU)選擇的QP。
在每次迭代中,CABR控制模塊首先確定是否應(yīng)該重新編碼該幀。例如根據(jù)幀類型、幀的位消耗、先前幀或迭代的質(zhì)量以及根據(jù)為幀設(shè)置的最大迭代次數(shù)來(lái)完成。在某些情況下,CABR控制模塊可能會(huì)決定完全不對(duì)幀進(jìn)行重新編碼;在這種情況下,初始編碼幀將直接成為輸出幀,而編碼器將繼續(xù)下一幀的編碼工作;當(dāng)CABR控制模塊決定重新編碼時(shí),CABR引擎會(huì)為編碼器提供經(jīng)過(guò)修改的編碼參數(shù),例如建議的幀平均QP或與初始編碼的QP之間的差值。請(qǐng)注意,這里的QP或增量QP值是平均值,每個(gè)編碼塊的QP調(diào)制仍可以由編碼器執(zhí)行。在更復(fù)雜的實(shí)施方式中,CABR引擎可以提供每個(gè)編碼塊值的QP圖以及附加的編碼器配置參數(shù)。
編碼器使用修改后的參數(shù)對(duì)幀進(jìn)行重新編碼(請(qǐng)注意:此重新編碼不是完全編碼,而是利用初始編碼中的許多編碼決策;實(shí)際上編碼器可以僅對(duì)幀進(jìn)行重新量化,從而重新使用所有先前的運(yùn)動(dòng)矢量和模式?jīng)Q策。);然后編碼器向CABR引擎提供重構(gòu)的重新編碼幀,該幀成為候選幀之一;接下來(lái)質(zhì)量度量模塊計(jì)算相對(duì)于初始編碼幀的候選重新編碼幀的質(zhì)量,并將此質(zhì)量分?jǐn)?shù)以及編碼器報(bào)告的碼率消耗一起提供給CABR控制模塊,CABR控制模塊再次確定該幀是否應(yīng)該重新編碼;在這種情況下,CABR控制模塊會(huì)為下一次迭代設(shè)置編碼參數(shù)并重復(fù)上述過(guò)程;如果控制模塊確定對(duì)最佳幀參數(shù)的搜索已完成,則它將指示出,應(yīng)在輸出視頻流中使用該幀的所有先前編碼版本中的特定幀。請(qǐng)注意——編碼器速率控制模塊從當(dāng)前幀的初始編碼接收其反饋,下一幀的初始編碼(確定比特流的目標(biāo)質(zhì)量)不會(huì)受到影響。
CABR引擎可以以串行迭代方式或并行方式運(yùn)行。在串行方法中,先前迭代的結(jié)果可用于選擇下一個(gè)迭代的QP值;在并行方法中,CABR引擎同時(shí)提供所有候選QP值并且并行進(jìn)行編碼過(guò)程以減少等待時(shí)間。
將CABR引擎與軟件和硬件編碼器集成
Beamr已將CABR引擎集成到其AVC軟件編碼器Beamer 4和HEVC軟件編碼器Beamer 5中。實(shí)際上CABR引擎可以與任何軟件或硬件視頻編碼器集成,同時(shí)支持任何基于塊的視頻標(biāo)準(zhǔn),例如MPEG-、AVC、HEVC、EVC、VVC、VP9和AV1。
要將CABR引擎與視頻編碼器集成在一起,編碼器應(yīng)支持多項(xiàng)條件:首先,編碼器應(yīng)該能夠使用幾個(gè)不同的編碼參數(shù)(例如QP值)對(duì)輸入幀(已經(jīng)編碼的幀)進(jìn)行重新編碼,并保存每個(gè)編碼的不同階段狀態(tài),包括初始編碼;保存狀態(tài)的原因是當(dāng)CABR控制模塊選擇一個(gè)候選幀編碼(或初始編碼)作為輸出流中的一種時(shí),編碼器的狀態(tài)應(yīng)對(duì)應(yīng)于候選幀編碼后的狀態(tài);通常情況下,支持多線程操作的編碼器和硬件編碼器通常具有此功能,因?yàn)槊總(gè)幀編碼都是由無(wú)狀態(tài)單元執(zhí)行的。
其次,編碼器應(yīng)支持一個(gè)接口以提供重構(gòu)幀和編碼幀的每塊QP和碼率消耗信息。為了提高計(jì)算性能,我們還建議編碼器支持部分重新編碼模式,在該模式下,編碼器可以將在初始編碼中發(fā)現(xiàn)的與運(yùn)動(dòng)估計(jì)、分區(qū)和模式?jīng)Q策有關(guān)的信息用于重新編碼而無(wú)需再次計(jì)算;這樣便使得對(duì)于每個(gè)候選編碼,僅需要重復(fù)量化和熵編碼階段;而與完全重新編碼相比,這樣也使得優(yōu)化編碼結(jié)果的最小編碼效率下降,并且?guī)?lái)顯著的速度提升。如上所述,我們建議編碼器將初始編碼數(shù)據(jù)(QP、壓縮大小等)用于其速率控制狀態(tài)更新;而將CABR引擎與支持并行編碼且不增加延遲的硬件編碼器集成時(shí),我們建議使用并行搜索方法,允許每幀同時(shí)評(píng)估多個(gè)QP值。如果硬件編碼器可以執(zhí)行并行部分編碼(例如僅進(jìn)行重新量化和熵編碼)而所有并行編碼都使用初始編碼的分析階段(例如運(yùn)動(dòng)估計(jì)和模式?jīng)Q策),則可以實(shí)現(xiàn)更好的CPU性能。
樣品編碼結(jié)果
下面,我們提供了兩個(gè)基于CABR引擎編碼的示例結(jié)果,當(dāng)與Beamer 5集成時(shí),Beamer的HEVC軟件編碼器將分別說(shuō)明CABR的不同方面。
對(duì)于第一個(gè)示例,我們將多個(gè)4K 24FPS源剪輯片段按照目標(biāo)碼率為10 Mbps進(jìn)行編碼,每個(gè)剪輯的樣本幀如圖3所示。剪輯的內(nèi)容復(fù)雜度各不相同:“人群奔跑”(上)具有很高的復(fù)雜性,因?yàn)槠洚嬅嬷械谋姸嗯懿秸呔哂写罅考?xì)節(jié)和非常重要的動(dòng)作;“ 家庭聚會(huì)”(左下)則具有中等復(fù)雜度,同時(shí)還有一些視頻壓縮方面的挑戰(zhàn),例如不同的照明條件和相當(dāng)高的膠片顆粒感;最后,由于相對(duì)較低的運(yùn)動(dòng)和簡(jiǎn)單的場(chǎng)景,Beamr制作的“人物采訪”(右下)剪輯片段具有較低的復(fù)雜性。
圖3.測(cè)試剪輯中的樣本幀。上:人群運(yùn)行 左下:家庭聚會(huì) 右下:人物采訪。
我們使用Beamr 5 HEVC編碼器的VBR模式(執(zhí)行常規(guī)編碼)和CABR模式(可創(chuàng)建較低的碼率),將每個(gè)剪輯中的500幀編碼為10 Mbps的目標(biāo)碼率。對(duì)于高復(fù)雜度的剪輯“人群奔跑”來(lái)說(shuō),基于如此嚴(yán)苛的碼率條件提供足夠出色的質(zhì)量非常困難,CABR僅將碼率降低了3%;對(duì)于中等復(fù)雜性片段“ 家庭聚會(huì)”來(lái)說(shuō),CABR所能節(jié)省的碼率更多,達(dá)到了17%;對(duì)于最低復(fù)雜度的剪輯“人物采訪”,CABR將碼率降低了驚人的45%,同時(shí)仍獲得了與10 Mbps VBR編碼質(zhì)量相當(dāng)?shù)某錾|(zhì)量。可觀的碼率降低百分比證明了CABR增強(qiáng)編碼器具有足夠的內(nèi)容自適應(yīng)特性,可以達(dá)到令人滿意的碼率節(jié)省效果,
第二個(gè)示例使用來(lái)自Blender開放電影項(xiàng)目的著名電影“Tears of Steel”中的500幀1080p 24 FPS剪輯電影片段,使用Beamer 5 HEVC軟件編碼器的VBR和CABR模式對(duì)同一片段進(jìn)行編碼并以三個(gè)目標(biāo)碼率輸出:1.5、3和5 Mbps。在這種情況下,對(duì)于最低碼率(可產(chǎn)生1.4 Mbps編碼)CABR模式可節(jié)省13%;對(duì)于中等碼率(可產(chǎn)生1.8 Mbps編碼)則可節(jié)省44%;對(duì)于最高碼率(可產(chǎn)生2 Mbps編碼)則可節(jié)省62%。
圖4.來(lái)自“鋼之淚”的1080p 24 FPS的樣本編碼為5 Mbps(頂部)和1.5 Mbps(底部),以VBR模式(左)和CABR模式(右)編碼
圖4和5顯示了來(lái)自編碼剪輯的樣本幀,左側(cè)為VBR編碼,右側(cè)為CABR編碼。頂部的兩個(gè)圖像是從源編碼到5 Mbps碼率的幀,而底部的兩個(gè)圖像是從1.5 Mbps編碼得到的幀。如圖所示,兩種目標(biāo)碼率為5 Mbps的編碼幀均保留細(xì)節(jié),例如下唇的紋理或右眼上方額頭上的兩根頭發(fā)的紋理,而在較低碼率的編碼幀中,這些細(xì)節(jié)有些模糊。這就是以不同目標(biāo)碼率開始編碼時(shí)CABR不會(huì)收斂到相同碼率的原因。但是,我們還看到,初始編碼情況越好通?梢垣@得更多的碼率節(jié)省。此示例表明,CABR不僅適應(yīng)內(nèi)容的復(fù)雜性,還適應(yīng)目標(biāo)編碼的質(zhì)量,并在提供可觀節(jié)省的同時(shí)保留滿足運(yùn)動(dòng)畫面的感知質(zhì)量。
圖5.圖4中的臉部特寫視圖,顯示了以VBR模式(左)和CABR模式(右)進(jìn)行編碼的5 Mbps(頂部)和1.5 Mbps(底部)的嘴唇和額頭細(xì)節(jié)。
原文 https://blog.beamr.com/2019/09/11/cabr-content-adaptive-rate-control/
原文 https://blog.beamr.com/2019/09/11/cabr-content-adaptive-rate-control/