直播音视频测试心得
作者:羅必達(dá),騰訊音視頻實(shí)驗(yàn)室質(zhì)量平臺(tái)組組長(zhǎng),高級(jí)工程師。早年在微軟從事移動(dòng)測(cè)試開(kāi)發(fā),先后參與了 Windows Live Messenger 和 Bing Mobile 兩個(gè)項(xiàng)目的測(cè)試工作。2011 年加入騰訊,轉(zhuǎn)型音視頻技術(shù)研究,從事建立音視頻技術(shù)測(cè)試體系的工作,并負(fù)責(zé) QQ 音視頻通話以及騰訊云互動(dòng)直播 SDK 的底層音視頻引擎的測(cè)試,在工作和研究中對(duì)音視頻質(zhì)量評(píng)估積累了豐富的經(jīng)驗(yàn)。喜歡音樂(lè)和玩樂(lè)器,喜歡攝影,喜歡繪畫,是個(gè)不折不扣的“文藝青年”。
從事音視頻相關(guān)的測(cè)試工作也有將近5年的時(shí)間了,一路看著QQ音視頻的發(fā)展,從當(dāng)時(shí)只有幾個(gè)人的小團(tuán)隊(duì),到現(xiàn)在連續(xù)兩年公司技術(shù)突破獎(jiǎng)金獎(jiǎng),回想起來(lái)確實(shí)挺激動(dòng)。好吧,自戀的東西少提為妙,進(jìn)入正題。
為什么要寫這篇文章
幾年前我就想寫這么一篇文章了,但是當(dāng)時(shí)音視頻在SNG乃至公司都是一塊比較小眾、相對(duì)獨(dú)立的一個(gè)業(yè)務(wù)分支。隨著SNG對(duì)音視頻越來(lái)越重視,最近也有越來(lái)越多的團(tuán)隊(duì)線下找我咨詢關(guān)于音視頻測(cè)試的一些方法,我突然覺(jué)得,是時(shí)候把自己這幾年對(duì)音視頻測(cè)試相關(guān)的思考分享給大家了。當(dāng)然也有自私的一面,因?yàn)橐粢曨l只是一種技術(shù),應(yīng)用非常廣泛,而我們多年投身在實(shí)時(shí)音視頻通信這其中一塊分支上,難免會(huì)對(duì)整個(gè)音視頻行業(yè)產(chǎn)生片面的認(rèn)識(shí),所以也想借此跟大家交流,讓我們團(tuán)隊(duì)自身可以拓展一下知識(shí)面。
音視頻測(cè)試測(cè)的究竟是什么
我覺(jué)得這個(gè)問(wèn)題很重要。很多向我咨詢音視頻測(cè)試方法的同學(xué),也許連這個(gè)問(wèn)題都還沒(méi)有想清楚(說(shuō)得太直接,抱歉)。其實(shí)這不奇怪,說(shuō)實(shí)話我也是最近才開(kāi)始思考這個(gè)問(wèn)題。音視頻測(cè)試測(cè)的究竟是什么?
我思考這個(gè)問(wèn)題的原因是,很多同學(xué)向我咨詢音視頻測(cè)試方法,但我卻沒(méi)辦法給出一個(gè)明確的答案。腦海里把這5年的經(jīng)驗(yàn)都翻了一遍,發(fā)現(xiàn)都無(wú)法找到可以滿足他們的答案。最后終于茅塞頓開(kāi),原因是我們都沒(méi)想清楚要測(cè)的是什么。
上文已經(jīng)提到,音視頻只是一種技術(shù),應(yīng)用面太廣,并非但凡跟“音視頻”這幾個(gè)字眼沾上邊的都可以用一套方法去解決,也就是說(shuō),沒(méi)有“銀彈”。
首先我們要問(wèn)自己,我所負(fù)責(zé)的音視頻業(yè)務(wù)究竟要測(cè)的是什么。是“音視頻本身”的質(zhì)量,還是“音視頻周邊”相關(guān)的東西。
這么說(shuō)有點(diǎn)抽象,我還是舉些例子吧。
例如我們這5年來(lái)一直負(fù)責(zé)的QQ音視頻通話,學(xué)術(shù)一點(diǎn)來(lái)說(shuō)就是實(shí)時(shí)音視頻通話,因?yàn)橐粢曨l的內(nèi)容是我們實(shí)時(shí)生成的,在傳輸過(guò)程中,為了保證通話的實(shí)時(shí)性,我們還需要對(duì)音視頻的一些參數(shù)進(jìn)行實(shí)時(shí)調(diào)控(例如分辨率、碼率和幀率等等),以適應(yīng)復(fù)雜的網(wǎng)絡(luò)狀況(注意網(wǎng)絡(luò)狀況是不斷在實(shí)時(shí)變化的,之前看了很多公司內(nèi)部關(guān)于網(wǎng)絡(luò)相關(guān)的分享,大多數(shù)建立在靜態(tài)分析上,這其實(shí)是不正確的,當(dāng)然業(yè)務(wù)不同,關(guān)注點(diǎn)不一樣)。所以我們要測(cè)試的就是“音視頻的質(zhì)量”。
好了,大家可能要問(wèn),還有不是測(cè)“音視頻質(zhì)量”的音視頻測(cè)試嗎?有的,我再舉個(gè)例子。例如QQ空間里可能要播一個(gè)騰訊視頻,這個(gè)視頻已經(jīng)在后臺(tái)存好了,你沒(méi)辦法控制它的生成,也無(wú)法動(dòng)態(tài)對(duì)它進(jìn)行調(diào)控(即使可以調(diào)控,也是非實(shí)時(shí)調(diào)控)。在這種情況下,你測(cè)試的并不是“音視頻質(zhì)量”,而是“播放質(zhì)量”,也就是我剛剛所說(shuō)的“音視頻周邊”相關(guān)的東西。這類測(cè)試,跟大家平時(shí)測(cè)的其他非音視頻需求沒(méi)有太大的不同,唯一區(qū)別就是,可能對(duì)音視頻相關(guān)知識(shí)的一些了解會(huì)對(duì)你設(shè)計(jì)測(cè)試用例帶來(lái)一些幫助。
分析所測(cè)的音視頻需求
剛剛說(shuō)了一大堆,無(wú)非是想告訴大家,在接到音視頻測(cè)試需求的時(shí)候,需要對(duì)其進(jìn)行業(yè)務(wù)分析。我再重申一下剛剛的論點(diǎn):
首先問(wèn)自己,我所測(cè)試的是不是音視頻質(zhì)量
在解答了這個(gè)問(wèn)題后,你可以進(jìn)行業(yè)務(wù)分析了。
不同的業(yè)務(wù),對(duì)音視頻的要求是不一樣的,相應(yīng)的測(cè)試方法也不一樣。我這里簡(jiǎn)單做一些歸類:
- 實(shí)時(shí)通話類業(yè)務(wù)
例如我們所負(fù)責(zé)的QQ音視頻,就是這類業(yè)務(wù)。這類業(yè)務(wù)對(duì)實(shí)時(shí)性的要求很高。想象一下,你在跟家人聊天,在講完一句話后,要在幾秒后才能聽(tīng)到對(duì)方的反應(yīng),這是不可接受的。這就要求我們實(shí)時(shí)地根據(jù)網(wǎng)絡(luò)情況,提供不同質(zhì)量的音視頻。例如,在鏈路帶寬突降的時(shí)候,我們需要立刻感知到,并且盡快降低碼率,以使得通話能夠順利進(jìn)行(可參考網(wǎng)絡(luò)帶寬的水池效應(yīng),這時(shí)候如果我們還追求所謂的清晰度、流暢度,那其實(shí)是本末倒置的);當(dāng)帶寬恢復(fù)后,我們還要盡快地把碼率提上來(lái),以便用戶得到清晰流暢的畫面和聲音。這些調(diào)整同樣需要在其他網(wǎng)絡(luò)損傷中進(jìn)行,例如丟包(還分隨機(jī)丟包和連續(xù)丟包)、抖動(dòng)等等。
所以實(shí)時(shí)通話類業(yè)務(wù)的測(cè)試,我們更多地把關(guān)注點(diǎn)放在”流控策略“上面。
- 異步通話類業(yè)務(wù)
異步通話類業(yè)務(wù)典型的代表是PTT。由于不需要根據(jù)網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)調(diào)控(有點(diǎn)類似于傳文件),所以這類音視頻業(yè)務(wù)的音視頻測(cè)試相對(duì)簡(jiǎn)單,只需要關(guān)注生成的語(yǔ)音音質(zhì)和大小的權(quán)衡關(guān)系就行了(注意我只是說(shuō)音視頻測(cè)試,其他例如到達(dá)率等等的測(cè)試,那已經(jīng)不是音視頻測(cè)試的范疇了,下面幾個(gè)分類也如此)。也就是因?yàn)檫@樣,這種業(yè)務(wù)的音視頻開(kāi)發(fā)工作更多地是在選擇合適的CODEC以及選擇哪個(gè)碼率(非實(shí)時(shí)選擇)更優(yōu)上。這種情況下,對(duì)用戶在音質(zhì)和流量的接受程度就至關(guān)重要了,當(dāng)然,這種事情我個(gè)人認(rèn)為應(yīng)該產(chǎn)品經(jīng)理來(lái)把握比較好(別跟我扯產(chǎn)品經(jīng)理不需要技術(shù)知識(shí))。
- 一對(duì)多的秀場(chǎng)類業(yè)務(wù)
這類業(yè)務(wù)最近很火,最典型的就是全民直播(例如映客、花椒等等,一抓一大把)。這類業(yè)務(wù)的特點(diǎn)是對(duì)延時(shí)要求不高,但對(duì)清晰度和流暢度要求很高。也正是因?yàn)檠訒r(shí)要求不高的特點(diǎn),才可以把碼率維持在高段,來(lái)做到高分辨率和高幀率(這是實(shí)時(shí)類無(wú)法做到的)。一般來(lái)講,技術(shù)上都以RTMP來(lái)實(shí)現(xiàn)。
基于以上特點(diǎn),這類音視頻業(yè)務(wù),重點(diǎn)就不是放在”音視頻本身”的質(zhì)量上了,而是其他體驗(yàn)了,比如說(shuō)美顏、美白等等跟趣味相關(guān)的前處理上,還有頻道進(jìn)入的速度、切換速度等用戶體驗(yàn)上。
另外必須要提一下,這類業(yè)務(wù)并非完全對(duì)實(shí)時(shí)性沒(méi)有要求。例如教育,在一般場(chǎng)景下,確實(shí)是這種一對(duì)多的業(yè)務(wù)形態(tài),但是,一旦有老師跟學(xué)生之間的交互,那么,保證一定的實(shí)時(shí)性也是必須的。所以,還是得看具體的業(yè)務(wù)形態(tài)具體分析。
- 流媒體類業(yè)務(wù)
流媒體類業(yè)務(wù)是音視頻技術(shù)的一個(gè)很重要的分支。作為常年從事通話類業(yè)務(wù)的我,或許沒(méi)有太多資格來(lái)對(duì)這一塊提建議。但因?yàn)檫@個(gè)部分是介紹不同業(yè)務(wù)的音視頻測(cè)試特點(diǎn),我還是有必要來(lái)講一下流媒體這一個(gè)分類。
流媒體類業(yè)務(wù)相對(duì)通話類業(yè)務(wù),有一個(gè)很大的不同,那就是用戶之間基本上沒(méi)有音視頻層面的互動(dòng)。廣義上來(lái)講秀場(chǎng)類業(yè)務(wù)也可以歸為這一類。
同樣,這類業(yè)務(wù)對(duì)實(shí)時(shí)性沒(méi)有要求,音視頻也是存儲(chǔ)在后臺(tái)的數(shù)據(jù)。音視頻測(cè)試在這類業(yè)務(wù)上更多是關(guān)注編碼或者轉(zhuǎn)碼的質(zhì)量。這類測(cè)試由于可以使用很多全參考的工具(如PEAQ、PEVQ等),相對(duì)來(lái)講會(huì)比較簡(jiǎn)單,甚至開(kāi)發(fā)人員自己就可以對(duì)這一塊進(jìn)行測(cè)試了。
在傳輸層面,我不太清楚現(xiàn)在的流媒體業(yè)務(wù)會(huì)不會(huì)根據(jù)網(wǎng)絡(luò)情況來(lái)動(dòng)態(tài)轉(zhuǎn)碼(比如動(dòng)態(tài)轉(zhuǎn)分辨率和碼率)。如果有,那這一塊文章就大了。如果沒(méi)有,只是靜態(tài)地切換幾個(gè)已生成的分辨率,那基本上也跟音視頻測(cè)試沒(méi)太大的關(guān)系了。
這類業(yè)務(wù)離不開(kāi)下面要講的另一類業(yè)務(wù)。
- 播放類業(yè)務(wù)
我把QQ音樂(lè)和騰訊視頻這種業(yè)務(wù)的客戶端歸類到播放類上(也就是說(shuō),不考慮服務(wù)器的內(nèi)容生成或轉(zhuǎn)碼部分)。這類業(yè)務(wù)剛剛提過(guò),測(cè)試的其實(shí)不是“音視頻本身”的質(zhì)量,而是播放器的質(zhì)量。這類業(yè)務(wù)在傳輸方面,更多的是考慮緩存大小與實(shí)際體驗(yàn)(例如流暢性)的關(guān)系。
但是這里有一點(diǎn)要注意的,這類業(yè)務(wù)也并不是完全和音視頻測(cè)試毫無(wú)關(guān)系,例如QQ音樂(lè)客戶端有個(gè)音效相關(guān)的功能,這是后處理技術(shù),也是需要一定的音視頻測(cè)試。
。。。。。。
還有很多業(yè)務(wù)類型,就不在這里一一列舉了。
也許上面的分類不一定準(zhǔn)確,但這不重要,重要的是想希望大家在面對(duì)音視頻相關(guān)的測(cè)試需求時(shí),認(rèn)真分析一下其特點(diǎn),然后有所針對(duì)地進(jìn)行測(cè)試。
需要什么知識(shí)
無(wú)論你是不是“真的在測(cè)音視頻”,跟音視頻沾點(diǎn)邊的需求,都需要你具備一定的音視頻基礎(chǔ)知識(shí)。
當(dāng)然這些知識(shí)沒(méi)有辦法在一篇文章里面講清楚,所以僅在這里列舉一下,大家可以根據(jù)自己的需求去學(xué)習(xí)。
音頻知識(shí)
(基礎(chǔ)篇)
了解術(shù)語(yǔ):采樣率、聲道、碼率、噪聲抑制(NS)、回聲抵消(EC)、增益控制(GC)、信噪比
了解CODEC:語(yǔ)音類CODEC、音樂(lè)類CODEC,以及他們之間的應(yīng)用范圍及區(qū)別
(進(jìn)階篇)
了解采樣定理、心理聲學(xué)模型、傅里葉變換、頻譜
視頻知識(shí)
(基礎(chǔ)篇)
了解術(shù)語(yǔ):分辨率、顏色空間(RGB、YUV等)、幀率、碼率
(進(jìn)階篇)
了解人眼視覺(jué)系統(tǒng)特性,了解視頻編碼原理,了解幀類型(I幀、P幀、B幀)及參考關(guān)系
網(wǎng)絡(luò)知識(shí)
(基礎(chǔ)篇)
了解損傷類型:丟包(連續(xù)丟包、隨機(jī)丟包;固有丟包、擁塞丟包)、延時(shí)、抖動(dòng)
(進(jìn)階篇)
了解丟包恢復(fù)策略(FEC、重傳)及其優(yōu)缺點(diǎn),了解Jitter Buffer及其影響,了解實(shí)時(shí)帶寬預(yù)測(cè)算法
評(píng)測(cè)知識(shí)
無(wú)參考評(píng)估、全參考評(píng)估(PESQ、POLQA、PEAQ、PSNR、SSIM、PEVQ等)、MOS
其他
了解一些攝影相關(guān)的知識(shí)(例如快門、光圈、感光度),了解一些平臺(tái)音視頻相關(guān)的API(采集和渲染)
Q&A
這里把一些大家以前問(wèn)到,或者可能問(wèn)題的一些典型問(wèn)題,拋出來(lái)給大家分享一下。
Q:清晰度高指的是分辨率高嗎?
A:這個(gè)估計(jì)是很多非音視頻專業(yè)的同學(xué)常常會(huì)搞混的兩個(gè)概念。我這里先給出答案:分辨率確實(shí)會(huì)影響清晰度,但是兩者沒(méi)有絕對(duì)的關(guān)系。為什么這么說(shuō)呢?拋開(kāi)采集因素(例如攝像頭沒(méi)對(duì)焦)之外,這里還涉及一個(gè)因素:碼率。我先假設(shè)這里大家講的不是無(wú)損視頻,那么必然涉及到編碼。如果編碼碼率低,就算分辨率再高,單幀質(zhì)量也會(huì)由于各種塊效應(yīng)顯得很“臟”,就更不用提清晰度了。
Q:采樣率對(duì)音質(zhì)有什么影響?
A:首先要了解采樣定理,即采樣率必須高于輸入信號(hào)最高頻率的2倍,這樣才能無(wú)失真地恢復(fù)原始信號(hào)或完整地保留信息。也就是說(shuō),8kHz的采樣率只能表示0~4kHz頻率的聲音信號(hào),而48kHz能夠表示0~24kHz頻率的聲音信號(hào)。所以,如果要表示所有人耳能聽(tīng)到的所有聲音(頻率范圍20~20kHz),就必須使用40kHz以上的采樣率(常見(jiàn)的是44.1kHz和48kHz)。當(dāng)然,采樣率高了,意味著數(shù)據(jù)量就大了,編碼后的碼率也就高了。所以選擇什么采樣率,跟你的應(yīng)用對(duì)高頻的需求有多大。例如電話這種應(yīng)用,目的是用于人與人的溝通,而人類的發(fā)聲范圍是100~3400Hz,所以8kHz基本上就能滿足。QQ音視頻用的是16kHz采樣率,因?yàn)橛脩粼跐M足溝通之余,還需要一定的所謂的真實(shí)感。
這個(gè)采樣定理也可以用在視頻上,比如上面所說(shuō)的分辨率,實(shí)際上就是空間采樣率,分辨率越高,能夠表示的空間頻率越大,也就是說(shuō)可以表示更加復(fù)雜的紋理,所以一般情況下清晰度也就上去了。
Q:碼率能再低些嗎?
A:這是我最經(jīng)常被問(wèn)到的問(wèn)題,特別是之前在跟手Q基礎(chǔ)側(cè)PK音視頻流量的時(shí)候。這個(gè)問(wèn)題其實(shí)不好回答,因?yàn)檫@里涉及到質(zhì)量與碼率的權(quán)衡關(guān)系。在相同的CODEC情況下,碼率對(duì)質(zhì)量的影響最大,降低碼率,意味著就損失質(zhì)量,而音視頻質(zhì)量卻又是一個(gè)非常主觀的東西。你很難證明目前的質(zhì)量是否可以再降。因此QQ音視頻只能在移動(dòng)網(wǎng)絡(luò)這種流量敏感的網(wǎng)絡(luò)類型中,提供比wifi及有線網(wǎng)絡(luò)質(zhì)量稍差的體驗(yàn),以減少流量的消耗。但是依然會(huì)被問(wèn),還能再低些嗎?這個(gè)問(wèn)題沒(méi)有答案。
Q:我看你們的文檔里經(jīng)常有提到主觀測(cè)試,有更高效的方法嗎?
A:首先,我要強(qiáng)調(diào)一點(diǎn),如果你是做音視頻測(cè)試,一定不能排斥主觀測(cè)試,哪怕效率低下。這是因?yàn)橐粢曨l質(zhì)量本來(lái)就是一個(gè)很主觀的東西。我舉個(gè)例子,在可用帶寬極低的情況下,QQ音視頻能用的碼率有限,在視頻中,必然涉及清晰度和流暢度的權(quán)衡。如果這時(shí)你問(wèn)不同的人,是希望保證清晰度還是流暢度,你肯定會(huì)得到不同的答案。ITU對(duì)主觀測(cè)試有一些規(guī)范,也就是我們經(jīng)常聽(tīng)到的MOS評(píng)分,這是最準(zhǔn)確的測(cè)試方法。
但是主觀測(cè)試確實(shí)很影響效率,這個(gè)毋庸置疑,所以業(yè)內(nèi)也有很多人在研究客觀評(píng)測(cè)的方法,例如PESQ等等,目的是使得這些工具評(píng)測(cè)的結(jié)果更加符合主觀。
再來(lái)舉個(gè)我們經(jīng)常提到的一個(gè)悖論的例子。我們來(lái)說(shuō)一下回聲抵消的測(cè)試。目前我們回聲抵消只有主觀測(cè)試的方法,為什么呢?回聲抵消算法的關(guān)鍵是區(qū)分一段語(yǔ)音近端信號(hào)和遠(yuǎn)端回聲,然后進(jìn)行消除。我們要測(cè)試回聲抵消的效果,那么就需要一個(gè)判斷回聲是否被消除干凈的算法或工具,咦,這不就是在做回聲抵消嗎?如果我的算法沒(méi)有開(kāi)發(fā)的算法好,那我肯定檢查不出來(lái)是否有回聲,如果算法比開(kāi)發(fā)的好,那為啥開(kāi)發(fā)不直接把我的算法用在回聲抵消中呢?
Q:能否告訴我你的測(cè)試結(jié)果究竟是pass還是fail?
A:能,也不能。音視頻質(zhì)量的測(cè)試從來(lái)就不只有0和1的結(jié)果。音視頻質(zhì)量往往是在給定資源情況下的一種權(quán)衡結(jié)果(參考上面講到的清晰度與流暢度)。所以這里要明確你的目標(biāo)是什么,但這個(gè)目標(biāo)不一定是“正確”的。如果拿捏不準(zhǔn)自己的產(chǎn)品音視頻質(zhì)量是否已經(jīng)達(dá)到最優(yōu),通過(guò)競(jìng)品對(duì)比分析也是一種很有效的解決方法,這也是很多產(chǎn)品在做性能優(yōu)化時(shí)采用的手段
總結(jié)
- 上一篇: java截全屏_Java全屏截图
- 下一篇: chrome 打开默认页 被篡改_为什么