0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹AV1編碼器的優(yōu)化以及其在流媒體和實時通訊中的應(yīng)用

LiveVideoStack ? 來源:LiveVideoStack ? 2023-02-06 16:58 ? 次閱讀

01 Introduction:libaom AV1

d8919964-a445-11ed-bfe3-dac502259ad0.jpg

我們先簡單看一下AV1。AV1是由AOMedia(開放多媒體聯(lián)盟)開發(fā)的,就是由多家公司聯(lián)合起來開發(fā)一種開源且沒有版稅的視頻編碼格式,AV1就是其第一代編碼格式。

AV1于2018年完成,在那個時候,AV1的編碼器復(fù)雜程度是非常高的。

但是AV1與它的前身VP9相比,如果在同樣的視頻質(zhì)量條件下,它能夠提供超過30%的bitrate的節(jié)省,所以它的壓縮率還是非常高。

Libaom AV1是AV1的參考代碼,我把它的link放在了上圖,大家有興趣可以測試一下。

d8a3b414-a445-11ed-bfe3-dac502259ad0.jpg

AV1增加了很多功能強大的壓縮工具,復(fù)雜性非常高,所以我們的目標(biāo)就是優(yōu)化AV1的編碼器,使得它能夠真正用在產(chǎn)品線上。

優(yōu)化工作著重于以下兩個應(yīng)用方面:

第一個是VOD的encoding。像YouTube這種編碼器一般都是離線進行,所以它對編碼器的速度要求沒有那么高,但是它對壓縮率的要求非常高;

第二種就是實時通訊的編碼。大家都知道實時通訊中要求非??斓膶崟r編碼器,而AV1的優(yōu)勢就在于它能夠允許在非常低的字節(jié)率的情況下進行視頻通訊,比如說Google的Duo是一個手機上面的視頻應(yīng)用程序,它可以在20-30kbps這么低的字節(jié)率情況下實現(xiàn)手機上的視頻通訊。

這對一些新興市場的用戶來說是非常有用的,Duo在2020年就已經(jīng)開始使用了?,F(xiàn)在,我們下一個目標(biāo)是Google的Chrome。WebRTC也是開源的,有興趣大家可以看一看。

02VOD encoding

第二部分我們介紹VOD的編碼。

d8b4a65c-a445-11ed-bfe3-dac502259ad0.jpg

這是一個簡單的AV1編碼器概述,第一個是預(yù)處理階段,其主要目的是rate control,就是怎么選擇frame或者block的quantizer;第二個階段是真正的編碼階段。

主要任務(wù)就是決定每一個block要選擇用什么樣的partition,mode,以及transform 等等;之后會對frame進行濾波,AV1支持三種In-loop的濾波器;最后一個階段要把Bitstream打包寫到一個文件中。

編碼器的整個過程中,絕大多數(shù)的時間花在了編碼階段。下面,我們就主要講一下這個階段的技術(shù)優(yōu)化。

d8c3382a-a445-11ed-bfe3-dac502259ad0.jpg

首先是Partition搜索。在AV1中,最大的塊尺寸是128x128,最小塊的尺寸可以到4x4。對每一個尺寸的塊,可以選擇10種partition的類型,例如:None,Split,Rectangular,及AB partition 類型。

所以說搜索空間是非常巨大的。我們主要用的方法是機器學(xué)習(xí),就是建立ML模型,對每一種partition的尺寸和類型,我們可以決定是否要去評估它,還是可以略過它。

這樣就大大減少了搜索空間,達到非常好的優(yōu)化結(jié)果。

d8d34df0-a445-11ed-bfe3-dac502259ad0.jpg

下一步就是我們提到的mode,即prediction mode的決策。在AV1中,一個block的prediction mode選擇有超過150種。

理論上,評估一個mode的好壞要基于它的RD成本,成本越低則越好。mode決策,我們采用一個多級的方法。

在初始快速評估級,因為RD成本計算非常慢,我們就不去精確計算RD成本,而是用一個近似模型來估計出RD成本。

