大家談的視頻體驗(yàn)指標(biāo),都有哪些?如何測(cè)定?

在之前一篇的 Dev for Dev 專欄中,我們的工程師分享了聲網(wǎng)的無(wú)參考視頻評(píng)價(jià)體系(VQA)的建立與實(shí)踐經(jīng)驗(yàn)。建立一套 VQA 體系需要一個(gè)較長(zhǎng)的過(guò)程,在那之前,大家仍然有很多方法可以來(lái)判斷實(shí)時(shí)視頻的質(zhì)量。我們今天就來(lái)講講有哪些行業(yè)通用的視頻體驗(yàn)指標(biāo)。
我們一般通過(guò)視頻的實(shí)時(shí)性、流暢性(卡頓率、渲染幀率)、主觀畫質(zhì)、首幀出圖、音畫同步等性能指標(biāo)來(lái)判斷視頻質(zhì)量的好與壞。以下內(nèi)容分別對(duì)這些指標(biāo)做逐一說(shuō)明,并講一講在實(shí)驗(yàn)室環(huán)境中,每個(gè)指標(biāo)的詳細(xì)測(cè)試方法。?
實(shí)時(shí)性
說(shuō)到視頻直播延時(shí)測(cè)試,我們就不得不先探討一下產(chǎn)生延時(shí)的幾個(gè)環(huán)節(jié):
part1. 視頻采集與編碼?
part2. 視頻設(shè)備到服務(wù)器的傳輸?
part3. 服務(wù)器分發(fā)到客戶端的傳輸?
part4. 客戶端的播放
其中,這個(gè)過(guò)程延時(shí)消耗最大的是 part1 和 part4,也就是編/解碼部分,而 part2 和 part3,為網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)與傳輸,時(shí)間消耗是非常小的。視頻延時(shí),是一個(gè)用于體現(xiàn)視頻實(shí)時(shí)性的指標(biāo),發(fā)送拍攝內(nèi)容到接收端渲染的延遲,單位:ms。通常來(lái)講,視頻端到端延遲數(shù)值越小,實(shí)時(shí)性越好。
當(dāng)前業(yè)界較為精準(zhǔn)的測(cè)試方法為在 PC 上開啟一個(gè)精確到毫秒的計(jì)時(shí)器,再通過(guò)攝像機(jī)/手機(jī)/桌面編碼推流將直播流推送到服務(wù)器,再同時(shí)開啟一個(gè)播放器(在本機(jī)或者另外的 PC/手機(jī)播放器),再通過(guò)屏幕截屏或者手機(jī)拍照的方式,將源視頻和播放視頻都包括在一張照片內(nèi),再進(jìn)行時(shí)間差值的計(jì)算。實(shí)驗(yàn)室測(cè)試方法和業(yè)界測(cè)試方法基本類似。
實(shí)驗(yàn)室測(cè)試方法
1、設(shè)備 1 和設(shè)備 2 連麥。
2、找一個(gè)設(shè)備打開精度為 ms 的在線秒表或秒表,將設(shè)備 1 后置攝像頭正對(duì)著秒表,攝像頭采集秒表的數(shù)字,設(shè)備2上能清晰的看到設(shè)備 1 發(fā)送過(guò)來(lái)的秒表數(shù)字,具體擺放位置如下圖 1 所示。

