1. 程式人生 > >精緻前處理,精準碼控 — 極致視覺效果

精緻前處理,精準碼控 — 極致視覺效果

640?wx_fmt=jpeg


編碼時採用精準碼控,在位元速率受限的情況下,將有限的資源合理分配,提高整體畫質;編碼前,對影象進行精緻的前處理,營造更加極致的視覺效果,提升畫質。本文來自騰訊視訊 視訊編碼團隊負責人汪亮在LiveVideoStackCon 2018大會上的分享,並由LiveVideoStack整理而成。


文 / 汪亮

整理 / LiveVideoStack


大家好,我是來自騰訊視訊的汪亮,主要負責騰訊視訊業務的視訊編解碼,以及影象前處理的工作。今天的分享內容主要分為兩個方面:精準的編碼碼控和精緻的影象前處理。其主要目的是為了使終端使用者在看視訊時有最好的畫質體驗。此外,在文後簡單介紹了我們的下一步工作方向和內容。


1、轉碼框架


640?wx_fmt=png


如上圖所示, 我們所有的直播和點播都是使用同一套邏輯框架來進行處理,包括NBA、101等節目直播流和點播檔案的源介質,通過就近接入,進入轉碼系統。


在轉碼系統中,進行前處理後,執行H.264或HEVC的視訊編碼以及AAC或Dolby的音訊編碼,然後將編碼後的音、視訊流封裝成MP4、TS、FMP4的檔案,進行DRM加密處理,最後把它上傳到FS檔案系統儲存,並分發到CDN,全平臺的終端也以就近接入的方式,下載檔案進行播放。


在播放的過程中,我們會加入P2P的SDK來節約頻寬。本次分享的內容主要集中在上圖中前處理這部分邏輯。


2、畫質評測


640?wx_fmt=png


我們對視訊進行前處理和編碼優化,但如何評價優化效果的好壞,是否達到預期,就涉及對畫質評定規則的約定。希望找到一個簡單又通用的方法來評定畫質,但實施的難點在於畫質和人的主觀感覺強相關,就更加增加了畫質評測的複雜度。


我們嘗試了四種評定方式psnr、ssim、vmaf和主觀評測。傳統的PSNR和SSIM,缺點在於評測是相對質量而不是絕對質量,得出的值不能很好的代表主觀結果,在發現這個缺點之後,業界提出了VMAF,也是目前較為通用的一種方式,包括在MSU編碼器的比賽過程中也採用VMAF作為參考指標之一,但它是基於一種傳統的方法且和訓練樣本相關,可能不能很好適配所有型別的視訊;最後一種方式就是主觀評測,通過兩臺電視機,或者兩個手機對比,找不同背景的同事來看,然後進行MOS評分。


為了得到更為準確的評分,我們開發了一套web評測系統,對上述4項指標均進行評測和統計,在新演算法全量釋出前,測評結果作為不斷改進和優化的參考指標。


3、編碼-核心優化


640?wx_fmt=png


點播和直播的流進來後,首先會將其解碼成YUV的資料,再進行前處理與編碼,得到編碼壓縮NAL包。


視訊編碼的經典框架沒有大的更新,包括預測,變換,量化,掃描,熵變換,依舊是這幾個步驟。由於核心的優化是一個週期較久,比較耗時的過程,在沒有好的結果出來之前,會基於編碼器不變的情況下,進行類似引數調優等操作,比如,進行場景的識別,讓其自適應的進行量化和引數的設定,達到在最低碼流情況下獲得最好視訊效果的目的。


4、編碼-分類別編碼


640?wx_fmt=png


不同的視訊內容,由於其複雜度不一樣,可以為其分配不同的引數,在目標位元速率不一樣的情況下,也能達到很好的畫質效果;分類別編碼的目的是在總位元速率一定的情況下,能夠讓位元速率在不同型別的視訊間進行很好的分配和轉移,物盡其用。對片源進行分類,例如分類為四個:2D動畫、3D動畫、普通電影、以及體育視訊(如足球賽,籃球賽等)。在分類之前,所有視訊的目標位元速率是同樣對待處理的,分類之後,為不同的類別的內容分配一個更為合適的目標位元速率,測試發現,2D動畫的視訊,即使減少30%的位元速率,也能夠達到同樣的畫質效果,此時,將節約出來的位元速率轉給體育視訊,使之達到更好的畫質效果。 


5、編碼-動態位元速率


640?wx_fmt=png


在一個視訊中,場景是動態變化的,有時比較平緩,有時比較複雜,位元速率曲線可以很好的展示它的變換情況。片源分類是針對片源物件來說的,動態位元速率則是對該片源按時間軸進行細緻的劃分,區分平緩和複雜的區間,併為其分配不同的目標位元速率。


