Netflix最新視頻優化實踐:用更少的帶寬打造完美畫質

做者 | Megha Manohara
譯者 | 大愚若智
編輯 | Emily
AI 前線導讀:本文介紹了 Netflix 視頻算法團隊經過改進的視頻編碼方式和算法改善視頻質量,下降視頻碼率,並將其全面應用到生產環境中,藉此提升用戶觀影體驗的作法和實踐。

更多幹貨內容請關注微信公衆號「AI 前線」,(ID:ai-front)

馬賽克、模糊、扭曲的面孔和物體……糟糕的圖像質量會大幅下降觀衆經過 Netflix 觀賞喜好的劇集或電影時的觀賞體驗。不少狀況下,網絡帶寬不足或數據限流會致使咱們沒法爲觀衆提供完美畫質,爲此 Netflix 視頻算法團隊一直在努力開發更高效的壓縮算法,以便讓 Netflix 可以在使用更少帶寬的狀況下提供相同甚至更出色的畫質。咱們還會與 Netflix 的其餘團隊合做,更新客戶端應用以及流媒體基礎架構,爲新的視頻流播技術提供支持,確保用戶能夠在任何設備上經過 Netflix 得到無縫播放體驗。算法

爲了進一步改善畫質,咱們早已於 2015 年開發並部署了 Per-title 編碼優化技術(譯註:該技術可針對每段視頻的具體特徵應用最優化的編碼參數),並在一年後應用了針對移動設備視頻下載進行優化的編碼技術。在那以後,咱們的目標是開發一種基於視頻中每一個分鏡(Shot)進行編碼的框架,該框架名爲動態優化器(Dynamic Optimizer),藉此可對視頻流中的內容進行更細緻的優化。本文將介紹爲了在生產環境中運用該技術,咱們所面臨的挑戰以及應對措施,以及這些技術對視頻畫質的改善狀況。瀏覽器

在生產環境中實現動態優化技術

正如這篇博客文章中的細節所述,動態優化器會分析同一段視頻在不一樣質量和分辨率下的效果,進而爲整個編碼過程提供更優的壓縮軌跡,藉此實現進一步的優化。在這一過程當中,咱們會使用 Netflix 的主觀視頻質量度量指標 VMAF 做爲優化目標,畢竟咱們的目的是在觀衆可感知的範圍內提供最優的視頻流播質量。微信

在生產環境中實現動態優化的過程當中,咱們遇到的最大挑戰之一在於須要調整本來使用的並行編碼流程,以便順利處理數量大幅激增的編碼單位。首先,動態優化的分析環節中,須要使用不一樣分辨率和質量(QP)進行編碼,這致使編碼工做的複雜度以指數形式增長。其次,咱們也改變了具體的編碼操做,本來會將視頻按照時長拆分爲幾分鐘一個的塊進而編碼,但如今須要將視頻按照分鏡進行拆分並編碼。例如在本來的系統中,怪奇物語(Stranger Things)劇集每一集時長 1 小時,能夠拆分爲 20 個,每一個 3 分鐘的視頻塊。但在基於分鏡的編碼方式下,平均每一個分鏡的長度爲 4 秒,同一部劇集就須要處理 900 個分鏡。假設每一個視頻塊對應一個分鏡(圖 1,B),新方式會讓每一個視頻每次編碼所要處理的視頻塊數量增長兩個以上的數量級。這也會增大整個系統在計算實例之間傳遞消息時遇到與消息數量相關瓶頸的機率。爲了解決這個問題,咱們在工程方面實現了不少創新,下文將主要介紹其中的兩點:合併序列(Collation)和檢查點(Checkpoint)。網絡

雖然也能夠進一步完善核心消息系統,以應對消息數量的激增,但在當時看來,這並不是最靈活有利的解決方案。因而咱們爲處理流程引入了合併序列這一律念。架構

圖 1:分鏡經過合併序列組成的「塊」。(A) 表明整個視頻的時間軸,豎直虛線表明兩個分鏡的邊界。(B) 一個分鏡成爲一個塊:將每一個分鏡分配爲一個塊。(C) 將多個分鏡合併爲一個塊:在一個目標塊的時長內累積整數個分鏡。框架

