AV1 是新的黃金標準視頻格式,與舊的 H.264 和 H.265 格式相比具有更高的效率和質量。它是開放媒體聯盟標準化的最新免版稅高效視頻編碼器。
NVIDIA Ampere 架構?引入了硬件加速 AV1 解碼。 NVIDIA Ada Lovelace 架構?支持 AV1 編碼和解碼。 NVIDIA Ada 架構還恢復了對每個 GPU 多個編碼器的支持(每個 GPU 最多三個編碼器和四個解碼器),與前幾代相比實現了更高的吞吐量。
NVIDIA NVENC AV1 性能
與 H.264 和 HEVC 相比, NVIDIA NVENC AV1 提供了更高的壓縮效率和更好的性能。為了量化質量改進,我們研究了 AV1 和 H.264 的峰值信噪比( PSNR )和視頻多方法評估融合( VMAF )分數。 PSNR 和 VMAF 是經常用于衡量編碼質量的視頻質量度量。
PSNR 評分
PSNR 是量化圖像重建質量的分貝值。它是原始圖像或視頻信號的最大功率與通過壓縮引入的噪聲之間的比率。如圖 1 所示,在相同比特率下,與 NVENC H.264 相比, NVENC AV1 編碼的 PSNR 高出約 1.5-2 dB 。換句話說,為了實現相同的 PSNR , H.264 編碼需要比 AV1 高得多的比特率。例如,與 H.264 的 11Mbps 相比, AV1 在 7Mbps 下實現 42dB PSNR 。
這意味著在 1080p60 下, AV1 比 H.264 以類似的質量節省了 40% 的比特率。對于 H.264 上預設的給定低延遲質量,比特率增益高達 40% ,表示在 1080p 5 Mbps 流式視頻的兩小時內,超過 1.8 GB 的保存數據。在 720p 、 1440p 和 4K 時觀察到類似的比特率節省。

VMAF score
VMAF 是一種視頻質量度量,與人類對流視頻質量的感知高度相關。圖 2 中繪制的 VMAF 分數是用用于 PSNR 評估的相同視頻集收集的。 NVENC AV1 在質量方面優于 NVENC H.264 。 AV1 在低比特率下的性能優于 H.264 ,因此在苛刻的 QoS 場景中提供了更好的視覺質量。對于感知視頻質量, H.264 和 AV1 編碼視頻之間的差距隨著比特率的增加而減小,正如預期的那樣。

視頻 1 顯示了在 NVIDIA Ada Lovelace 架構 GPU 上編碼的 AV1 視頻與使用 x264 軟件編碼的 H.264 視頻的質量比較。 H.264 視頻使用 30 Mbps 的中等預設進行編碼,而 AV1 視頻使用高性能預設以 18 Mbps 進行編碼。兩個視頻的質量相當。 AV1 編碼器的吞吐量為 500 fps ,幾乎比 x264 編碼器快 9 倍。
跨分辨率/預設的每秒幀數性能
NVENC 性能隨著每一代的發展而穩步提高。 NVIDIA Turing 和 NVIDIA Ampere GPU 架構均為每個芯片一個編碼器,而 NVIDIA Ada 架構可支持每個芯片最多三個編碼器。
通過 NVIDIA Ada 架構,驅動程序自動處理多個編碼器之間的負載平衡。這使得任何應用程序都可以利用 NVENC ,而無需任何特殊代碼,從而實現更高的編碼器吞吐量。但是,吞吐量受時鐘、硬件性能限制和可用內存的限制。
NVENCODE API 公開了幾種預設、速率控制模式和調諧信息模式,用于針對不同的使用情況對硬件進行編程。這些參數的組合使得能夠以不同的質量和性能級別進行視頻編碼。這使應用程序能夠實現所需的質量,而不是在粒度級別上進行編碼性能權衡。

Max resolution support
表 2 顯示了 AV1 、 HEVC 和 H.264 的最大分辨率支持。 NVIDIA Ada 是第一代 GPU ,支持 AV1 和 HEVC 的 10 位 8K60 編碼。