雖然RD成本的精度不高,也能夠快速排除一些非常不適合的mode。第二級評估中,我們進行RD成本的簡化計算,進一步排除很大一部分不適合的mode。

所以,只有幾個候選mode留下來。在最后一級,我們仔細評估每一個候選mode,最后通過它們的RD成本找出最好的mode。

d8e637da-a445-11ed-bfe3-dac502259ad0.jpg

AV1支持多種變換類型。我們在優(yōu)化中間采用了機器學(xué)習(xí)的模型?;舅悸肥欠治鰌rediction之后的residue信號,通過分析找到有用的feature。如果這些feature跟最后變換的類型相關(guān)的話,就可以利用它們估計哪一種變換類型是比較適合的。通過這樣做優(yōu)化,達到一個加速的結(jié)果。

d8f65c8c-a445-11ed-bfe3-dac502259ad0.jpg

我們簡單看一下AV1跟VP9的性能比較。對產(chǎn)品線上的應(yīng)用,我們推薦AV1用speed2 到speed6。對VP9,我們推薦用speed1到speed4。這些編碼速度足夠快,而且提供很好的速度與壓縮率之間的平衡。上表中給出了AV1的speed2跟VP9的speed1的比較。我們用不同分辨率的一些視頻來做測試,采用了四種指標(biāo),即:AVG PSNR,Overall PSNR,SSIM還有VMAF。可以看到AV1的speed2相比較于VP9的speed1,平均可以給到超過30%的BD-rate的節(jié)省,在所有四種指標(biāo)上都有這樣的表現(xiàn)。

d906fb6e-a445-11ed-bfe3-dac502259ad0.jpg

在上圖中,我們把編碼器的速度也考慮進來,這里給出的數(shù)據(jù)都是單線程的結(jié)果。豎軸是BD-rate節(jié)省的百分數(shù),是由前面提到的四種指標(biāo)平均得到的。而橫軸是相對的編碼器時間??梢钥吹剑厦孢@條曲線是VP9的speed1到speed4,下面的曲線是AV1的speed2到speed6。AV1 speed2的BD-rate的節(jié)省超過30%,但它的編碼時間差不多是VP9 speed1的六倍多,比較慢。再來看AV1的speed 5,它跟VP9的speed2的編碼時間基本上是一樣的,而且比VP9 speed2提供22%的更多的BD-rate節(jié)省。從這點上也可以看到,相比于VP9來說,AV1潛力更大,它能夠帶來的BD-rate的節(jié)省更多。

d9185ae4-a445-11ed-bfe3-dac502259ad0.jpg

在編碼器中,為了能夠更好地加速,多線程的支持也是必不可少的?,F(xiàn)在AV1編碼器中,我們有三級多線程的實現(xiàn)。首先,最直接的,是基于tile的多線程。在AV1中,tile都可以獨立的編碼和解碼。每一個tile中間,我們還有基于行的多線程。行之間的編碼不是獨立的。比如說,下面一行中的塊要開始的話,它上面一行右邊的塊應(yīng)該先完成,所以有依賴性存在,在實現(xiàn)中要正確處理。上圖給出了一個簡單的多線程例子,這幅圖里一共有兩個tile,每一個tile有四行。我們會建一個job queue,把所有job放進來依次處理?!癟ile+行”的多線程性能比單純只基于tile的多線程要好很多。

d926fdb0-a445-11ed-bfe3-dac502259ad0.jpg

最近我們完成了frame并行處理 (FPMT)多線程。如果在“tile+行”的多線程之外,還有更多的線程可以用的時候,你可以再打開FPMT,這樣可以達到更好的效果。要使用FPMT,用戶要在編碼命令設(shè)置中打開它,即:“--fp-mt=1”。這樣,如果你設(shè)置的可使用線程足夠多的話,它就會啟動。

大家可能知道,在AV1編碼中,一個編碼單元是一組frame(即:GOP)。FPMT實現(xiàn)是基于AV1 GOP結(jié)構(gòu)。

