基于webrtc的安卓720p和硬編解碼測(cè)試報(bào)告

一、引言
因?yàn)橛行┛蛻魧?duì)支持720p視頻有要求,所以,需要讓組件支持720p。對(duì)于720p,關(guān)鍵問(wèn)題一個(gè)在于帶寬,另外一個(gè)在于終端設(shè)備CPU的消耗。對(duì)于帶寬,高分辨自然需要高碼率與之對(duì)應(yīng),對(duì)于需要多少碼率,也需要測(cè)試才能最終確定。對(duì)于CPU消耗,720p在編解碼時(shí),需要耗費(fèi)大量CPU,復(fù)雜度較高,很容易引起手機(jī)等終端發(fā)燙。而安卓自4.2之后開(kāi)始硬件支持視頻編解碼,主要內(nèi)容在mediacodec包中。但是很多軟件不愿意去用安卓硬編解碼,主要原因每個(gè)芯片廠商對(duì)硬編解碼的實(shí)現(xiàn)與對(duì)外輸出的數(shù)據(jù)都有可能不同,造成適配起來(lái)相當(dāng)費(fèi)時(shí)費(fèi)力。至于能否使用自然需要測(cè)試。
所以本文包括測(cè)試如下:
1、720p碼率測(cè)試
2、硬編解碼手機(jī)支持適配測(cè)試
3、硬編碼與軟編碼對(duì)比測(cè)試

二、720p碼率測(cè)試
測(cè)試序列:FourPeople_1280x720_60.y4m
測(cè)試環(huán)境:PC,x264編碼器,組件相同配置
測(cè)試數(shù)據(jù):
1、主觀質(zhì)量打分

主觀質(zhì)量打分.png

注:這里6分表示圖像尚為清晰,能夠接受。縱列代表碼率,橫列代表不同的編碼級(jí)別。

2、客觀質(zhì)量打分

客觀質(zhì)量打分.png

這里測(cè)試采用FourPeople_1280x720_60.y4m標(biāo)準(zhǔn)序列,直接采用x264編碼,配置則和組件相同配置。
從測(cè)試的數(shù)據(jù)來(lái)看,如果要想達(dá)到720p該有的清晰度,碼率至少要達(dá)到800kb,但是現(xiàn)在組件的策略只能達(dá)到500kb,后期碼率這一塊肯定需要做出調(diào)整,來(lái)適應(yīng)720p分辨率。

三、硬編解碼手機(jī)支持適配測(cè)試
測(cè)試方法:將支持硬編解碼的組件分別安裝在不同的安卓手機(jī),看是否支持硬編解碼以及走的是軟編解碼還是硬編解碼。
測(cè)試數(shù)據(jù):
可支持硬編解碼:

三星S5---------------------硬編解碼----------高通
三星note5 n9200-------硬編解碼----------三星
三星s6---------------------硬編解碼----------三星
華為mate7---------------硬編解碼----------海思
HTC d816t -----------------硬編解碼----------高通
紅米note1s---------------硬編解碼----------高通
Vivo x6d--------------------硬編解碼----------MTK
三星sm_n9006----------硬編解碼----------高通
Coolpad_a8_930---------硬編解碼----------高通
Nubia_nx513j-------------硬編解碼----------高通
Coolpad_8297------------硬編解碼----------高通
Lenovo_x2_to-------------硬編解碼----------MTK
HTC_one_m8w------------硬編解碼---------高通
LG_h818--------------------硬編解碼----------高通
金立f103------------------硬編解碼-----------MTK
金立y51a------------------硬編解碼-----------高通
Oppo A53m----------------硬編解碼-----------高通

軟編解碼:

紅米2A-------------------軟編解碼------------hantro
三星sch_i939d---------軟編解碼------------三星
三星sm_g7108v-------軟編解碼------------高通
小米3 --------------------軟編解碼------------Nvidia

因?yàn)樵谶m配時(shí),只適配了高通,華為海思,聯(lián)發(fā)科以及三星獵戶座這四個(gè)主流芯片,所以其他芯片手機(jī)在組件中一定不走硬編解碼,但是即使是這四個(gè)芯片也還要看芯片是否支持,以及適配情況。如果支持硬編碼,就支持硬解碼。現(xiàn)在主流機(jī)型都支持硬編解碼,只要是這四個(gè)芯片,組件應(yīng)該就支持硬編解碼。

測(cè)試中發(fā)現(xiàn)的問(wèn)題如下:
1、硬解碼在適配方面難度更大,主要表現(xiàn)在:
- 解碼過(guò)程中變化分辨率,mate7等會(huì)大小屏。
- 對(duì)于360*480等不是16整數(shù)倍的寬高,不同機(jī)器的表現(xiàn)不一,一系列適配問(wèn)題。
- 解碼過(guò)程中重新設(shè)置解碼器,會(huì)出現(xiàn)問(wèn)題。

2、硬編碼在三星s6上分辨率不是16整數(shù)倍如360*480時(shí),編碼出來(lái)的數(shù)據(jù)有問(wèn)題。

基于上述一系列問(wèn)題,去適配硬解碼不現(xiàn)實(shí),難度很大。但是硬編碼問(wèn)題較少,在給編碼器設(shè)置相同的profile和level后,編碼出來(lái)的數(shù)據(jù)較為統(tǒng)一。但是對(duì)于不是16整數(shù)倍的分辨率,除了三星s6,仍然有潛在風(fēng)險(xiǎn)。所以硬編碼第一步,最好只支持16整數(shù)倍的分辨率,后面再去找到360*480分辨率的問(wèn)題點(diǎn)和共同點(diǎn),來(lái)解決問(wèn)題。