■圖1
3、擺好圖 1 的位置,然后用 iPhone 拍下 10s 視頻,過(guò) 3-5 分鐘后再拍下 10s 視頻,再過(guò) 3-5 分鐘后拍 10s 視頻,共 3 段視頻。
4、延時(shí)統(tǒng)計(jì):每個(gè)視頻選 10 個(gè)圖片(每秒選擇一個(gè)樣點(diǎn)),視頻延遲=在線秒表上顯示的時(shí)刻-手機(jī) 2 上顯示的時(shí)刻(圖 1 中的視頻延遲=762-447=315ms)。3 段視頻共 30 個(gè)視頻延遲數(shù)據(jù),取平均值為最終的視頻延遲。
卡頓率和幀率
在視頻質(zhì)量檢測(cè)中,檢測(cè)視頻是否卡頓也屬于視頻質(zhì)量檢測(cè)的標(biāo)準(zhǔn)之一。
卡頓率:用于體現(xiàn)視頻流暢性的指標(biāo),測(cè)試周期內(nèi)的卡頓總時(shí)長(zhǎng)/測(cè)試總時(shí)長(zhǎng)*100%,卡頓率越高,主觀體驗(yàn)越差。
幀率:接收端觀測(cè)到的渲染幀率,幀率越高,流暢性越好。
業(yè)界測(cè)試流暢性測(cè)試方法為:
1.通過(guò)自動(dòng)化錄制的測(cè)試視頻;
2.利用 FFmpe g選擇興趣區(qū)域進(jìn)行截?。?/p>
3.拿到興趣區(qū)域進(jìn)行視頻前 10s,中間 10s,后 10s 視頻;
4.把三段 10s 的視頻進(jìn)行每 50ms 一張圖片;
5.通過(guò) opencv 進(jìn)行圖片的分析;
判斷卡頓的主要依據(jù)是,當(dāng)人的視線規(guī)則是相同的圖片持續(xù) 200ms。根據(jù)這個(gè)規(guī)則,通過(guò) opencv 比較上述步驟 4 獲取的圖片。如果第 n 個(gè)圖片與第 n+1 的圖片比較,像素相似度在某個(gè)范圍內(nèi)持續(xù)了 4 張圖片(50ms*4=200ms)就認(rèn)為這段視頻是卡頓的,從而計(jì)算出卡頓率。實(shí)驗(yàn)室測(cè)試原理與該方法大致相同。
實(shí)驗(yàn)室測(cè)試方法
1、手機(jī) 1 和手機(jī) 2 連麥;
2、將手機(jī) 1 后置攝像頭正對(duì)著旋轉(zhuǎn)的地球儀(采集的圖像需要保持一直運(yùn)動(dòng)),攝像頭采集運(yùn)動(dòng)的地球儀和運(yùn)動(dòng)的主播,球體占整體畫面約 1/4 大小,主播占整體畫面 1/4。手機(jī) 2 上看到手機(jī) 1 發(fā)送過(guò)來(lái)地球儀和主播,具體擺放位置如下圖 2 所示;