除了 8 位 H.264 、 8 位和 10 位 HEVC 編碼 . 之外,專用編碼器硬件 NVENC 還可以執行 8 位和 8 位 AV1 編碼。有關 NVENC 功能的更多詳細信息,請參閱 NVIDIA Hardware Video Encoder documentation 。
硬件加速視頻編碼和解碼功能可分別通過 NVENCODE 和 NVDECODE API 訪問,它們是 NVIDIA Video Codec SDK 的一部分。
NVIDIA 視頻編解碼器 SDK 12.0 功能
2022 年 11 月發布的視頻編解碼器 SDK 12.0 包含對 NVIDIA Ada Lovelace GPU 硬件的支持,以及以下詳細介紹的新功能。
Split encoding 8K60
NVIDIA Ada GPU 上的視頻編解碼器 SDK 12.0 支持一種稱為 AV1 和 HEVC 的分割幀編碼功能,該功能可以使用多個編碼器(只要可用)對分辨率大于 4K 的幀進行編碼。使用此功能,框架將分為兩部分。如果 GPU 包含多個編碼器,則將每個部件發送到不同的編碼器。這有助于提高整體編碼性能。
在表 3 所示的條件下,僅在高分辨率下自動啟用此功能。注意,與在單個編碼器上對整個幀進行編碼所獲得的質量相比,在獨立編碼器上分割幀可能會導致次優的質量。因此,并非在所有預設和分辨率中都啟用這種性能改進方法。
Preset Tuning info |
p1 (fastest) | p2 | p3 | p4 | p5 | p6 | p7 (slowest) |
High quality | Split frame | Split frame | Normal | Normal | Normal | Normal | Normal |
Low latency | Split frame | Split frame | Split frame | Split frame | Normal | Normal | Normal |
Ultra-low latency | Split frame | Split frame | Split frame | Split frame | Normal | Normal | Normal |
如果啟用了 NVENC 中的某些功能,則無論是否滿足表 3 中列出的調諧和預設條件,分割編碼都會自動禁用。以下列出了與拆分幀編碼不兼容的功能。
HEVC
- 加權預測
- Alpha 層
- 子幀模式
- 比特流輸出到視頻存儲器
- 圖片定時/緩沖周期 SEI 消息插入 DX12 路徑
AV1
- 位流輸出到視頻存儲器
多個 NVENC 實現更高吞吐量
某些 NVIDIA Ada GPU 具有多個 NVENC 。這支持并行編碼更多的流。對單個視頻流進行編碼時,幀會按順序發送到不同的 NVENC 。因此,使用多個 NVENC 不會提高編碼單個視頻流時的吞吐量,但可以提高并行編碼兩個或多個視頻流時總吞吐量。在具有多個 NVENC 的 GPU 上,來自不同流的不同幀將在多個 NVenc 之間調度,保持所有 NVENC 充分利用,從而提高吞吐量。
更多 NVENC 也有助于視頻編輯工作流程,其中不同的獨立部分(跨 GOP 邊界分割)可以發送到不同的 NVENC 。要編碼的視頻的這種分割可以由用戶手動執行(例如,具有場景變化或不同剪輯的片段被放在一起)或由應用程序自動執行。
例如,視頻可以分為三個時隙: t0– 噸1.,噸1.– 噸2.,和 t2.– 噸3.,其中 t0,噸1.,噸2., 和 t3.是視頻中單調增加的次數。由于多個編碼器,較小的視頻可以并行編碼,從而導致較高的總編碼吞吐量。
批量編碼是一種利用多個編碼器的功能。此功能對于代碼轉換類型的工作負載非常有用。轉碼包括對輸入編碼流進行解碼、縮放和以所需格式和分辨率重新編碼。這在 NVIDIA Ada GPU 上很容易實現,因為驅動程序自動處理解碼流的負載平衡,并在編碼器之間分配工作。
支持 FFmpeg 中的 AV1
FFmpeg 是廣泛用于視頻和音頻轉碼的最流行的多媒體轉碼工具。 FFmpeg 支持 NVENC 加速 AV1 編碼和 NVDEC 加速 AV2 解碼。使用 FFmpeg 的應用程序現在可以使用 GPU 加速編碼和解碼。
概括
與現有編解碼器相比, AV1 的卓越 PSNR 、 VMAF 、比特率節省和分割編碼性能使其成為視頻編碼的一個非常有吸引力的選擇。 NVIDIA ADA GPU 支持 AV1 ,可通過最新版本的 NVIDIA Video Codec SDK 訪問。
?