比如,AV1里比較常用的就是16個frame一組的GOP或者32個frame一組的GOP。這里我給了一個GOP=16的例子,我們來看表中最下面的一行,從frame 0開始,0是Key frame,下一幅是frame 16,叫做Alt-ref frame,然后再到frame 8、frame 4。

接下來,我們稍微改變了一下編碼的順序。本來frame 2下來是frame 1,frame 3,然后,frame 6,frame 5,frame 7?,F(xiàn)在為了能夠并行處理這些frame,我們把frame順序改成2,6然后再做1、3、5、7。因為1、3、5、7都是leaf frame,可以被設(shè)置為non-reference frame,即:這些frame不會被用來作為別的frame的參考frame,所以對它們的編碼質(zhì)量要求不高。

這樣的話,這四個frame可以并行處理,然后下一層的2和6也可以拿來并行處理。這樣的順序調(diào)整允許更多frame的并行處理,達到的效果會更好。

d94746ec-a445-11ed-bfe3-dac502259ad0.jpg

這里我們給出一個應(yīng)用實例,來顯示編碼器多線程的scaling ratio。這是一個1080p和4K的視頻測試結(jié)果,我們用的tile是8個(2 rows x 4 columns)。對于4K視頻,可以看到,如果線程數(shù)足夠多,比如說16或者24的時候,多線程的速度是單線程速度的10倍,達到了很好的加速效果。

如果沒有FPMT的話,在線程到達一定數(shù)量的時候,scaling ratio就飽和了。有了FPMT,在有更多線程可以利用的時候,scaling ratio還可以提高。這就進一步提高了多線程編碼器的性能。

03RTC encoding

d958955a-a445-11ed-bfe3-dac502259ad0.jpg

下面我們看一下實時通訊中的AV1編碼。就像我們開頭講的,在實時通訊的應(yīng)用中,為了保證正常的視頻通話,編碼器的速度一定要非??於也荒苡醒舆t。所以,實時編碼不可能像VOD情況下可以用兩個甚至三個pass的編碼來達到好的壓縮效率,在這種時候,只能用一個pass的編碼,不能用任何lookahead frame,所以,基本上來一個frame就得立刻去處理它。

現(xiàn)在AV1的實時編碼器的速度范圍是speed5 到10。Speed 5和6共用了一些VOD代碼,壓縮率高,但也復(fù)雜一點。Speed 7-10是專用的實時代碼,所以會更快一些。

在多線程的支持上,主要是基于tile和基于行的多線程。因為不允許延遲,所以frame的并行在這里不實用。還有,AV1 RTC編碼器中支持scalable video coding(SVC),主要是spatial layers和temporal layers。 Rate control方面的話,對于RTC來講,因為沒有太多關(guān)于視頻frame的信息,所以多用constant bitrate(CBR),而且在AV1 RTC編碼器中還會支持一些adaptive quantization mode,比如:Background cyclic refreshing。

因為在視頻通話中,為了保證通話的平穩(wěn),單一frame編碼后的bitstream size不應(yīng)該比平均frame bitstream size大太多。所以,這種情況下,我們采用了一個周期性的refreshing。比如,在每一個frame中選定某一個百分比的一些塊,而且這些塊會是后續(xù)的frame的參考。

這樣,我們就可以增加這些塊的bits,提高壓縮性能,但不會增大單一frame的bitstream size。這也是實時通訊編碼器與VOD編碼器設(shè)計上的不同。

d9704718-a445-11ed-bfe3-dac502259ad0.jpg

這里給出AV1和VP9實時通訊編碼器的速度和BD-rate節(jié)省的一個比較。因為Google Meet 使用了VP9 speed7,所以我們這里用VP9 speed7作為baseline??梢钥吹剑珹V1的speed6能夠提供37%的BD-rate節(jié)省,但是相應(yīng)的話,它的編碼器的時間會到五倍多,比較慢。

AV1 speed9和10已經(jīng)跟VP9編碼器的時間類似,而且還可以提供13%到16%的BD-rate節(jié)省,所以從這里也能夠看出AV1的潛力還是更大一些。