四、硬編碼與軟編碼對(duì)比測(cè)試
測(cè)試機(jī)型:金立F013,三星S6,華為mate7,HTC_d816t,LG_h818,Oppo A53m
測(cè)試工具:GT
測(cè)試時(shí)長(zhǎng):10分鐘
測(cè)試內(nèi)容:CPU對(duì)比測(cè)試,手機(jī)溫度對(duì)比測(cè)試,通話圖像質(zhì)量主觀對(duì)比測(cè)試
測(cè)試數(shù)據(jù)如下:
1、CPU對(duì)比測(cè)試

CPU對(duì)比.png

注:這里CPU消耗為平均消耗值。
數(shù)據(jù)上可以看出,絕大部分機(jī)型硬編碼在CPU消耗上要好于軟編碼的,這也是硬編碼最大的優(yōu)勢(shì)所在。

2、手機(jī)溫度對(duì)比測(cè)試

溫度對(duì)比.png

注:空格為用GT沒(méi)有獲取到溫度數(shù)據(jù)。這里的溫度為平均溫度。
數(shù)據(jù)上可以看出,硬編碼的手機(jī)溫度要好于軟編碼的。

3、通話主觀質(zhì)量對(duì)比測(cè)試

通話質(zhì)量對(duì)比.png
6   特別好
5   好
4   較好
3   一般
2   較差
1   特別差

這里主觀評(píng)分按照清晰度、流暢度和延時(shí)在3個(gè)方面分別評(píng)分,從而更為全面地評(píng)價(jià)軟硬編碼。
機(jī)型覆蓋支持的四種芯片,從數(shù)據(jù)和實(shí)驗(yàn)中可以看到,在部分機(jī)型上面硬編碼的流暢度要比軟編碼要差,通過(guò)分析,主要原因在于,采集后的圖像沒(méi)有給到編碼器,而是丟棄了,至于引起丟幀的原因有待查明。而同時(shí)這部分機(jī)型上,清晰度要高于軟編碼,可能碼率控制部分沒(méi)有起作用,原因有待進(jìn)一步查明。
而在一些機(jī)型上,如華為mate7,Oppo A53m上軟硬編碼表現(xiàn)較為相似。

總結(jié):

對(duì)于軟編碼和硬編碼,總體而言,硬編碼在CPU消耗和手機(jī)發(fā)熱方面要好一點(diǎn),但質(zhì)量方面差一些,但是這種質(zhì)量差,是因?yàn)閣ebrtc其他部分引起的,硬編碼本身不存在問(wèn)題。如果在碼率控制和丟幀處理上做的比較好的話,硬編碼有著絕對(duì)的優(yōu)勢(shì)。
對(duì)于720p,也同樣是一個(gè)較為系統(tǒng)的工程,如果只是把分辨率編碼成7201280,較為簡(jiǎn)單,但視頻通話總體質(zhì)量還是要靠每一個(gè)部分共同支持,才能達(dá)到比較好的效果。顯然,webrtc引擎很多地方對(duì)720p的支持不是很好,尤其在于碼率動(dòng)態(tài)調(diào)整和幀率動(dòng)態(tài)調(diào)整方面。還有就是實(shí)際網(wǎng)絡(luò)也比較難以達(dá)到跑720p的要求。
對(duì)于以后,硬編碼建議繼續(xù)優(yōu)化,主要在于適配機(jī)型方面。適配更多的機(jī)型之后,也可以考慮用到我們現(xiàn)有的240
320、360480、480640這些分辨率上面。
對(duì)于720p,建議后面可以從碼率動(dòng)態(tài)調(diào)整和幀率動(dòng)態(tài)調(diào)整這兩個(gè)方面去適應(yīng)720p,或者設(shè)置成固定的而不用動(dòng)態(tài)的。

經(jīng)過(guò)優(yōu)化之后補(bǔ)充測(cè)試

優(yōu)化點(diǎn):如上述總結(jié)所言,經(jīng)過(guò)在碼率和幀率方面對(duì)720p做出單獨(dú)處理,不同于其他低分辨率,同時(shí)不影響原有低分辨率相關(guān)算法。
補(bǔ)充測(cè)試:
這里僅補(bǔ)充通話主觀質(zhì)量對(duì)比測(cè)試,結(jié)果如下,
通話主觀質(zhì)量對(duì)比測(cè)試

zhiliang.png
6   特別好
5   好
4   較好
3   一般
2   較差
1   特別差

總結(jié):

經(jīng)過(guò)在碼率和幀率方面對(duì)720p做出單獨(dú)處理,通話整體質(zhì)量已經(jīng)達(dá)到較好的效果。但仍存在一些缺陷,主要表現(xiàn)在機(jī)器配置較低時(shí),會(huì)有卡頓。而且在丟幀這一塊尚不完善,需要繼續(xù)改進(jìn)。
軟編碼和硬編碼表現(xiàn)基本相當(dāng),但手機(jī)發(fā)熱會(huì)好一點(diǎn),CPU占用會(huì)小一點(diǎn),但部分機(jī)型可能延時(shí)會(huì)大一點(diǎn)。
這一切都是基于好的網(wǎng)絡(luò)和好的組網(wǎng)的前提下,跑高碼率,沒(méi)有組網(wǎng)的支持,實(shí)際線上環(huán)境會(huì)比較卡的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容