性能可期——Netflix与Intel优化SVT-AV1
四月初,英特爾和Netflix宣布聯合開發了一款名為SVT-AV1的視頻編碼器軟件。可擴展視頻技術(SVT)是英特爾的開源框架,它為可視化云技術的開發人員提供了高性能的視頻編碼軟件庫。本文將介紹Netflix迄今為止在SVT-AV1積累的經驗,以及如何能讓您也能參與到這一開發中來。本文來自Netflix技術博客,LiveVideoStack對原文進行摘譯。
文 / AndreyNorkin, Joel Sole, Kyle Swanson, Mariana Afonso, Anush Moorthy, Anne Aaron
譯 / 元寶
原文:
https://medium.com/netflix-techblog/introducing-svt-av1-a-scalable-open-source-av1-framework-c726cce3103a
視頻編碼標準的歷史
?
從歷史的發展來看,視頻壓縮的標準是由兩個國際的標準化組織ITU-T和MPEG(ISO)共同制定的。最早取得成功的數字視頻標準是MPEG-2,它真正意義上實現了視頻的數字傳輸。此外,H.264/AVC也取得了同樣的成功,H.264/AVC是目前的現代設備(通常是硬件)最普遍支持的視頻壓縮標準。另一方面,還有一些公司自己開發的視頻編解碼器,例如微軟的VC-1和谷歌的VPx編解碼器。大家采用同一視頻壓縮標準的好處是互操作性。視頻壓縮的標準規范詳細地描述了應如何處理視頻比特流來生成可顯示的視頻幀。這就允許了設備制造商可以自主地實現自己的解碼器。當內容提供商根據視頻壓縮標準對其視頻進行編碼后,可以保證所有的兼容設備都能夠解碼和顯示這一視頻。
?
最近,由于普遍存在許可不確定性的問題,應用ITU-T和ISO標準化的最新視頻編解碼器速度很慢。因此,有一群公司組成了一個開放媒體聯盟(AOM),這個聯盟致力于創建一個現代的、免版稅的視頻編解碼器,并且該編解碼器將被大量設備廣泛支持和采用。目前,AOM的委員會成員包括亞馬遜、蘋果、ARM、思科、Facebook、谷歌、IBM、英特爾、微軟、Mozilla、Netflix、Nvidia和三星,并且還有許多公司都加入了AOM的推廣團隊。在2018年,AOM發布了AV1視頻編解碼器的規范。
?
解碼器規范沒有變過,而編碼器被改進多年
?
如上所述,一個標準規定了如何解碼被壓縮的比特流來生成可顯示的視頻流,這意味著編碼器是可以根據其特性進行更改的,比如計算性能和給定比特率的可實現質量。編碼器通常可以在標準多年不變的情況下進行改進,包括不同的速度和質量的權衡。像這樣的開發實例有x264編碼器,它從H.264標準制定后的多年來一直在改進。
?
要開發一個符合標準的解碼器,采用標準規范應該就是足夠的。為了指導大家實現編解碼器,標準化委員會還發布了參考軟件,這其中包括兼容的解碼器和編碼器。參考軟件作為標準開發過程的基礎,同時也是一個評價視頻編碼工具性能的框架。參考軟件通常伴隨著標準的發展而發展。此外,當標準規范制定完成后,參考軟件也可以幫助推進兼容解碼器和編碼器的實現。
?
AOM已經為AV1開發了參考軟件,該軟件名為libaom,可以在線使用。libaom是建立在VP9、VP8和前幾代VPx視頻編解碼器的代碼基礎之上的。在AV1開發的過程中,該軟件是由AOM視頻編解碼器團隊進一步開發的。
?
Netflix對SVT-AV1的興趣
?
參考軟件通常關注的是以犧牲編碼速度為代價所能得到的最佳壓縮比。眾所周知,現代視頻編解碼器參考軟件的編碼時間都是相當長的
?
英特爾開發SVT-AV1的目標之一是創建一個工業產品級別的AV1編碼器,它能同時提供高性能和可擴展性。SVT-AV1在編碼過程的幾個階段中均使用了并行化,這使其能夠適應可用內核的數量。這使得SVT-AV1可以在保持壓縮效率的同時減少編碼時間。
?
在2018年8月,Netflix的視頻算法團隊和英特爾的可視化云團隊決定聯手開發SVT-AV1。從那時起,英特爾和Netflix的團隊在SVT-AV1的開發上緊密合作,包括討論架構決策、實現新工具和提高壓縮效率。Netflix對SVT-AV1的主要興趣點與英特爾有些不同,但與英特爾構建工業產品級別、高度可擴展的編碼器的意圖是互補的。
?
在Netflix,我們相信AV1的生態系統將得益于實現一個可供選擇的簡潔、高效開源編碼器。目前至少就有一個可供選擇的開源AV1編碼器,rav1e。但是,rav1e是用Rust語言編寫的,而用C語言編寫的編碼器對潛在的開發人員來說有更廣泛的基礎。開源編碼器還應該支持實現簡單的實驗和提供測試新編碼工具的平臺。因此,我們對AV1軟件的要求如下:
代碼易于理解,具有較低的入門門檻和測試框架
具有與參考實現相當的有競爭力的壓縮效率
完整的工具集,實現的解碼器要滿足與編碼器共享通用代碼,并且還要簡化新編碼工具的實驗
減少編碼器的運行時間,以便在測試新想法時實現更短的周期
?
我們相信,如果SVT-AV1符合了這些特性,它則可以用作未來視頻編碼標準開發的平臺,例如對AV2視頻編解碼器的研究和開發工作以及改進AV1的編碼。
?
因此,Netflix和英特爾開發SVT-AV1具有互補的目標。編碼器的速度是有助于創新的,因為它可以更快地運行實驗。代碼的簡潔性有助于開源社區的采用,這對于開源項目的成功至關重要。我們可以說,大量的并行化可能有對壓縮效率的權衡,但它也允許測試更多的編碼選項。此外,我們預計多核平臺在未來將普遍用于視頻編碼,這會使得在支持多線程的架構中測試新工具非常重要。
?
我們取得的進展
?
為了使SVT-AV1成為一個優秀的實驗平臺和AV1參考,我們已經完成了以下里程碑:
在GitHub上開源SVT-AV1(https://github.com/OpenVisualCloud/SVT-AV1/)且擁有BSD +的專利許可。
為Linux,Windows和MacO添加了一個持續集成(CI)框架。
基于Google ? ? Test添加了一個單元測試框架。外部的承包商正在添加單元測試,以實現對已經開發的代碼的充分覆蓋。此外,單元測試將涵蓋新的代碼。
在CI框架中添加了其他類型的測試,例如自動編碼和Valgrind測試。
啟動了一個解碼器項目,它與編碼器共享AV1算法的常用部分。
引入了樣式指南,并對現有代碼進行了相應的格式化。
?
SVT-AV1的工作目前正在進行中,因為它仍需實現一些編碼工具,因此在1-pass模式下,與libaom編碼器在PSNR BD速率上的平均差距約為14%。為了降低BD速率的差距,計劃添加以下功能,:
多參考圖片
ALTREF圖片
八像素運動補償(1/8像素)
全局運動補償
OBMC
楔形預測
TMVP
調色板預測
自適應變換塊大小
網格量化系數優化
分割
4:2:2支持
速率控制(ABR,CBR,VBR)
2-pass編碼模式
?
前面還有很多工作要做,我們致力于使SVT-AV1項目能滿足成為一個優秀實驗平臺的目標,同時也適用于生產應用程序。您可以在AWCY(AreWeCompressedYet)網站的beta版上跟蹤SVT-AV1的性能進展。AWCY是用于在AV1開發過程中用來評估AV1工具的框架。在下圖中,您可以看到兩個版本的SVT-AV1編解碼器的比較,藍色的圖表示2019年3月15日的SVT-AV1版本,綠色的圖表示2019年3月19日的SVT-AV1版本。
SVT-AV1的編碼速度其實已經很出眾了。在最慢的速度設置下,SVT-AV1不能達到libaom的壓縮效率,但它執行編碼的速度明顯快于最快的libaom模式。目前,在最慢模式下的SVT-AV1與在1-pass模式下使用cpu_used = 1(libaom的第二慢速模式)的libaom編碼器相比多使用了大約13.5%的比特數,但在速度上大約是快了4倍多。與2-pass模式下的libaom編碼的BD速率的差距就更大了,我們計劃通過在SVT-AV1中實現2-pass模式編碼來解決這個問題。我們還可以注意到,SVT-AV1更快的編碼設置可以更顯著地減少編碼時間,從而顯著提高編碼器的速度。
LiveVideoStack? 招募?
LiveVideoStack正在招募編輯/記者/運營,與全球頂尖多媒及技術專家和LiveVideoStack年輕的伙伴一起,推動多媒體技術生態發展。了解崗位信息請在BOSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。同時,我們也歡迎通過業余時間向LiveVideoStack貢獻內容。LiveVideoStackCon2019北京正在招募講師,點擊【閱讀原文】了解詳細信息。
總結
以上是生活随笔為你收集整理的性能可期——Netflix与Intel优化SVT-AV1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 量化视频封装的成本
- 下一篇: LiveVideoStack线上分享第三