在一個合併序列中,咱們會將多個分鏡整理到一塊兒,這樣一系列連續分鏡就能夠組成一個塊。隨後,考慮到咱們已經能夠靈活地決定這種合併序列的組成方式,所以可將整數個分鏡組合起來,造成時長大約爲 3 分鐘的塊,這樣的結果與最初所用的基於視頻塊的編碼模式就較爲相似了(圖 1,C)。經過配置,這些塊可維持近似相同的大小,這樣在由本來針對數分鐘長的視頻塊進行編碼而提供的計算實例進行處理時,可簡化資源的分配工做。在每一個塊中,計算實例可獨立對其中的分鏡進行編碼,並分別應用預先定義好的編碼參數。性能

圖 2:檢查點測試

經過合併序列,對每一個視頻塊中包含的分鏡單獨編碼,還爲系統帶來了額外的好處,咱們將其稱之爲檢查點。之前,若是丟失一個計算實例(由於這些實例多是借來的,但忽然須要使用這些實例處理優先級更高的任務),隨後就須要從新編碼整個塊。但在基於分鏡的系統中,每一個分鏡都是單獨編碼的。一旦某個分鏡編碼完成,若是在對塊中其餘分鏡進行編碼的過程當中實例丟失,已完成編碼的分鏡將無需從新編碼。咱們建立了這樣的檢查點系統(圖 2),藉此確保分鏡及其元數據可在編碼完成後當即存儲起來。經過這種方式,若是須要在另外一個計算實例上從新處理同一個塊,並不須要從頭開始從新編碼,只要從上次中止的地方開始處理便可,這樣能夠節約大量運算資源。大數據

壓縮性能

2016 年 12 月,咱們爲供用戶下載的視頻使用了 AVCHi-Mobile 和 VP9-Mobile 編碼器。對於這些面向移動設備的編碼器,還經過各類改進讓編碼性能相對 Per-title 編碼器進一步提升,例如更長的 GOP、靈活的編碼器設置以及每塊優化機制。經過這種方式得到的視頻流已經成爲咱們使用 H.264/AVC 和 VP9 編碼器以及傳統碼率控制機制時的高質量基準線。優化

下圖(圖 3)展現了將動態優化與基於分鏡的編碼方式配合使用後壓縮率的改善狀況。咱們繪製了優化後的全新編碼方式的碼率 -VMAF 曲線(VP9-Opt 和 AVCHi-Opt),並將其與下列狀況相比較:

  • 供下載的每視頻塊編碼(VP9-Mobile 和 AVCHi-Mobile)

  • 供流播的每視頻編碼(AVCMain)

爲了建立下圖,咱們從視頻庫中選擇了數千個視頻做爲樣本。每一個碼率用 x(橫軸)表明,每一個視頻選擇碼率≤ x 時的最高質量編碼方式(以 VMAF 得分來體現)。隨後計算在特定碼率 x 的狀況下,全部視頻的 VMAF 得分平均值,將其做爲下圖中每條曲線上的一個點。針對碼率值 x 的不一樣視頻進行計算後,最終得到了 5 條曲線,分別對應上述 5 種編碼方式。假設網絡情況穩定,下圖即可表明不一樣帶寬下,用戶能夠經過 Netflix 服務觀賞的視頻質量的 VMAF 平均值。

圖 3:每視頻、每塊以及優化後的全新編碼方式的壓縮效果

一塊兒看看質量相等的狀況下,碼率的下降幅度,爲此能夠在 VMAF=80(質量良好)處畫一條橫線,隨後能夠得到下列碼率信息:

從中可見,相比 AVCMain 所表明的每視頻編碼方式,優化後的編碼器只須要不到一半的碼率便可實現相等質量。對於 VP9-Opt,只須要相比 AVCMain 不足 1/3 的碼率便可實現相同質量的流播。而若是使用 AVCHi-Mobile 和 VP9-Mobile,分別也能夠節約 17% 和 30% 的帶寬。

咱們還研究了帶寬相同狀況下視覺質量受到的影響。例如,手機蜂窩網絡的帶寬平均爲 250 kbps,這樣的帶寬能夠得到下表所示的 VMAF 分數。相比 AVCMain,優化後的編碼器能夠顯著提高視頻質量。

爲了展示視頻質量的差別,下文列舉了主廚的餐桌(Chef’s Table)劇集中的一幀畫面,不一樣圖片爲 250 kbps 左右碼率下不一樣編碼方式產生的視頻截圖。對比發現畫面中的材質(磚塊、樹木、岩石、水面等)質量有了可觀的提高。其中 AVCMain(圖 4A,VMAF=58)和 AVCHi-Opt(圖 4B,VMAF=73)的視覺差別最顯著,VP9-Opt(圖 4C,VMAF=79)看起來最銳利。