點播中,編碼的過程一般會採用2-Pass的方式,首先進行720P格式進行1-Pass的編碼,得到每一幀的參考幀的一些資訊,這些資訊可以為第二次編碼進行指引。在第二次編碼時,參考該pass1的資訊,並生成多個不同的目標格式的清晰度,例如480P、540P、1080P等。得到兩個好處,其一節約時間,只用生成一次passlog資訊;其二是各個格式的I幀是對齊的,能進行無縫切換的播放。


6、編碼-ROI編碼


640?wx_fmt=png


在演唱會等娛樂節目中,人物背後的霓光燈對畫質的影響非常大,由於燈光相對平滑且顏色資訊非常多,如果按普通的方式處理,會佔用大量的位元速率,導致終端使用者即使有4M或5M的頻寬也會覺得畫質不清晰。


ROI編碼的核心思想是,基於深度學習,識別出感興趣的區域,例如人臉或人體部分,然後在編碼時,對這部分割槽域進行位元速率增強的處理。例如我們觀看一個跳舞的視訊,人眼更關注的人體,通過把這個人體區域找出來,並將區域的資訊傳遞給編碼器,分配更多的位元速率,從而讓人臉顯得更加清晰。上圖展示的是傳統處理方法與應用ROI編碼技術後的效果對比。


7、影象-前處理框架


640?wx_fmt=png


由於影象前處理演算法需要應用於點播和直播兩個系統,因此我們自研了一套框架。從圖中可以看到,來自點播和直播的輸入幀,進入一個前處理Filter,再進行編碼得到碼流,優點就是開發的任何一個演算法,類似模組,可以直接插入,應用於點播和直播中。該框架的使用,使得自研演算法的整合和應用非常方便。


8、影象-TIE增強


640?wx_fmt=png


上圖展示的是自研的TIE(Tencent Image Enhance)即騰訊視訊畫質增強技術,通過對視訊進行特定的分析處理使得畫面能夠更加的通透,層次感更加突出,為使用者營造一個更加逼真的視訊效果。在大部分的點播和直播視訊中都啟用了TIE增強處理。 


9、影象-數字水印


640?wx_fmt=png


加上數字水印的主要目標就是為了加強版權保護,在視訊幀中嵌入數字水印,方法是在高頻和中頻的資訊裡面加入自己的私有資訊。如果視訊被盜,可以分析被盜的視訊流,進行解碼,用相應的工具進行分析,如果提取的資訊包含植入的加密資訊,就說明視訊流是從我們這裡被盜走的。 在視訊中新增數字水印可能會導致畫面出現瑕疵,在加入強度和策略上會進行一個控制,儘量減少對畫質的影響。


10、影象-超分(老片翻新)


640?wx_fmt=png


超分目前我們主要是應用於老片翻新和視訊解析度清晰度提升中,因為很多老片子很有可能是從普通的VCD裡傳出來的,它的畫質是比較差的,不滿足我們對畫質的需求。用深度學習的方法,通過構建不同的訓練集,構建起較為完備模型,避免影象中的噪聲的增強,同時得到較好的效果。為了解決後端伺服器處理耗時的問題,在分散式框架中啟用超分演算法,併發加速。目前我們也準備在手機等終端上加入超分的特性,540P的碼流,終端可以超分到1080P,在提升畫質的同時,節約大量位元速率,當然為了達到實時性,在模型選擇上,進行了一些縮減。


11、影象-HDR10視訊


640?wx_fmt=png


很多終端裝置已經支援hdr視訊的顯示,即支援更高的亮度範圍和更多的顏色資訊,目前常用的有hdr10、dolbyvision等標準,在支援的終端上播放,有著無與倫比的效果。但受限於片源介質的數量較少,就自研究了sdr轉hdr10的技術。主要進行2個步驟的操作,第一個就是亮度的擴充套件,第二個就是要對色域的擴充套件,要把原先亮度的BT709的色域擴充套件到BT2020色域上。有兩種方式進行,第一個就是普通演算法的方式,建立一個空間對映,將亮度和色度從一個空間對映到另外一個空間,但這個對映有時會導致亮度不是很均勻,需要一個調優的過程。第二個方式是採用hdrnet進行訓練,生成一個對映模型,基於普通的sdr介質生成hdr介質。


12、持續探索/完善的技術


640?wx_fmt=png


最後簡單介紹我們正在探索和即將展開的一些工作,例如,多模態內容的理解,包括對場景的識別,在視訊內容中植入不同的應景的廣告,實現千人千面的廣告;內容的搜尋,希望在片源量非常大的媒資庫中,能快速找到想要的內容;音視訊編解碼技術,在不斷的在做更新和優化迭代,並在環繞聲、VR等方向上也在不斷的探索。希望音視訊技術的不斷演進,能為終端使用者提供更美妙的體驗。



精品文章推薦




線上分享:



技術趨勢: