AOMedia Video 1(AV1)是一種開源、免版稅的編解碼器,最初設計用于Internet上的視訊傳輸。它是由開放媒體聯盟(AOMedia)于VP9的繼任者開發的,成立于2015年,包括半導體公司,視訊點播提供商,視訊内容生産商,軟體開發公司和網絡浏覽器供應商。AV1比特流規範包括參考視訊編解碼器。AV1參考編碼器分别比libvpx-vp9,x264高配置檔案和x264主配置檔案分别實作了34%,46.2%和50.3%的資料壓縮。像VP9一樣,但與H.264 / AVC和HEVC不同,AV1具有免版稅的許可模式。另外,AV1圖像檔案格式(AVIF)是一種使用AV1壓縮算法的圖像檔案格式。
一、技術細節
AV1是具有新技術的傳統的基于塊的頻率轉換格式。基于Google的VP9,并且結合其他技術,這些技術主要為編碼器提供了更多的編碼選項,以更好地适應不同類型的輸入。其工作過程如下:

1. 分區
幀内容被分成相鄰的相同大小的塊,稱為超級塊。與宏塊的概念類似,超級塊是正方形的,大小可以為128×128或64×64像素。可以根據不同的劃分模式将超級塊劃分為較小的塊。四向拆分模式是唯一可以遞歸細分其分區的模式。這允許将超級塊劃分為小至4×4像素的分區。如下圖所示:
AV1超級塊分區圖。它顯示了如何将128×128超級塊一路拆分為4×4塊。作為特殊情況,128×128和8×8塊不能使用1:4和4:1分割,而8×8塊不能使用“ T”形分割。
引入了“ T形”分區模式,這是為VP10開發的功能,并且可以将水準或垂直拆分成4個縱橫比為4:1和1:4的條紋。可用的分區模式根據塊大小而有所不同,128×128和8×8塊均不能使用4:1和1:4拆分。而且,8×8塊不能使用“ T”形分割。
現在可以使用平滑,傾斜的過渡線在塊的空間不同部分上使用兩個單獨的預測(楔形分割的預測)。這樣就可以更精确地分離對象,而無需沿着方形塊的邊界使用傳統的階梯線。得益于圖塊行(
ext_tile
)之間可配置的預測依賴性,可以實作更多的編碼器并行性。
2. 預測
AV1以更高的精度(每個樣本10或12位)執行内部處理,由于參考圖像中的舍入誤差較小,是以可以改善壓縮效果。可以在一個塊中以更進階的方式組合預測(複合預測),包括不同方向上的平滑且尖銳的過渡漸變以及基于像素之間差異的隐式蒙版。這允許在同一塊中使用兩個幀間預測或幀間和幀内預測的組合。一幀可以引用6個而不是8個可用幀緩沖區中的3個進行時間(幀間)預測,同時在雙向預測上提供更大的靈活性。
AV1中的扭曲運動(
warped_motion
)和全局運動(
global_motion
)工具旨在通過識别錄影機運動産生的模式來減少運動矢量中的備援資訊。他們實作了試圖以諸如MPEG-4 ASP之類的先前格式加以利用的思想,盡管它采用了在三個次元上都能發揮作用的新穎方法。對于比特流中提供的整個幀,可以有一組變形參數,或者塊可以使用一組隐含的局部參數,這些參數是根據周圍的塊進行計算的。切換幀(S幀)是一種新的幀間類型,可以使用來自同一視訊的高分辨率版本的已解碼參考幀進行預測,以允許切換到較低分辨率而無需在開始時使用完整的關鍵幀自适應比特率流傳輸用例中視訊片段的大小。
幀内預測
幀内預測包括僅使用目前幀中可用的資訊來預測給定塊的像素。通常,幀内預測是根據預測塊上方和左側的相鄰像素建構的。DC預測器通過對塊上方和左側的像素進行平均來建構預測。方向預測變量根據指定的角度外推這些相鄰像素。在AV1中,可以選擇8種主要方向模式。這些模式以45度角開始,并以22.5度的步長增加,直至203度。此外,對于每種定向模式,對于較大的塊,可以發出六個3度的偏移信号,三個偏移在主角度之上,三個在主角度之下,導緻總共56個角度(
ext_intra
)。“ TrueMotion”預測器已替換為Paeth預測器,該預測器檢視從左上角的已知像素到新像素正上方和正左側的像素之間的差異,然後選擇一個位于較小漸變方向上的像素作為預測名額。調色闆預測器可用于很少(最多8種)主色的塊,例如某些計算機螢幕内容中的塊。現在,可以基于色度塊的預測器來利用亮度和顔色資訊之間的相關性,該預測器基于來自亮度平面(
cfl
)的樣本。為了減少沿着幀間預測塊的邊界的可見邊界,一種稱為重疊塊運動補償的技術(OBMC)可以使用。這涉及擴充塊的大小,以使其與相鄰塊重疊2到32個像素,并将重疊部分混合在一起。
3. 資料轉換
為了将預測後剩餘的誤差轉換到頻域,AV1編碼器可以使用正方形,2:1/1:2和4:1/1:4矩形DCT(
rect_tx
)以及非對稱DST用于由于附近像素的預測而預期上邊緣和/或左邊緣具有較低誤差的塊,或者選擇不進行任何變換(身份變換)。它可以組合兩個一維變換,以便對水準和垂直次元(
ext_tx
)使用不同的變換。
4. 量化
AV1具有新的優化量化矩陣(
aom_qm
)。量化參數可被選擇和發信号通知針對每個幀現在有用于兩個色度平面的各個參數和可以使用的空間預測。在每個新的超級塊上,可以通過發信号通知偏移來調整量化參數。
5. 過濾器
在環路濾波步驟中,Thor的限制低通濾波器和Daala的定向去環濾波器的內建取得了豐碩的成果:組合的“限制方向增強濾波器”(
cdef
)超過了單獨或一起使用原始濾波器的結果。它是一個邊緣定向的條件替換濾波器,可大緻沿主導邊緣的方向平滑具有可配置(信号化)強度的塊,以消除振鈴僞影。還有基于Wiener濾波器和自導式恢複濾波器的環路恢複濾波器(
loop_restoration
),以消除由于塊處理引起的模糊僞像。
薄膜顆粒合成(
film_grain
)使用參數視訊編碼方法改善了對噪聲信号的編碼。由于膠片顆粒噪聲固有的随機性,傳統上該信号分量要麼編碼非常昂貴,要麼易于損壞或丢失,可能會留下嚴重的編碼僞像。該工具通過分析和綜合來避免這些問題,僅基于主觀視覺印象而不是客觀相似性,用視覺相似的合成紋理替換部分信号。它從信号中去除顆粒成分,分析其非随機特性,然後僅将描述性參數傳輸到解碼器,進而将合成的僞随機噪聲信号加回到原始分量之後的信号中。它在視覺上等同于AC3,AAC。
6. 熵編碼
達拉的熵編碼器(
daala_ec
),非二進制算術編碼器,被選擇用于置換VP9的二進制熵編碼器。采用非二進制算術編碼有助于躲避專利,而且還增加了位級并行到串行否則程序,減少對硬體實作時鐘速率的要求。這是說,現代二進制算術編碼等的有效性CABAC正在接近使用不是二進制的,是以更大的速度更大的字母表,如霍夫曼碼(但不像霍夫曼代碼那樣簡單快捷)。AV1還具有适應算術編碼器中每個編碼符号而不是每個幀(
ec_adapt
)的符号機率的功能。
二、Profile與Level
1. Profile
AV1為解碼器定義三個Profile:Main,High和Professional。Main配置檔案允許每個樣本具有8:0或10位的位深度,并具有4:0:0(灰階)和4:2:0色度采樣。高配置檔案進一步增加對4:4:4色度采樣的支援。專業配置檔案将功能擴充為完全支援具有8位,10位和12位色深的4:0:0、4:2:0、4:2:2和4:4:4色度子采樣。
2. Level
AV1為解碼器定義級别,最大變量的級别範圍為2.0到6.3。可以實作的級别取決于硬體功能。如下表所示,分辨率 為2.0級為426×240 @ 30 fps, 3.0級為854×480 @ 30 fps,4.0級為1920×1080 @ 30 fps, 5.1級為3840×2160 @ 60 fps,3840×2160 @ 120 fps對于5.2級,則為7680×4320 @ 120 fps。
等級 | 最大圖檔大小 (樣品) | 最大高度 (樣品) | 最大尺寸 (樣品) | MaxDisplayRate (赫茲) | 最大解碼率 (赫茲) | MaxHeader 頻率(Hz) | 主Mbps (兆位/秒) | 高Mbps (兆位/秒) | 最小比較基礎 | 最大瓷磚 | 馬克斯瓦克斯 | 例子 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2.0 | 147456 | 2048 | 1152 | 4,423,680 | 5,529,600 | 150 | 1.5 | -- | 2 | 8 | 4 | 426×240 @ 30幀 |
2.1 | 278784 | 2816 | 1584 | 8,363,520 | 10,454,400 | 150 | 3.0 | -- | 2 | 8 | 4 | 640×360 @ 30fps |
3.0 | 665856 | 4352 | 2448 | 19,975,680 | 24,969,600 | 150 | 6.0 | -- | 2 | 16 | 6 | 854×480 @ 30幀 |
3.1 | 1065024 | 5504 | 3096 | 31,950,720 | 39,938,400 | 150 | 10.0 | -- | 2 | 16 | 6 | 1280×720 @ 30fps |
4.0 | 2359296 | 6144 | 3456 | 70,778,880 | 77,856,768 | 300 | 12.0 | 30.0 | 4 | 32 | 8 | 1920×1080 @ 30fps |
4.1 | 2359296 | 6144 | 3456 | 141,557,760 | 155,713,536 | 300 | 20.0 | 50.0 | 4 | 32 | 8 | 1920×1080 @ 60fps |
5.0 | 8912896 | 8192 | 4352 | 267,386,880 | 273,715,200 | 300 | 30.0 | 100.0 | 6 | 64 | 8 | 3840×2160 @ 30幀 |
5.1 | 8912896 | 8192 | 4352 | 534,773,760 | 547,430,400 | 300 | 40.0 | 160.0 | 8 | 64 | 8 | 3840×2160 @ 60fps |
5.2 | 8912896 | 8192 | 4352 | 1,069,547,520 | 1,094,860,800 | 300 | 60.0 | 240.0 | 8 | 64 | 8 | 3840×2160 @ 120fps |
5.3 | 8912896 | 8192 | 4352 | 1,069,547,520 | 1,176,502,272 | 300 | 60.0 | 240.0 | 8 | 64 | 8 | 3840×2160 @ 120fps |
6.0 | 35651584 | 16384 | 8704 | 1,069,547,520 | 1,176,502,272 | 300 | 60.0 | 240.0 | 8 | 128 | 16 | 7680×4320 @ 30幀 |
6.1 | 35651584 | 16384 | 8704 | 2,139,095,040 | 2,189,721,600 | 300 | 100.0 | 480.0 | 8 | 128 | 16 | 7680×4320 @ 60幀 |
6.2 | 35651584 | 16384 | 8704 | 4,278,190,080 | 4,379,443,200 | 300 | 160.0 | 800.0 | 8 | 128 | 16 | 7680×4320 @ 120fps |
6.3 | 35651584 | 16384 | 8704 | 4,278,190,080 | 4,706,009,088 | 300 | 160.0 | 800.0 | 8 | 128 | 16 | 7680×4320 @ 120fps |
三、支援的容器格式
标準化
ISO基本媒體檔案格式:AOMedia的ISOBMFF容器化規範是第一個定稿的,也是第一個獲得采用的規範。這是YouTube使用的格式。
Matroska:Matroska容器化規範的第1版于2018年末釋出。
不規範
WebM:就形式而言,截至2019年末,AV1尚未被準許納入稱為WebM的Matroska子集中。
On2 IVF:此格式是從VP8的第一個公開發行版繼承的,在此它用作簡單的開發容器。 rav1e也支援此格式。
标準WebM:在指定Matroska容器化之前,Libaom具有對WebM的早期支援,但已更改為符合标準。
四、軟體實作
- Libaom是參考實作。它包括一個編碼器(aomenc)和一個解碼器(aomdec)。與以前的研究編解碼器一樣,它的優點是可以合理地證明每個功能的有效使用,但以編碼速度為代價。在當機功能時,編碼器的速度變慢了,但是在此之後,效率優化的影響仍然可以忽略不計。
- rav1e是用Rust和Assembly編寫的編碼器。 rav1e采用與Aomenc相反的開發方法:從最簡單(是以也是最快)的編碼器開始,然後随着時間的流逝提高效率,同時保持快速。
- SVT-AV1包含由英特爾于2019年2月首次釋出的開源編碼器和解碼器,專門設計用于基于Intel Xeon處理器的資料中心伺服器上。Netflix與英特爾合作開發了SVT-AV1。
- dav1d是用C99編寫的解碼器,其彙編着眼于速度和可移植性。第一個正式版本(0.1)于2018年12月釋出。 0.2版于2019年3月釋出,開發人員稱,使用者能夠“在所有平台上安全使用解碼器,并具有出色的性能”。版本0.3于2019年5月釋出,進一步優化表明其性能比aomdec快2至5倍。版本0.5于2019年10月釋出。Firefox 67在2019年5月從Libaom轉換為dav1d作為預設解碼器。與libgav1和libaom相比,dav1d v0.5是2019年最佳解碼器。
- Cisco AV1是Cisco為其Webex 電話會議産品開發的專有實時編碼器。編碼器針對延遲和“商品筆記本電腦”具有“可用CPU占用空間”的限制條件進行了優化。思科強調,在其工作點–高速,低延遲– AV1的大型工具集并不排除低編碼複雜性。相反,所有配置檔案中用于螢幕内容和可伸縮性的工具的可用性使他們能夠找到良好的壓縮比速度折衷,甚至比HEVC更好。與他們先前部署的H.264編碼器相比,一個特定的改進領域是高分辨率螢幕共享。
- libgav1是Google發行的用C ++ 11編寫的解碼器。
五、作業系統支援
如下表所示,列舉出主流作業系統對AV1的支援:
微軟Windows | 蘋果系統 | BSD / Linux | Chrome OS | 安卓作業系統 | 的iOS | |
---|---|---|---|---|---|---|
編解碼器支援 | 部分 | 不 | 支援 | 支援 | 支援 | 不 |
容器支撐 | ISO基本媒體檔案格式(.mp4) WebM(.webm) Matroska(.mkv) | 不 | ISO基本媒體檔案格式(.mp4) WebM(.webm) Matroska(.mkv) | 待定 | 不 | |
筆記 | -在Windows 10 October 2018 Update(1809)中引入了帶有AV1 Video Extension附加元件的支援。 -在通用Windows平台應用程式(如Microsoft Edge和影視)上受支援 | 從macOS Catalina開始不受支援 | 從Chrome OS 70開始支援解碼 | Android 10開始支援 | 自iOS 13起不受支援 |
六、AVIF支援
Netflix在2018年12月14日釋出了第一個.avif樣本圖像,并在VLC中添加了支援。微軟宣布支援Windows 10 “19H1”預覽版,其中包括對檔案資料總管,Paint和多個API的支援以及示例圖像。Paint.net增加了對在2019年9月打開AVIF檔案的支援,以及在2020年8月更新中儲存AVIF格式圖像的功能。Colorist格式轉換和Darktable RAW圖像資料均已釋出并支援libavif,并提供了libavif的參考實作,以及GIMP插件實作已開發,同時支援3.x和2.10.x插件API。本地AVIF導入和導出已在2020年10月添加到GIMP中。從v4.0開始,qView圖像檢視器中提供了AVIF讀取支援。
2020年2月14日,Netflix發表一篇部落格文章,客觀評估了AVIF與JPEG相比的圖像品質和壓縮效率。Web浏覽器中的AVIF支援正在開發中。2020年8月,釋出了具有完全AVIF支援的Google Chrome 85版本。Mozilla正在努力支援Firefox中的圖像格式。 Cloudflare在2020年10月3日的部落格文章中宣布對AVIF的支援。Firefox 86在釋出時将預設啟用AVIF支援。适用于Android的Google Chrome 89添加AVIF支援。
參考資料
AV1維基百科:https://en.wikipedia.org/wiki/AV1
AV1官網:http://aomedia.org/