■圖2
3、擺好圖 2 的位置后,設(shè)置弱網(wǎng),比如限制上行帶寬為 500K,丟包 20%。弱網(wǎng)生效后,過(guò)約 30-40s,使用手機(jī) 2 自帶錄屏功能錄屏 3 分鐘,性能較差的手機(jī)需要通過(guò)轉(zhuǎn) HDMI 連到電腦,用 QuickTime Player 進(jìn)行錄屏;
4、將錄制的 mp4 視頻傳到電腦,用卡頓率統(tǒng)計(jì)腳本計(jì)算卡頓率和幀率:200ms 卡頓率:測(cè)試周期內(nèi),卡頓超過(guò) 200ms 的累計(jì)時(shí)長(zhǎng)/測(cè)試總時(shí)長(zhǎng)*100%。
主觀畫質(zhì)
視頻主觀質(zhì)量評(píng)估的目的是準(zhǔn)確衡量出人眼對(duì)于視頻內(nèi)容的感知。源視頻在經(jīng)過(guò)采集編碼傳輸解碼等模塊傳輸?shù)饺搜壑?,?huì)不可避免的引入一些壓縮失真,嚴(yán)重的時(shí)候甚至?xí)芯G屏、花屏、馬賽克等問(wèn)題。在業(yè)界評(píng)估視頻主觀畫質(zhì)有兩種常用方法:主觀評(píng)估和客觀評(píng)估。主觀評(píng)估是通過(guò)主觀打分來(lái)驗(yàn)證所有視頻質(zhì)量的等級(jí)??陀^評(píng)估通過(guò)一些與主觀質(zhì)量評(píng)估結(jié)果相近的數(shù)學(xué)模型來(lái)量化人眼對(duì)于視頻內(nèi)容的感知,可以提升一些評(píng)估的效率。
主觀畫質(zhì)是指收到接收端的畫面質(zhì)量,質(zhì)量等級(jí)越高,畫面質(zhì)量越好。
實(shí)驗(yàn)室測(cè)試方法
觀察視頻畫面質(zhì)量給出主觀畫面質(zhì)量等級(jí)評(píng)價(jià)。
10分:運(yùn)動(dòng)球體清晰,主播輪廓清晰,主播五官清晰,主觀感受畫質(zhì)清晰無(wú)損
9分:運(yùn)動(dòng)球體清晰,主播輪廓清晰,主播五官有輕微馬賽克
8分:運(yùn)動(dòng)球體清晰,主播輪廓清晰,主播五官有馬賽克
7分:運(yùn)動(dòng)球體較清晰,主播輪廓較明顯,主播五官較糊,有塊狀馬賽克
6分:運(yùn)動(dòng)球體較糊,主播輪廓較明顯,主播五官較糊,有大量馬賽克
5分:運(yùn)動(dòng)球體模糊,主播輪廓模糊,面部有較多馬賽克
4分:運(yùn)動(dòng)球體糊,主播臉大糊,有較多馬賽克
3分:運(yùn)動(dòng)球體糊,主播臉大糊,有大量馬賽克
2分:運(yùn)動(dòng)球體大糊,主播臉大糊,五官不明顯,有大量馬賽克
1分:畫面整體大糊,辨識(shí)度低
首幀出圖
從進(jìn)入頻道到看到對(duì)端畫面的時(shí)間,單位:ms,首幀出圖越快越好,至少要達(dá)到 1 秒內(nèi)顯示。
簡(jiǎn)單來(lái)講,視頻首幀出圖就是視頻首幀加載出圖的時(shí)間,那么這個(gè)時(shí)間怎么來(lái)計(jì)算呢?
要想計(jì)算出視頻首幀加載的時(shí)間,我們就需要找到視頻首幀加載的標(biāo)志是什么,也就是我們?cè)趺创_定首幀是否加載了,在哪加載的?
這里我們采用的辦法是通過(guò)播放視頻后定時(shí)截取圖片的方式,找到第一張跟基準(zhǔn)圖片相似度達(dá)到90%的圖片,就是首幀圖片,然后從點(diǎn)擊進(jìn)入頻道的系統(tǒng)時(shí)間到接收到這張圖片的系統(tǒng)時(shí)間,這個(gè)時(shí)間差就是視頻首幀加載時(shí)間。
實(shí)驗(yàn)室測(cè)試方法
1、手機(jī) 1 先進(jìn)入頻道;
2、手機(jī) 2 反復(fù)進(jìn)出 10 次相同的頻道,每次在頻道內(nèi)的時(shí)間約 10s,在頻道外的等候時(shí)間約 10s;
3、在錄制設(shè)備上用固定幀率(如 30 幀/秒)錄制手機(jī) 2 進(jìn)出頻道的整個(gè)過(guò)程;
4、將錄制好的視頻倒入電腦,打開視頻編輯軟件Final cut Pro,并導(dǎo)入該視頻。在軟件中檢索錄制的視頻幀,找出所有點(diǎn)擊“進(jìn)入頻道”按鈕的幀(圖5) ,和所有首幀出現(xiàn)的幀(圖6)。由于錄制的視頻時(shí)30幀/秒的固定幀率,我們用幀號(hào)相減,就得到了兩個(gè)事件中間隔了多少幀。再按照每幀1/30秒,就可以快速計(jì)算出每次進(jìn)入頻道的時(shí)間;
5、首幀出圖時(shí)間=[c*30+d-(a*30+b)]*1000/30,10次出圖時(shí)間取平均值;

■圖 3

■圖 4
音畫同步
所謂音畫同步,其原理是對(duì)直播進(jìn)行錄像,通過(guò)分解錄制視頻的音頻視頻文件得出圖像時(shí)間、音頻時(shí)間,二者差值得出同步延時(shí)差。
音畫同步反映視頻和音頻的同步程度,音畫同步的標(biāo)準(zhǔn)是 -200ms至200ms,表示:音頻最大可以超前視頻 200ms,視頻最大可以超前音頻 200ms。音畫同步延遲越靠近 0,同步效果越好。
目前常見(jiàn)的測(cè)試音畫同步的方式,是由測(cè)試人員觀看視頻,并對(duì)比視頻畫面中人物的唇動(dòng)和聽到的聲音是否同步。由于測(cè)試人員的個(gè)體差異,會(huì)有 200ms 左右的誤差,因而,需要對(duì)視頻的音畫是否同步進(jìn)行客觀的測(cè)試。
實(shí)驗(yàn)室測(cè)試方法
1、手機(jī) 1 和手機(jī) 2 進(jìn)入同一個(gè)頻道;
2、電腦上循環(huán)播放測(cè)試用視頻文件;
3、將手機(jī) 1 后置攝像頭正對(duì)著電腦屏幕,采集正在播放的同步視頻源,保證能在手機(jī) 2 端完整地看到紅色矩形框以及數(shù)字(圖7);
3、將手機(jī) 2 移到另一個(gè)房間,為了防止電腦播放的聲音干擾到手機(jī) 2 上播放的聲音被正確采集。調(diào)整電腦播放音量,保證能在手機(jī) 2 端較大聲地聽到滴滴的聲音;
5、用 iPhone 錄制手機(jī) 2 的播放視頻和聲音,擺放位置如下圖 8 所示;

