本文記錄自己做的視頻編碼器性能評價的系統(tǒng)VideoCodecRank,。本系統(tǒng)可以通過調(diào)整幾種不同的維度的參數(shù)取值——視頻內(nèi)容、分辨率,、編碼器預(yù)設(shè),、碼率來對視頻編碼器的性能進(jìn)行評價和對比。對于每一個編碼器,,本系統(tǒng)可以遍歷上述幾種參數(shù)進(jìn)行編碼,,并且記錄編碼視頻圖像質(zhì)量和編碼速度。通過本系統(tǒng),,可以全方位的對比視頻編碼器在各種條件下性能的優(yōu)劣,。在此還要感謝二位師弟的參與。目前在大家的合作下該系統(tǒng)基本功能剛開發(fā)完成,,下一步打算繼續(xù)測試和完善,。
目前的狀態(tài)
目前本系統(tǒng)計算了下列編碼器:
x264-faster
x264-medium
x264-ultrafast
x264-superfast
x264-veryfast
x264-fast
x264-slow
x264-slower
x264-veryslow
x265-faster
x265-medium
x265-ultrafast
x265-superfast
x265-veryfast
x265-fast
x265-slow
x265-slower
x265-veryslow
f265-quality10
f265-quality20
DivX265-aqo2
DivX265-aqo3
DivX265-aqo4
VP8-good-0
VP8-good-1
VP8-good-2
VP8-good-3
VP8-good-4
VP8-good-5
VP8-realtime
DivX265-aqo1
openh264-rc0
openh264-rc1
mpeg4
mpeg1
mpeg2
xvid
h263p
theora
VC1-adv0
VC1-adv1
VC1-adv2
VC1-adv3
VC1-adv4
VC1-adv5
VP9-good-0
VP9-good-1
VP9-good-2
VP9-good-3
VP9-good-4
VP9-good-5
VP9-realtime
Intel-h264-speed
Intel-h264-quality
Intel-h264-balanced
Intel-mpeg2-speed
Intel-mpeg2-quality
Intel-mpeg2-balanced
使用了下列幾種內(nèi)容的測試視頻:
src01
src02
src04
src05
src06
src08
src11
src12
src14
ducks
park
ped
riverbed
station2
sunflower
tractor
每種內(nèi)容的測試視頻被縮放成了如下分辨率:
640x360
848x480
1280x720
1920x1080 (raw)
每個測試視頻設(shè)定了如下的BPP(可換算為碼率):
0.025
0.05
0.075
0.1
0.15
0.2
統(tǒng)計了如下視頻圖像質(zhì)量指標(biāo):
PSNR
SSIM
系統(tǒng)涉及到的參數(shù)
本章主要介紹本視頻編碼器性能評價系統(tǒng)涉及到的參數(shù)。這些參數(shù)可以分為輸入?yún)?shù)和評價參數(shù),。輸入?yún)?shù)用于模擬不同的編碼環(huán)境,。而評價參數(shù)則用于在編碼完成后統(tǒng)計編碼性能。輸入?yún)?shù)
本節(jié)介紹該系統(tǒng)的輸入?yún)?shù),。這些參數(shù)的變動通常會明顯的影響視頻編碼器的性能,。這些參數(shù)包括:視頻內(nèi)容,分辨率,,編碼器預(yù)設(shè),,碼率,。視頻內(nèi)容
在相同視頻質(zhì)量的前提下,畫面內(nèi)容復(fù)雜,、運(yùn)動劇烈,,要求的碼率較高;畫面內(nèi)容簡單,、景物靜止,,要求的碼率較低。本系統(tǒng)中我們選擇ITU- BT.1788標(biāo)準(zhǔn)中提出的時間復(fù)雜度(TI)和空間復(fù)雜度(SI)來分別衡量視頻的復(fù)雜程度,。時間信息(TI)
TI反映了一個序列畫面隨著時間的變化而變化的程度,。畫面內(nèi)容運(yùn)動程度劇烈的序列通常會有較高的TI值。它的計算方法是求序列的每一幀與前一幀圖像的幀差,,然后對幀差圖像計算標(biāo)準(zhǔn)差,。選這些標(biāo)準(zhǔn)差中的最大值為TI。它的計算公式如下所示:
空間信息(SI)
SI反映了一個序列畫面的空間復(fù)雜程度,。內(nèi)容細(xì)節(jié)越多的序列通常會有較高的SI值,。它的計算方法是對每一幀視頻進(jìn)行Sobel濾波,然后對濾波后圖像計算標(biāo)準(zhǔn)差,。選這些標(biāo)準(zhǔn)差中的最大值為SI,。它的計算公式如下所示:
分辨率
分辨率指的是視頻的尺寸。例如常見的分辨率有3840x2160 (4K), 1920x1080 (HD), 1280x720 (720P), 640x360 (360P)等,。編碼器和編碼器預(yù)設(shè)
不同編碼器的編碼效果相差很大,。此外,同一編碼器的預(yù)設(shè)(preset)對輸出的圖像質(zhì)量有較大的影響,。本系統(tǒng)將同一編碼器的不同的預(yù)設(shè)也看作為不同的“編碼器”,。預(yù)設(shè)指的是預(yù)先定義好的一套編碼器參數(shù)。編碼器的預(yù)設(shè)一般是在速度和圖像質(zhì)量上尋求一個平衡點(diǎn):速度快的預(yù)設(shè)一般情況下是以犧牲視頻質(zhì)量為代價的,;視頻質(zhì)量好的預(yù)設(shè)一般情況下編碼速度比較慢,。例如x264編碼器中按照編碼速度從快到慢包含了10個預(yù)設(shè):ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo。碼率
碼率是影響視頻質(zhì)量最主要的參數(shù)之一,。其它條件形同的情況下,,碼率越大,視頻質(zhì)量越好,。例如一個640x360的1Mbps的的視頻的質(zhì)量肯定好于一個640x360的500kbps的視頻。但是不同分辨率的視頻碼率差別很大,。例如我們很難斷定一個1280x720的1Mbps的視頻的質(zhì)量是否高于一個640x360的500kbps的視頻,。為了去掉分辨率這個影響因子,我們在本文的系統(tǒng)中引入了一個新的變量——BPP(每像素比特數(shù)),。BPP的計算公式如下:BPP的意義是視頻中一個像素點(diǎn)的數(shù)據(jù)量,。例如我們假設(shè)幀率為25fps,上文中1280x720的1Mbps的視頻的BPP取值為0.043,,640x360的500kbps的視頻的BPP取值為0.087,。下表列出了BPP,碼率和常見分辨率之間的對應(yīng)關(guān)系,。
| 對應(yīng)碼率(kbps) | |||
每像素比特數(shù) (bits/pixel) | 640x360 | 848x480 | 1280x720 | 1920x1080 |
0.025 | 144 | 254 | 576 | 1296 |
0.05 | 288 | 508 | 1152 | 2592 |
0.075 | 432 | 763 | 1728 | 3888 |
0.1 | 576 | 1017 | 2304 | 5184 |
0.15 | 864 | 1526 | 3456 | 7776 |
0.2 | 1152 | 2035 | 4608 | 10368 |
評價參數(shù)
評價參數(shù)用于在編碼完成后統(tǒng)計編碼的質(zhì)量情況,。評價參數(shù)可以分為兩類:質(zhì)量評價參數(shù)和速度評價參數(shù)。質(zhì)量評價參數(shù)
編碼質(zhì)量評價主要通過全參考視頻質(zhì)量評價算法實現(xiàn),。全參考視頻質(zhì)量評價算法通過比較編碼前原始視頻與編解碼后受損視頻獲得視頻質(zhì)量的評價結(jié)果,。最常見的全參考視頻質(zhì)量評價模型為PSNR和SSIM。PSNR
PSNR(峰值信噪比)是使用最為廣泛的視頻質(zhì)量評價方法,。它的計算公式為:
其中L為圖像灰度值范圍,,對于8bit位深的圖像來說L=2^8-1=255;M*N圖像塊的MSE(均方誤差)計算公式為:
PSNR取值通常在20-40之間,,取值越大代表圖像質(zhì)量越好,。盡管PSNR計算簡單,但是由于沒有考慮到人類視覺感知特性,,所以其評價結(jié)果與主觀感受往往相差較大,。
SSIM
SSIM(結(jié)構(gòu)相似度)是zhou wang等人提出的一種常見的視頻質(zhì)量評價方法。該方法考慮了人類視覺感知特性,,綜合考慮了亮度,、對比度以及結(jié)構(gòu)的影響。它的計算公式如下所示,。
其中l(wèi)(x,y)為亮度比較函數(shù),c(x,y)為對比度比較函數(shù),,s(x,y) 為結(jié)構(gòu)比較函數(shù),。這三個函數(shù)的具體計算方法可以參考相關(guān)文獻(xiàn)。
SSIM取值在0-1之間,,取值越大代表圖像質(zhì)量越好,。SSIM相對于PSNR來說更加符合人眼的主觀感受,因此也是一種使用很廣泛的視頻質(zhì)量評價方法,。
速度評價參數(shù)
編碼速度評價主要通過統(tǒng)計編碼和解碼的耗時(以毫秒為單位)來實現(xiàn),。
系統(tǒng)運(yùn)行原理
本系統(tǒng)會根據(jù)輸入的配置信息,遍歷上文介紹的幾種輸入?yún)?shù)值,,組合成不同的命令進(jìn)行編碼和評價工作,。系統(tǒng)開始運(yùn)行后,,會按照順序執(zhí)行下面幾步工作:(1) 對于每個輸入的視頻測試序列,對它的尺寸進(jìn)行縮放,,生成一系列不同分辨率的視頻序列,。
(2) 對于每種分辨率的原始視頻序列,選擇不同的編碼器準(zhǔn)備編碼,。
(3) 對于每種編碼器,,設(shè)置不同的碼率進(jìn)行編碼,生成碼流文件,。隨后解碼生成的碼流文件,,得到受損的視頻序列。
(4) 對于每個受損視頻序列,,使用不同的視頻質(zhì)量評價方法進(jìn)行質(zhì)量評價,,得到質(zhì)量分?jǐn)?shù)。
上述邏輯下圖所示,。從圖中可以看出本系統(tǒng)遍歷參數(shù)的順序如下:
視頻內(nèi)容-->分辨率-->編碼器-->碼率-->客觀質(zhì)量評價方法
當(dāng)系統(tǒng)完成了一次客觀質(zhì)量評價算的計算之后,,就會生成一條保存了當(dāng)前實驗參數(shù)的記錄,并將該記錄存儲到數(shù)據(jù)庫中,。網(wǎng)站說明
VideoCodecRank網(wǎng)站的結(jié)構(gòu)如下圖所示,。整個網(wǎng)站除了首頁之外包含了“結(jié)果集”、“編碼器”,、“視頻序列”,、“系統(tǒng)配置”、“關(guān)于”幾個頁面,。這些頁面之間的關(guān)系如下圖所示,。首頁
首頁中包含了一張編碼器的綜合比較圖表。其中藍(lán)色橫條代表了編碼圖像質(zhì)量,,而黃色橫條代表了編碼時間,。可以拖動圖表上方的滑動條調(diào)整下面幾種參數(shù)選擇不同的數(shù)據(jù)對編碼器的性能進(jìn)行排序,。速度質(zhì)量權(quán)重:目前只支持時間/質(zhì)量權(quán)重設(shè)置為1或0,。質(zhì)量權(quán)重為1則按照編碼器輸出視頻質(zhì)量進(jìn)行排序,時間權(quán)重為1則按照編碼器消耗時間進(jìn)行排序,。首頁的內(nèi)容如下所示,。
分辨率:該選項可以選擇輸入視頻的尺寸,。
碼率:該選項可以選擇輸入視頻的碼率。注意碼率是按照BPP(Bit Per Pixel,每像素比特數(shù))為單位的,。
內(nèi)容復(fù)雜度:該選項可以選擇輸入測試視頻序列,。注意輸入的視頻內(nèi)容是按照時間復(fù)雜度TI或空間復(fù)雜度SI(這兩個指標(biāo)均取自于ITU BT.1788標(biāo)準(zhǔn))進(jìn)行排序的,以方便選擇。
結(jié)果集頁面
結(jié)果集頁面中包含了系統(tǒng)中所有客觀視頻質(zhì)量評價的結(jié)果。每一條實驗記錄包含了如下信息:編碼器
視頻序列
分辨率
每像素比特數(shù)
編碼時間
解碼時間
視頻質(zhì)量評價算法
客觀質(zhì)量
主觀質(zhì)量
結(jié)果集頁面的內(nèi)容如下圖所示,??梢酝ㄟ^在下拉框中調(diào)整“編碼器”,“視頻序列”,,“分辨率”,,“每像素比特數(shù)”,“客觀質(zhì)量評價算法”幾個參數(shù)來篩選符合特定條件的結(jié)果,。
編碼器頁面
編碼器頁面中包含了系統(tǒng)中所有參與評價的編碼器(注:對于包含多種預(yù)設(shè)的編碼器,,每種預(yù)設(shè)都算作一種編碼器)。其中每一條記錄包含了如下信息:編碼器名稱編碼器頁面的內(nèi)容如下圖所示,。單擊編碼器的名稱可以進(jìn)入編碼器詳細(xì)信息頁面,。
所屬標(biāo)準(zhǔn)
廠商
版本
編碼器詳細(xì)信息頁面
編碼器詳細(xì)信息頁面包含了3個部分:編碼器簡介、編碼器詳細(xì)質(zhì)量和編碼器時間-質(zhì)量權(quán)衡圖,。編碼器簡介部分內(nèi)容如下所示,。可以看出該列表列出了編碼器的基本信息,。
視頻序列頁面
視頻序列頁面中列表顯示了系統(tǒng)中所有參與測試的原始視頻序列信息,。其中每一條記錄包含如下信息:視頻序列名稱視頻序列頁面的內(nèi)容如下圖所示,。單擊視頻序列的名稱可以進(jìn)入視頻序列詳細(xì)信息頁面。
原始分辨率
像素采樣格式
幀率
幀數(shù)
視頻序列詳細(xì)信息頁面
視頻序列詳細(xì)信息頁面包含了3項內(nèi)容:視頻序列預(yù)覽,、視頻序列詳細(xì)特性以及視頻序列時間/空間復(fù)雜度對比圖,。視頻序列預(yù)覽部分內(nèi)容如下所示??梢酝ㄟ^該功能預(yù)覽測試視頻的內(nèi)容,。
視頻序列時間/空間復(fù)雜度對比圖如下所示,。圖中每個點(diǎn)代表一個視頻序列,,圖表橫坐標(biāo)為SI,縱坐標(biāo)為TI,。由此可知位于圖表上方的視頻序列運(yùn)動比較劇烈,,而位于圖表右邊的視頻序列內(nèi)容紋理比較復(fù)雜。最為簡單的視頻序列位于圖表的右上角,,最為簡單的視頻序列位于圖表的左下角,。