d98aa5e0-a445-11ed-bfe3-dac502259ad0.jpg

下面就是一個簡短的總結(jié)。經(jīng)過這幾年的優(yōu)化,Libaom的AV1給VOD的應(yīng)用提供了一個非常優(yōu)秀的解決方案,希望我們的工作能夠促進AV1的廣泛應(yīng)用,滿足用戶的所有需求。AV1 RTC編碼器優(yōu)化還在持續(xù)地進行中,如果你對libaom AV1代碼熟悉的話,應(yīng)該會看到最近編碼器性能有很大的提高。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3552

    瀏覽量

    133792
  • VOD
    VOD
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    13420
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8323

    瀏覽量

    132165
  • WebRTC
    +關(guān)注

    關(guān)注

    0

    文章

    56

    瀏覽量

    11191

原文標(biāo)題:AV1編碼器的優(yōu)化及其在流媒體和實時通訊中的應(yīng)用

文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    什么是流媒體服務(wù)?

    服務(wù)就是MPEG4等壓縮格式,會遵循一定的技術(shù)指示然后進行壓縮編碼,從而可以進行數(shù)據(jù)傳輸和存儲。  它們主要的區(qū)別在于:  流媒體它是邊傳邊揪的一種格式,互聯(lián)網(wǎng)
    發(fā)表于 06-30 09:28

    NGcodec談FPGA編碼HEVC和AV1上現(xiàn)狀與未來

    大會上,資深多媒體技術(shù)咨詢師Jan Ozer對Ngcodec的CEO Oliver Gunasekara進行了訪談,談及了硬件編碼HEVC、VP9及AV1上的現(xiàn)狀與未來。LiveVi
    發(fā)表于 06-22 15:01 ?2070次閱讀

    通過Top 500美拍短視頻看AV1性能

    采用在實際生成環(huán)境中使用的主流視頻編碼器 x264、x265、VP9。 本文將詳細介紹整個評估過程,結(jié)合實驗數(shù)據(jù),綜合評價 AV1 短視頻上的性能表現(xiàn)。
    的頭像 發(fā)表于 04-26 11:38 ?1.1w次閱讀
    通過Top 500美拍短視頻看<b class='flag-5'>AV1</b>性能

    快訊:Libaom 2.0.0發(fā)布 對AV1的質(zhì)量和速度進行了重大改進

    開發(fā)人員認為AOMedia AV1 2.0版本現(xiàn)已成為真正意義上的“第一個正式版本”。Libaom 2.0為該開源AV1參考編碼器添加了實時編碼
    的頭像 發(fā)表于 06-15 13:58 ?5951次閱讀

    AV1硬件解碼將在Intel處理上實現(xiàn)

    將于2020年9月推出的英特爾Tiger Lake處理將是首款具有集成顯卡的英特爾處理,該顯卡支持AV1硬件解碼,但不進行編碼。 Linux
    的頭像 發(fā)表于 09-05 11:20 ?4054次閱讀
    <b class='flag-5'>AV1</b>硬件解碼將在Intel處理<b class='flag-5'>器</b>上實現(xiàn)

    谷歌正向智能電視制造商推廣 AV1視頻編碼格式

    AV1 作為一種全新的高效視頻編碼格式,目前已經(jīng)得到了許多最新顯卡的支持。這種格式最大的特點是編解碼免費開源,有望接替 VP9 以及 H.264,成為下一代被廣泛使用的視頻
    的頭像 發(fā)表于 01-18 10:49 ?1973次閱讀

    谷歌 YouTube 和 Netflix 未來將支持 AV1 硬件解碼

    1月31日消息 外媒 9to5 Google 報道,隨著流媒體的普及,AV1 編解碼作為一種節(jié)省帶寬和提高質(zhì)量的方式出現(xiàn)了。根據(jù) Synaptics 人士方面消息,YouTube
    的頭像 發(fā)表于 02-01 09:49 ?2392次閱讀

    有關(guān)AV1編碼器優(yōu)化技術(shù)

    首先是GOP優(yōu)化,GOP代表圖片組(group of picture)。我們要編碼的視頻序列有很多幀,編碼器會將這些幀分組為GOP。然后,編碼器將順序?qū)γ總€GOP進行
    的頭像 發(fā)表于 02-23 17:14 ?2261次閱讀
    有關(guān)<b class='flag-5'>AV1</b>的<b class='flag-5'>編碼器</b><b class='flag-5'>優(yōu)化</b>技術(shù)

    剖析AV1硬件的采用及未來發(fā)展

    Baliga,他將從什么是AV1、AV1硬件的采用、AV1的開發(fā)以及商業(yè)測試、軟件解碼,以及其AV1
    的頭像 發(fā)表于 05-13 10:21 ?2487次閱讀

    探究學(xué)術(shù)界AV1編碼優(yōu)化技術(shù)的進展

    優(yōu)化技術(shù)的進展。 各位專家以及屏幕前的各位觀眾大家好!我是朱辰,目前是上海交通大學(xué)圖像所的在讀博士生。本次分享的主題是學(xué)術(shù)界AV1編碼優(yōu)化
    的頭像 發(fā)表于 05-24 16:36 ?2548次閱讀
    探究學(xué)術(shù)界<b class='flag-5'>AV1</b><b class='flag-5'>編碼</b><b class='flag-5'>優(yōu)化</b>技術(shù)的進展

    Linux內(nèi)核的媒體子系統(tǒng)正在準備完善AV1解碼

    目前,提供加速AV1編碼的硬件平臺數(shù)量仍然相當(dāng)有限,但隨著越來越多的硬件進入市場,支持這種免版稅視頻編解碼變得越來越要緊,Linux內(nèi)核的媒體子系統(tǒng)也正在準備完善這一點。
    的頭像 發(fā)表于 08-17 09:30 ?1479次閱讀

    FFmpeg獲得NVENC AV1編碼支持

    代碼提交者 Timo Rothenpieler 表示,利用最新的 NVIDIA GeForce RTX 40 系列 GPU 上的 NVENC AV1 硬件編碼器,在他的測試,新的 NVENC
    的頭像 發(fā)表于 11-09 15:43 ?919次閱讀

    硬解之后,NVIDIA Ada架構(gòu)GPU新增AV1編碼

    AV1 是新的黃金標(biāo)準視頻格式,與舊的 H.264 和 H.265 格式相比具有更高的效率和質(zhì)量。它是開放媒體聯(lián)盟標(biāo)準化的最新免版稅高效視頻編碼器。
    的頭像 發(fā)表于 05-12 10:20 ?1477次閱讀
    硬解之后,NVIDIA Ada架構(gòu)GPU新增<b class='flag-5'>AV1</b><b class='flag-5'>編碼</b>

    高清視頻編碼器流媒體平臺的完美結(jié)合

    隨著數(shù)字化時代的快速推進,高清視頻已經(jīng)成為我們?nèi)粘I?b class='flag-5'>中不可或缺的一部分。在這一背景下,高清視頻編碼器流媒體平臺的結(jié)合變得尤為重要。兩者之間的完美結(jié)合不僅為用戶提供了高質(zhì)量的視頻體驗,還推動了視頻
    的頭像 發(fā)表于 02-20 15:14 ?395次閱讀
    高清視頻<b class='flag-5'>編碼器</b>與<b class='flag-5'>流媒體</b>平臺的完美結(jié)合

    谷歌計劃在Android系統(tǒng)升級采用libdav1d替換libgav1,提高AV1視頻性能

    然而,盡管眾多流媒體公司提供AV1內(nèi)容卻仍用其他編碼器形式傳輸至終端設(shè)備,因為許多設(shè)備尚未配置硬件解碼AV1視頻的芯片,僅靠軟件解碼難以滿
    的頭像 發(fā)表于 02-28 11:02 ?1168次閱讀