■圖 5

■圖 6
6、將錄制的視頻導(dǎo)入電腦,播放并分析視頻。錄制的視頻中每一幀都帶有幀號(hào),并且在屏幕底部還繪制了一行方格,有一個(gè)滑塊在上面移動(dòng),每幀移動(dòng)一格,每格代表 1/30 秒(33ms)。在制作測(cè)試用的視頻時(shí),保證每次打點(diǎn)的聲音都正好在滑塊位于中心位置時(shí)發(fā)聲。因此播放視頻,聽到聲音立刻暫停,觀察幀號(hào)或者觀察滑塊的位置,就可以計(jì)算出音畫之間的延遲。
帶寬跟蹤
帶寬跟蹤,即檢測(cè)頻道內(nèi)碼率傳輸?shù)拇笮 ?/p>
業(yè)界測(cè)試方法有使用 ping 測(cè)試網(wǎng)絡(luò),使用測(cè)試網(wǎng)站,使用路由跟蹤等來(lái)測(cè)試視頻帶寬,實(shí)驗(yàn)室是通過(guò) wireshark(網(wǎng)絡(luò)數(shù)據(jù)包分析軟件)截取網(wǎng)絡(luò)數(shù)據(jù)包,來(lái)分析視頻的帶寬大小。
實(shí)驗(yàn)室測(cè)試方法
1、手機(jī)連接電腦后,打開 Xcode,然后選擇 window-->Device and Simulator-->Device 選中自己的手機(jī),就能看到信息,"Identifier"這一欄,便是UDID;
2、創(chuàng)建 RVI 接口,獲取虛擬接口。終端輸入 $ rvictl -s
3、打開 wireshark ,在 capture 中選擇剛才生成的接口名(例圖 9 為 rvi0);

■圖 7
4、打開 app 開始互通,wireshark 會(huì)顯示各種各樣的的包;
5、選中發(fā)送端(本機(jī))和接受端(服務(wù)器)的 ip,一般 Source 出現(xiàn)頻率最高為本機(jī) ip,Destination 出現(xiàn)頻率最高為服務(wù)器 ip。(如圖 10 和 11);

■圖 8

■圖 9
6、復(fù)制過(guò)濾條件,點(diǎn)擊統(tǒng)計(jì),將復(fù)制的過(guò)濾條件粘貼到顯示過(guò)濾器一欄中,顯示出所抓數(shù)據(jù)的 I/O 圖,便可得到實(shí)時(shí)通訊的帶寬大?。ㄈ鐖D 12)

■圖10
以上就是我們?cè)?RTC 場(chǎng)景下的視頻體驗(yàn)指標(biāo),以及對(duì)應(yīng)的實(shí)驗(yàn)室測(cè)試方法。這些測(cè)試方法可以參考用于日常場(chǎng)景開發(fā)中。如果大家視頻體驗(yàn)還有其它希望了解的知識(shí),可以給我們留言交流。
Dev for Dev專欄介紹
Dev for Dev(Developer for Developer)是聲網(wǎng)與 RTC 開發(fā)者社區(qū)共同發(fā)起的開發(fā)者互動(dòng)創(chuàng)新實(shí)踐活動(dòng)。透過(guò)工程師視角的技術(shù)分享、交流碰撞、項(xiàng)目共建等多種形式,匯聚開發(fā)者的力量,挖掘和傳遞最具價(jià)值的技術(shù)內(nèi)容和項(xiàng)目,全面釋放技術(shù)的創(chuàng)造力。