圖 4 (A):AVCMain,250 kbps,VMAF=58

圖 4 (B):AVCHi-Opt,254 kbps,VMAF=73

圖 4 (C):VP9-Opt,248 kbps,VMAF=79

下文咱們將以十三個緣由(13 Reasons Why)劇集開場的一幕做爲例子,展現碼率同爲 250 kbps 左右時的效果。使用 AVCMain(圖 5A)時,圖片上方的文字幾乎不可辨認,而此時的 VMAF 得分爲 60 分;使用 AVCHi-Opt(圖 5B)時,畫質已有較大改善,此時 VMAF 得分爲 74;使用 VP9-Opt(圖 5C)時,文字和形狀邊緣變得很是清晰,同時畫質有了顯著提高,此時的 VMAF 得分爲 81。

圖 5:(A) AVCMain,260 kbps,VMAF=60;(B) AVCHi-Opt,257 kbps,VMAF=74;(C) VP9-Opt,252 kbps,VMAF=81

優化編碼器的現場測試

上文介紹了優化後的編碼器在壓縮效果上相對於每視頻編碼方式的提高,藉此能夠用相同碼率得到更高質量,或以相同質量下降碼率。但真正的問題依然存在:這樣的變化是否能夠切實改善用戶的觀看體驗?

在將新的編碼算法部署到生產環境以前,咱們在不一樣平臺和設備上經過 A/B 測試對新算法的實用性進行了全面測試。A/B 測試幫助咱們用可控的方式,對對照組(使用新的編碼方式)和控制組(使用原有方式)的體驗質量(QoE)進行了比較。爲了針對優化後的方式以及原有的 AVCMain 流播體驗得到更準確的結果,咱們的 A/B 測試涵蓋了各類類型的設備和視頻。藉此也能夠進一步針對不一樣平臺優化編碼算法並調整流播引擎。

經過不一樣的 QoE 指標對優化後編碼方式的效果進行評估。根據 A/B 測試的結果,咱們認爲用戶的觀影體驗能夠得到下列改進:

  • 對於低帶寬鏈接的用戶,咱們能夠用相同(甚至更低)碼率提供更高質量的視頻。

  • 對於高帶寬鏈接的用戶,咱們能夠用更低碼率提供相同質量的視頻。

  • 在網絡吞吐率突降時,大部分用戶遇到從新緩衝和質量下降現象的機率大幅下降。

  • 支持 VP9 流播的設備能夠用相同碼率得到更高質量的視頻。

此外咱們不少用戶所用的手機套餐數據流量有上限。在優化後的全新編碼方式幫助下,這些用戶無需調整數據流量上限,便可用相同甚至更高質量流播觀看更長時間的 Netflix 視頻。優化的編碼器還可讓脫機下載功能獲益。對於可下載的視頻,用戶以相同存儲容量能夠得到質量顯著提升的視頻內容。

重編碼與設備支持

過去幾個月來,咱們已經對 Netflix 的整個視頻庫生成了 AVCHi-Opt 編碼的內容,並開始將其用於不少平臺的流播。如今,當用戶經過 iOS、Android、PS4 以及 Xbox One 觀看 Netflix 內容時,就已經在享受這項技術帶來的好處。另外針對一些很是受歡迎的內容,咱們也已提供了 VP9-Opt 流播,目前部分 Android 設備已經能夠支持這個技術。同時咱們也在積極針對其餘設備和瀏覽器對這種新的流播方式進行測試。

不管你正在智能電視上經過最快速度的寬帶鏈接觀賞「主廚的餐桌」,或在移動設備上經過不穩定的蜂窩網絡觀看「傑西卡·瓊斯」,Netflix 都在致力於提供儘量一流的觀看體驗。而這次發佈的優化編碼技術也很好地證實了將創新的研究成果,積極有效的跨團隊合做,以及數據驅動的部署方式配合使用後,確實能爲咱們的用戶提供更卓越的觀影體驗。

做者:Megha Manohara、Anush Moorthy、Jan De Cock、Ioannis Katsavounidis 和 Anne Aaron,

閱讀英文原文:

https://medium.com/netflix-techblog/optimized-shot-based-encodes-now-streaming-4b9464204830


更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大數據」可得到《AI前線》系列PDF迷你書和技能圖譜。

相關文章
相關標籤/搜索