宋來將,白光偉,沈 航,3,葛 暢
1(南京工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211816)2(南京大學(xué) 計(jì)算機(jī)軟件新技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,南京 210093)3(南京郵電大學(xué) 通信與網(wǎng)絡(luò)技術(shù)國家工程研究中心,南京 210003)
智能手機(jī)的續(xù)航能力一直為用戶所關(guān)心,特別是Android系統(tǒng)的手機(jī);且隨著智能手機(jī)功能更加豐富、帶寬的不斷提升,流媒體已經(jīng)成為了手機(jī)的主要應(yīng)用之一.而流媒體是一種資源消耗型的任務(wù),會(huì)產(chǎn)生高能耗,制約其在手機(jī)端的長時(shí)間使用.針對(duì)這個(gè)問題,我們現(xiàn)在采取最多的辦法是添加一個(gè)外置的移動(dòng)電源,但是移動(dòng)電源的攜帶不方便且影響美觀,這只是一個(gè)折衷的辦法.對(duì)于學(xué)術(shù)界和產(chǎn)業(yè)界的人來說,希望能通過優(yōu)化手機(jī)的操作系統(tǒng)和應(yīng)用來降低能耗、延長手機(jī)電池的一次使用時(shí)長,比如Google有針對(duì)Google Android API的優(yōu)化1.
近年來,研究人員從音視頻編解碼[1,2]、音視頻網(wǎng)絡(luò)傳輸[3,4]和手機(jī)屏幕背光調(diào)節(jié)[6]等幾個(gè)方面入手優(yōu)化手機(jī)續(xù)航能力.不同的編解碼方式會(huì)有不同的能耗和壓縮效率:H264編碼方式能耗低但壓縮效率也低,HEVC編碼方式則壓縮效率高但能耗也高,VP9則能在壓縮效率和能耗之間提供最好的權(quán)衡[2],而選擇低效的編碼器不僅會(huì)增加網(wǎng)絡(luò)信道的負(fù)載,還會(huì)浪費(fèi)服務(wù)器的存儲(chǔ)空間和能源.而根據(jù)實(shí)際的網(wǎng)絡(luò)狀況選擇合適的碼率、幀率以及分辨率能節(jié)省5.7%~13.9%的能量[3].還有,同時(shí)進(jìn)行背光亮度和碼率的調(diào)節(jié)平均能節(jié)省19%的能耗[5].而屏幕的能耗占到了手機(jī)總體能耗的很大一部分[7],調(diào)節(jié)屏幕背光亮度成為了優(yōu)化手機(jī)續(xù)航能力的一個(gè)重要方法.
值得注意的是:實(shí)時(shí)流媒體應(yīng)用具有交互性強(qiáng)、時(shí)延敏感等特點(diǎn).若將背光調(diào)節(jié)等任務(wù)遷移到云端執(zhí)行會(huì)帶來較高的延遲;若將背光調(diào)節(jié)直接放在手機(jī)端上完成,則會(huì)折衷節(jié)省的能量,且需要對(duì)客戶端APP進(jìn)行較大的修改才能滿足要求[7].而邊緣計(jì)算的出現(xiàn)恰好能彌補(bǔ)它們的不足:既能提供較強(qiáng)的計(jì)算能力,減少手機(jī)端的能耗;同時(shí),可以降低延遲、提高實(shí)時(shí)性[15,16].除此之外,背光調(diào)節(jié)對(duì)于視覺效果的影響,雖然可以通過計(jì)算SSIM和PSNR等參數(shù)準(zhǔn)確地度量視頻的失真情況[6],但是這只是一種客觀的度量辦法,往往與用戶實(shí)際的視覺體驗(yàn)不一致;而采用完全主觀的視頻質(zhì)量評(píng)估辦法來衡量失真情況[19],雖然能很好地反應(yīng)實(shí)際的視覺體驗(yàn),但是在同樣的條件下不同的人卻會(huì)產(chǎn)生不同的感受,有較大的隨機(jī)性.
本文提出面向邊緣計(jì)算環(huán)境的智能手機(jī)背光調(diào)節(jié)機(jī)制.與現(xiàn)有的方案不同,將背光亮度的確定和補(bǔ)償?shù)热蝿?wù)遷移到邊緣計(jì)算節(jié)點(diǎn)上完成.首先,設(shè)計(jì)由智能手機(jī)、邊緣計(jì)算節(jié)點(diǎn)和云端3部分組成的體系結(jié)構(gòu).然后,根據(jù)背光調(diào)節(jié)的限制條件,從背光亮度值的計(jì)算、背光亮度補(bǔ)償以及背光亮度保持不變的幀間隔的確定等三個(gè)方面進(jìn)行背光調(diào)節(jié)機(jī)制的優(yōu)化,降低計(jì)算的時(shí)間復(fù)雜度,提高執(zhí)行效率.最后,搭建面向Android移動(dòng)平臺(tái)的實(shí)時(shí)流媒體原型系統(tǒng),實(shí)驗(yàn)測(cè)試背光調(diào)節(jié)對(duì)智能手機(jī)在能耗、網(wǎng)絡(luò)延遲和視頻質(zhì)量等方面的影響.
背光調(diào)節(jié)主要涉及3方面問題:
1)如何計(jì)算視頻幀顯示的背光亮度;
2)如何確定背光亮度保持不變的幀間隔和背光亮度值調(diào)節(jié)幅度大小;
3)是在服務(wù)器端還是客戶端確定背光調(diào)節(jié)方案.
針對(duì)問題1,文獻(xiàn)[6]提前獲取所有視頻幀的信息,給各個(gè)視頻幀分配允許的最小背光亮度,得到一個(gè)全局最優(yōu)的背光亮度調(diào)節(jié)方案,能最大限度地減少屏幕能耗,但是會(huì)影響用戶視覺體驗(yàn),且不能適用于實(shí)時(shí)視頻的應(yīng)用場(chǎng)景.而文獻(xiàn)[12]以每個(gè)視頻幀中最大像素亮度值來衡量視頻幀顯示時(shí)的背光亮度值,避免在亮度補(bǔ)償時(shí)出現(xiàn)像素亮度值溢出的情況,并采用一種貪心算法的思想,實(shí)時(shí)計(jì)算得到一個(gè)整體上近似最優(yōu)的背光調(diào)節(jié)方案,但這會(huì)影響節(jié)能效果.在本文中,我們根據(jù)視頻幀的像素亮度平均值來衡量背光亮度,這樣能更好地反應(yīng)整體的亮度水平,有效保證視覺效果,且擁有良好的節(jié)能效果;同時(shí),利用連續(xù)視頻幀在時(shí)空上的強(qiáng)相關(guān)性,一次性計(jì)算得到連續(xù)數(shù)幀的背光亮度,減少計(jì)算的復(fù)雜度,極大地滿足實(shí)時(shí)性的要求.
針對(duì)問題2,背光亮度的調(diào)節(jié)頻率以及幅度過大會(huì)產(chǎn)生閃爍的問題,影響用戶視覺效果.文獻(xiàn)[11,13]則選擇限定相鄰視頻幀的背光亮度變化范圍,且規(guī)定了背光亮度保持不變的幀間隔.本文基于此,提前設(shè)定好背光調(diào)節(jié)的幅度范圍,然后根據(jù)手機(jī)端的背光亮度和視頻幀的像素亮度之間的關(guān)系,動(dòng)態(tài)調(diào)節(jié)背光亮度保持不變的幀間隔.
針對(duì)問題3,文獻(xiàn)[13]選擇在客戶端進(jìn)行計(jì)算,但是這樣會(huì)引入額外的消耗,抵消掉背光調(diào)節(jié)節(jié)省下來的能量.文獻(xiàn)[6]選擇在一個(gè)云服務(wù)器上進(jìn)行計(jì)算,延遲較大,不能滿足實(shí)時(shí)性的要求.本文從實(shí)時(shí)性和節(jié)能兩方面出發(fā),選擇在邊緣計(jì)算節(jié)點(diǎn)上確定和執(zhí)行背光調(diào)節(jié)方案,既能滿足實(shí)時(shí)性的需求,亦能達(dá)到釋放客戶端、節(jié)省能耗的目的.
因此,本文改進(jìn)和優(yōu)化確定背光亮度的方案:基于貪心算法的思想,以視頻幀的像素亮度均值來衡量背光亮度;從像素亮度和對(duì)比度兩個(gè)角度出發(fā)進(jìn)行背光亮度補(bǔ)償;利用實(shí)時(shí)視頻的特點(diǎn),確定背光亮度保持不變的幀間隔;將背光亮度方案的確定遷移到邊緣計(jì)算節(jié)點(diǎn)上完成.
本節(jié)描述邊緣計(jì)算環(huán)境下動(dòng)態(tài)背光調(diào)節(jié)所需要的背景知識(shí).
由于現(xiàn)在大多數(shù)手機(jī)都是LCD屏幕,所以本文主要研究基于LCD的手機(jī)屏幕能耗分析.如圖1所示,LCD主要由三部分組成:背光源、彩色濾光片和液晶面板.LCD面板作為顯示器件,本身是不發(fā)光的,需要借助外部的光才能顯示;背光源作為發(fā)光源,由許多的發(fā)光晶體管組成,負(fù)責(zé)點(diǎn)亮LCD面板;彩色濾光片,根據(jù)像素的值,選擇性地過濾一些光,一般情況,像素值越大,背光源發(fā)出的光通過濾光片的數(shù)量越多.
圖1 TFT-LCD結(jié)構(gòu)原理Fig.1 Structure principle of TFT-LCD
LCD在顯示圖像的時(shí)候,背光源發(fā)出的光是通過濾光片過濾之后才射出液晶面板被人眼所感知的.因此,影響人眼最終視覺感知效果的主要因素是LCD背光強(qiáng)度(即背光亮度)和濾光片的光透過率.而濾光片的光透過率與圖像各像素點(diǎn)灰度的大小(即像素亮度值)是成正比的[8].一般情況下,LCD背光強(qiáng)度與濾光片的光透過率的乘積等于人眼的最終視覺感知效果.
LCD功耗的主要來源是背光源,降低背光亮度是減少LCD能耗的最直接的一種方式.當(dāng)降低背光亮度時(shí),可以提高像素亮度,以作為一種亮度補(bǔ)償?shù)姆绞?而對(duì)比度是畫面黑與白的比值,反映了從黑到白的漸變層次,比值越大,色彩的表現(xiàn)越豐富.對(duì)比度增強(qiáng)是另一種亮度補(bǔ)償方式,它通過增強(qiáng)圖像的對(duì)比度達(dá)到亮度補(bǔ)償?shù)男Ч?
通常情況下,視頻解碼器會(huì)將視頻流壓縮數(shù)據(jù)解碼成YUV格式的原始數(shù)據(jù),其中Y表示亮度,也就是灰度值;U和V則表示色度,主要用于描述其色彩及其飽和度,用于指定像素的顏色.由于顯示設(shè)備是使用RGB格式進(jìn)行圖像的顯示的,所以在顯示之前,需要將YUV格式的原始視頻數(shù)據(jù)轉(zhuǎn)換成RGB格式的視頻數(shù)據(jù).對(duì)于YUV和RGB之間的轉(zhuǎn)換,可以采用如下的辦法:
①像素格式由YUV轉(zhuǎn)換為RGB
②像素格式由RGB轉(zhuǎn)換為YUV
其中,Y/U/V∈[0,255],R/G/B∈[0,255].
在傳統(tǒng)云計(jì)算環(huán)境下,計(jì)算任務(wù)需要遷移到遠(yuǎn)端數(shù)據(jù)中心,這就帶來了較高的傳輸延遲,可能會(huì)成為很多服務(wù)的障礙,如游戲.而邊緣計(jì)算為了簡(jiǎn)化移動(dòng)網(wǎng)絡(luò)的需求,選擇通過無線連接的方式,將部分任務(wù)或全部任務(wù)遷移到邊緣節(jié)點(diǎn)上,減少數(shù)據(jù)傳輸延時(shí)、提高手機(jī)端任務(wù)遷移的魯棒性[9].
邊緣計(jì)算網(wǎng)絡(luò)架構(gòu)類似于CDN[10](Content Distributed Network),可以將用戶請(qǐng)求的資源轉(zhuǎn)發(fā)到離用戶最近的邊緣節(jié)點(diǎn).與之不同的是,邊緣計(jì)算節(jié)點(diǎn)不僅具有存儲(chǔ)和分發(fā)的功能,還具有較強(qiáng)的計(jì)算能力,可以將一些原本需要放在云端的計(jì)算任務(wù)遷移到邊緣節(jié)點(diǎn)上完成,徹底解放手機(jī)端的計(jì)算能力,減少能耗,特別是對(duì)于與數(shù)據(jù)中心有較強(qiáng)交互性的應(yīng)用,可以降低延遲、提高實(shí)時(shí)性.
圖2給出了系統(tǒng)的整體框架圖,主要由流媒體數(shù)據(jù)中心、手機(jī)端、邊緣計(jì)算節(jié)點(diǎn)組成.三者的功能如下:
圖2 系統(tǒng)整體框架Fig.2 System framework
1)流媒體數(shù)據(jù)中心的主要功能是提供實(shí)時(shí)視頻源,包括不同碼率、分辨率的視頻,還可以負(fù)責(zé)用戶身份的有效性認(rèn)證,當(dāng)用戶向流媒體數(shù)據(jù)中心發(fā)出視頻流的請(qǐng)求時(shí),流媒體數(shù)據(jù)中心首先會(huì)驗(yàn)證用戶身份的有效性,如果通過,然后將幀數(shù)據(jù)發(fā)送到邊緣計(jì)算節(jié)點(diǎn),由邊緣計(jì)算節(jié)點(diǎn)進(jìn)行轉(zhuǎn)碼適配和轉(zhuǎn)發(fā);
2)邊緣計(jì)算節(jié)點(diǎn)則主要用于確定背光調(diào)節(jié)方案、對(duì)視頻數(shù)據(jù)進(jìn)行轉(zhuǎn)碼和轉(zhuǎn)發(fā)、定期收集手機(jī)端的信息;
3)手機(jī)端則負(fù)責(zé)接收邊緣計(jì)算節(jié)點(diǎn)發(fā)送過來的視頻數(shù)據(jù),然后解碼顯示.
本文側(cè)重于研究邊緣計(jì)算節(jié)點(diǎn)與手機(jī)端在進(jìn)行背光調(diào)節(jié)之間的關(guān)系.圖3給出了邊緣計(jì)算節(jié)點(diǎn)與手機(jī)端的各功能模塊及其交互情況.
圖3 手機(jī)端與邊緣計(jì)算節(jié)點(diǎn)功能模塊及交互流程Fig.3 Function module and interaction process between smartphone and edge-computing node
邊緣計(jì)算節(jié)點(diǎn)由選擇模塊、YUV獲取模塊、背光調(diào)節(jié)模塊、編碼模塊、網(wǎng)絡(luò)狀況預(yù)測(cè)模塊等組成.選擇模塊是根據(jù)手機(jī)端傳遞過來的狀態(tài)(如背光亮度水平、剩余電量等)來選擇是否執(zhí)行背光亮度調(diào)節(jié),比如:當(dāng)剩余電量超過80%時(shí),則直接將YUV數(shù)據(jù)傳遞給編碼模塊;否則,選擇執(zhí)行背光亮度調(diào)節(jié),將YUV數(shù)據(jù)和手機(jī)端背光亮度值傳遞給背光調(diào)節(jié)模塊.背光調(diào)節(jié)模塊則在保證用戶體驗(yàn)的前提下,根據(jù)視頻幀的像素亮度和手機(jī)端的背光亮度,確定視頻幀在手機(jī)端顯示時(shí)的背光亮度,發(fā)送給客戶端;同時(shí)為了減弱背光亮度降低對(duì)視覺效果的影響,會(huì)執(zhí)行視頻幀的像素亮度增強(qiáng)和對(duì)比度增強(qiáng).網(wǎng)絡(luò)狀況主要由RSSI(Received Signal Strength Indicator)來表征,網(wǎng)絡(luò)狀況預(yù)測(cè)模塊使用RSSI值來預(yù)測(cè)網(wǎng)絡(luò)狀況,根據(jù)網(wǎng)絡(luò)狀況的預(yù)測(cè)值選擇合適的編碼參數(shù),并將編碼參數(shù)發(fā)送給邊緣計(jì)算節(jié)點(diǎn)[3].編碼模塊依據(jù)網(wǎng)絡(luò)狀況選擇合適的編碼參數(shù),如分辨率、碼率等,對(duì)音視頻進(jìn)行壓縮編碼,并將壓縮編碼的數(shù)據(jù)發(fā)送給客戶端.
客戶端則包括解碼、播放、網(wǎng)絡(luò)狀況獲取、背光控制、背光亮度獲取等模塊.解碼模塊負(fù)責(zé)將從邊緣計(jì)算節(jié)點(diǎn)傳遞來的編碼幀進(jìn)行解碼.播放模塊主要負(fù)責(zé)音、視頻數(shù)據(jù)的播放.背光控制模塊則依據(jù)邊緣計(jì)算節(jié)點(diǎn)發(fā)送過來的背光亮度值,調(diào)用背光調(diào)節(jié)的系統(tǒng)接口實(shí)時(shí)調(diào)節(jié)背光值.網(wǎng)絡(luò)狀況獲取模塊則負(fù)責(zé)定期收集手機(jī)端所處網(wǎng)絡(luò)環(huán)境中的RSSI值,并發(fā)送給邊緣計(jì)算節(jié)點(diǎn)的網(wǎng)絡(luò)狀況預(yù)測(cè)模塊.
背光調(diào)節(jié)模塊是整個(gè)體系架構(gòu)中最主要的一個(gè)模塊.其工作流程是:當(dāng)流媒體數(shù)據(jù)傳輸?shù)竭吘売?jì)算節(jié)點(diǎn)時(shí),利用其計(jì)算能力強(qiáng)、可交互性高、延遲低等特點(diǎn),首先分析視頻幀的像素亮度,并與手機(jī)端的背光亮度水平作比較,確定視頻幀在手機(jī)端顯示時(shí)的背光亮度值;然后針對(duì)視頻幀進(jìn)行亮度補(bǔ)償,以彌補(bǔ)背光亮度降低對(duì)視頻質(zhì)量的影響;最后,利用流媒體自身的特性,以及連續(xù)幀像素亮度之間的關(guān)系,確定背光亮度保持不變的幀間隔.本文第4節(jié)首先描述背光調(diào)節(jié)的問題,然后描述背光亮度值度量、背光亮度補(bǔ)償以及背光亮度保持不變的幀間隔的確定的詳細(xì)過程.
前面在第三節(jié),我們簡(jiǎn)單介紹了背光亮度調(diào)節(jié)的基本原理:在降低背光亮度的大小同時(shí),對(duì)視頻幀進(jìn)行亮度補(bǔ)償.所以需要在保證視頻質(zhì)量的前提下,最大化節(jié)能效果.
假定有N個(gè)視頻幀F(xiàn)={f1,f2,…,fN},每幀fi對(duì)應(yīng)一個(gè)背光亮度值Bi,i=1,2,…,N;背光亮度與能耗之間存在映射關(guān)系E(·),則目標(biāo)函數(shù)為:
(1)
同時(shí),滿足如下的限制條件:
(2)
Bi∈[Bi-1-Δb,Bi-1+Δb)]
(3)
L≥Lmin
(4)
式(2)是一種亮度補(bǔ)償會(huì)造成失真的限制,即背光亮度的比例R要比幀像素亮度的最大值Ym(在默認(rèn)情況下,像素亮度值是[0,255]中的整數(shù)值)與255的比值大.為了不影響視頻幀的顯示質(zhì)量,會(huì)調(diào)整視頻幀所有像素的亮度,這樣當(dāng)前視頻幀的亮度值會(huì)變?yōu)樵瓉淼?/R倍,若不滿足限制(2)就會(huì)使得亮度補(bǔ)償之后像素亮度值會(huì)溢出.限制(3)則體現(xiàn)了為了避免出現(xiàn)屏幕閃爍的現(xiàn)象,連續(xù)幀顯示時(shí)的背光亮度變化不宜過大,即相對(duì)于前一幀允許最大有Δb的背光亮度變化.限制(4)則表示了一種硬件性能上的限制.由于應(yīng)用背光調(diào)節(jié)的方案是需要一定的計(jì)算能力的,若是對(duì)每個(gè)視頻幀都調(diào)整背光亮度,一方面會(huì)減弱背光調(diào)節(jié)的節(jié)能效果,另一方面會(huì)增加整體的延遲.我們規(guī)定背光亮度保持不變的幀間隔L至少要持續(xù)Lmin,即Lmin的幀的背光亮度會(huì)保持相同的水平.
基于我們的研究對(duì)象是實(shí)時(shí)視頻,延遲是其中的一個(gè)重要性能指標(biāo),為了提高本文研究的實(shí)用性,做如下的優(yōu)化:
1.為了能實(shí)時(shí)獲得視頻幀對(duì)應(yīng)的背光亮度,我們利用貪心算法的思想,求解背光亮度局部最優(yōu)值;
2.為了提高節(jié)能的效率,不要求視頻幀的所有像素點(diǎn)都滿足(2),允許一定比例的像素亮度值溢出,若像素亮度補(bǔ)償值超出范圍,直接賦值為255;
3.由于視頻幀之間存在一定的時(shí)空相關(guān)性,如在H.264編碼方式中B幀和P幀都參考I幀,而這種參考關(guān)系一旦跨越了關(guān)鍵幀間隔,相關(guān)性會(huì)減弱,不再具有較好的傳遞性;另外,增加上限值可以減少計(jì)算的復(fù)雜度[11].所以,我們規(guī)定L∈[Lmin,Lmax].
為了減少計(jì)算背光亮度值的開銷,會(huì)在一定時(shí)間內(nèi)保持背光亮度不變.于是,我們選擇計(jì)算長度為L的視頻幀亮度均值來衡量整體亮度的水平,連續(xù)L幀的亮度均值定義如下:
(5)
(6)
(7)
考慮到限制(3),我們規(guī)定:相鄰幀背光亮度變化閾值為θ.當(dāng)計(jì)算得到的背光亮度值Bi與從手機(jī)端獲取的背光亮度值Bc之間的差值大于θ時(shí),則背光亮度調(diào)節(jié)幅度為Δb;否則,背光亮度調(diào)節(jié)幅度為1.本文將Δb置為5,θ置為10.
算法1.視頻幀顯示時(shí)背光亮度值
1Input:當(dāng)前手機(jī)端的背光亮度值Bc背光亮度保持不變的幀間隔L
3ift 6endif 7 根據(jù)幀像素亮度計(jì)算視頻幀顯示時(shí)的背光亮度Bi 8ifBc>Bithen 9ifabs(Bc-Bi) < θthen 11else 13endif 14else 15ifabs(Bc-Bi)< θthen 17else 19endif 20endif 為了彌補(bǔ)背光亮度降低對(duì)視頻顯示質(zhì)量的影響,我們采取的辦法是按比例增加每幀的像素亮度和對(duì)比度.具體的定義如下: (8) (9) 亮度增強(qiáng)系數(shù)和對(duì)比度增強(qiáng)系數(shù)是根據(jù)幀的實(shí)際內(nèi)容動(dòng)態(tài)調(diào)整來確定的.根據(jù)式(8)分析可知,當(dāng)像素亮度的均值較大時(shí),大多數(shù)像素點(diǎn)包含較高的亮度值,此時(shí)如果對(duì)比度增強(qiáng)系數(shù)過大,會(huì)導(dǎo)致過多的像素點(diǎn)亮度值溢出、造成較嚴(yán)重的畫面失真.本文以亮度均值的平方根為自變量來度量對(duì)比度增強(qiáng)系數(shù),定義如下: (10) 由于亮度補(bǔ)償之后,可能會(huì)出現(xiàn)像素亮度值的溢出.因此,本文引入一種反饋機(jī)制,對(duì)亮度增強(qiáng)系數(shù)進(jìn)行調(diào)節(jié):當(dāng)像素亮度值溢出的個(gè)數(shù)超出閾值,會(huì)減少亮度增強(qiáng)系數(shù);然后重新計(jì)算像素的亮度值,并記錄亮度值溢出的像素個(gè)數(shù).循環(huán)若干次,直到亮度值溢出情況低于閾值.亮度增強(qiáng)系數(shù)反饋調(diào)節(jié)為 (11) 其中,k初始值為0,隨著失真度的增加而增加,且α1最小為1. 結(jié)合式(8)~式(11),當(dāng)k增大后,α1減小,Y′會(huì)減小;同時(shí),亮度值溢出的像素個(gè)數(shù)會(huì)減少,背光亮度補(bǔ)償對(duì)視頻幀質(zhì)量的影響也會(huì)減小.像素亮度值溢出的比例D為 (12) 其中,No為亮度值溢出的像素總數(shù). 由于迭代次數(shù)太大會(huì)增加延遲,不適合實(shí)時(shí)視頻的應(yīng)用場(chǎng)景.于是,定義加速背光亮度方案收斂的公式為 (13) (14) 其中σ為調(diào)整的基準(zhǔn)參數(shù),默認(rèn)為0.1;η為相對(duì)失真度;S為人眼能接受的最大失真度,默認(rèn)為1%,可以根據(jù)實(shí)際需求進(jìn)行修正;T為像素的總數(shù),由視頻分辨率來決定. 對(duì)于背光亮度保持不變的幀間隔L的確定,我們利用了與實(shí)時(shí)流媒體有關(guān)的兩個(gè)參數(shù):關(guān)鍵幀間隔與幀緩存大小.關(guān)鍵幀間隔大小反應(yīng)了編碼的最小連續(xù)幀數(shù),幀緩存大小則體現(xiàn)了允許緩存的最大幀個(gè)數(shù).考慮到實(shí)時(shí)流媒體的特點(diǎn),本文將Lmin表示為為關(guān)鍵幀間隔大小,而Lmax設(shè)為幀緩存的大小.當(dāng)連續(xù)兩幀之間的亮度差距超過閾值,那么將L減小;否則,增大L,具體描述見算法2.L的初始值為Lmin. 算法2描述了確定背光亮度保持不變的幀間隔的過程.第3行表示計(jì)算當(dāng)前幀的像素亮度均值,時(shí)間復(fù)雜度為O(R×C);第4~15行表示根據(jù)相鄰幀之間的像素亮度均值的差值來決定背光亮度保持不變的幀間隔,時(shí)間復(fù)雜度為O(1).所以,算法2的時(shí)間復(fù)雜度在于計(jì)算幀的像素亮度值,所以時(shí)間復(fù)雜度為O(R×C). 本節(jié)搭建Android環(huán)境下的實(shí)時(shí)流媒體原型系統(tǒng),用于測(cè)試背光調(diào)節(jié)對(duì)客戶端在節(jié)能、網(wǎng)絡(luò)延遲、視頻質(zhì)量等方面的實(shí)際影響.原型系統(tǒng)主要由三部分組成:流媒體服務(wù)器、邊緣計(jì)算節(jié)點(diǎn)以及智能手機(jī). 選用Mi 6智能手機(jī),配置Qualcomm Snapdragon 835處理器,8核16線程,主頻2.45GHz;6GB RAM;支持IEEE 802.11n WiFi和4G/3G/2G;Android 7.1.1操作系統(tǒng).流媒體服務(wù)器使用阿里云的服務(wù)器,配置Intel(R)Xeon(R)CPU E5-2682 v4的處理器,1核2線程,主頻為2.50GHz;2GB RAM;Ubuntu 16.04 64位.邊緣計(jì)算節(jié)點(diǎn)的配置為Intel Core i7 4790處理器,4核8線程,主頻為3.6GHz;16GB RAM;128GB固態(tài)硬盤(SSD). 算法2.背光亮度保持不變的幀間隔的確定1 Input:背光亮度保持不變的幀間隔L、關(guān)鍵幀間隔Lmin、幀緩存Lmax2 Output:L′3 計(jì)算幀像素亮度Yi4 if abs( Yi- Yi-1)> θ then5 if L > Lmin then6 L′ ← L-Lmin7 else8 L′ ← Lmin9 end if10 else 11 if L < Lmax then12 L′ ← L + Lmin13 else 14 L′ ← Lmax15 end if16 end if17 return L′ 智能手機(jī)安裝的程序有GWPlayer、Trepn Profile,GWPlayer是我們自主研發(fā)的一款A(yù)PP,主要功能包括實(shí)時(shí)視頻(RTMP/RTSP)的播放、背光的控制與反饋、網(wǎng)絡(luò)狀況的監(jiān)控.Trepn Profile可以從各大應(yīng)用商店下載,主要用于能耗的測(cè)量.服務(wù)端使用SRS*https://github.com/ossrs/srs來提供四種分辨率(1080p/720p/480p/360p)的實(shí)時(shí)視頻流,包括News(背景變化小)和Game(背景變化大)兩種類型,每種時(shí)長2min.邊緣計(jì)算節(jié)點(diǎn)使用FFmpeg*http://ffmpeg.org來實(shí)現(xiàn)背光方案的確定、亮度增強(qiáng)與對(duì)比度增強(qiáng)以及轉(zhuǎn)碼與轉(zhuǎn)發(fā). 為了提高實(shí)驗(yàn)數(shù)據(jù)的參考價(jià)值,每個(gè)實(shí)驗(yàn)都運(yùn)行了5次,然后取平均值,以減少數(shù)據(jù)隨機(jī)性.為了不失一般性,在實(shí)驗(yàn)之前,我們將智能手機(jī)充電至100%,且終止掉除系統(tǒng)進(jìn)程之外的其他應(yīng)用程序,以減少其他因素的影響. 在不考慮網(wǎng)絡(luò)預(yù)測(cè)的前提下,我們做兩類實(shí)驗(yàn):一類是有背光調(diào)節(jié),另一類是沒有背光調(diào)節(jié).每類分別測(cè)量手機(jī)端在播放兩種不同類型、四種不同分辨率的視頻的能耗和延遲情況. 為了實(shí)驗(yàn)的方便,選擇測(cè)量播放2min時(shí)長視頻的總體能耗和延遲.其中,總體能耗是利用Trepn Profile來測(cè)量GWPlayer播放2min時(shí)長的視頻的能耗,而總體延遲則通過記錄播放完成2min時(shí)長的視頻實(shí)際所需要的時(shí)間增量來衡量. 由圖4可知,分辨率的越大,能耗和延遲也會(huì)越大.分辨率越大,會(huì)需要更多的處理時(shí)間.同樣,在采用背光調(diào)節(jié)方案之后,會(huì)增加一定的延遲,平均會(huì)增加300ms.延遲的增加主要是由于在采取背光亮度方案之前,需要對(duì)視頻數(shù)據(jù)進(jìn)行解碼,這是一個(gè)計(jì)算密集型的操作.而采用背光調(diào)節(jié)方案可以減少能耗,且平均能節(jié)省20%~30%的能耗.由于實(shí)驗(yàn)是采用2min時(shí)長的視頻數(shù)據(jù),延遲的增加會(huì)折衷能耗的節(jié)省.但隨著視頻長度的增加,相對(duì)于300ms左右的絕對(duì)延遲增量,能耗的絕對(duì)減少量會(huì)相當(dāng)可觀.所以,對(duì)于長時(shí)間的視頻數(shù)據(jù),采用背光調(diào)節(jié)方案會(huì)有良好的表現(xiàn). 同時(shí),可以結(jié)合圖4(a)和圖4(b)的有背光調(diào)節(jié)能耗2的情形,比較可以發(fā)現(xiàn),News類型的視頻在采用了背光調(diào)節(jié)之后會(huì)比Game類型的視頻節(jié)能效果更好,這主要是因?yàn)橄鄬?duì)于News中的場(chǎng)景相對(duì)固定而言,Game中的場(chǎng)景變化較為頻繁,這樣會(huì)導(dǎo)致背光亮度會(huì)連續(xù)地增加或者減少,反而增加了能耗.所以,頻繁改變背光亮度是不合適的,而應(yīng)該選擇一個(gè)合適的背光亮度保持不變的幀間隔. 為了衡量亮度增強(qiáng)和對(duì)比度增強(qiáng)等亮度補(bǔ)償方式對(duì)視頻質(zhì)量的影響,我們將經(jīng)亮度補(bǔ)償之后的視頻保存到本地,與原始視頻進(jìn)行比較,計(jì)算它們的SSIM[18]和PSNR.測(cè)量結(jié)果顯示平均能獲得28.50dB PSNR和0.998 SSIM.在不考慮視頻傳輸、解碼等因素的影響下,像素亮度增強(qiáng)造成的亮度值溢出是視頻質(zhì)量下降的主要原因,所以像素亮度是影響SSIM和PSNR的關(guān)鍵因素.而視頻通過無線網(wǎng)絡(luò)傳輸?shù)馁|(zhì)量損失度一般在20~25dB是可以接受的[16].因此,本文提出的亮度補(bǔ)償方法能獲得較好的視頻質(zhì)量. SSIM和PSNR等指標(biāo)是從客觀的角度來衡量視頻質(zhì)量的,與主觀的視覺感受是有差別的.于是,我們隨機(jī)選取經(jīng)亮度補(bǔ)償?shù)囊曨l和原始的視頻分別在屏幕上顯示時(shí)的幀畫面對(duì)比情況,如圖5所示.每張圖左邊是有亮度補(bǔ)償?shù)囊曨l,右邊是原始的視頻.經(jīng)觀察可知,無論是色澤和飽和度,還是像素亮度和對(duì)比度,有背光調(diào)節(jié)與無背光調(diào)節(jié)差異較小:在圖5(a),前者比后者的效果遜色些;在圖5(b)中,前者與后者的效果基本一致;在圖5(c)中,前者比后者效果更好.像素亮度越大,經(jīng)亮度增強(qiáng)之后,出現(xiàn)像素亮度值溢出的概率越大. 圖5 有、無背光調(diào)節(jié)的主觀視頻質(zhì)量對(duì)比Fig.5 Subjective video quality contrast with or without backlight scaling 另外,由于不同人對(duì)同一視頻會(huì)有不同的視覺感受.為了驗(yàn)證本文提出的背光調(diào)節(jié)方法的有效性,我們做了一組調(diào)查實(shí)驗(yàn):隨機(jī)找到50位實(shí)驗(yàn)者,在不告知其是否有背光調(diào)節(jié)的前提下,讓他們依次觀看多組視頻,并收集他們觀看視頻之后的感受.實(shí)驗(yàn)者會(huì)給視頻打分,分?jǐn)?shù)從1~5,1分表示背光變化容易被察覺到,5分則表示背光的改變很難被發(fā)現(xiàn). 由圖6可知,平均滿意度為3.17,說明背光亮度的變化是令人滿意的,不容易被人察覺到.因此,本文采取的背光亮度調(diào)節(jié)方法,在降低背光亮度的情況下,仍能保持較好的視覺體驗(yàn). 圖6 視頻質(zhì)量滿意度情況Fig.6 Satisfaction degree about video quality 在上面實(shí)驗(yàn)的基礎(chǔ)上,我們做一類實(shí)驗(yàn):針對(duì)News類型的視頻,將背光調(diào)節(jié)放到手機(jī)端來執(zhí)行,測(cè)量2min時(shí)長視頻的總體能耗和延遲. 由圖7可知,在邊緣計(jì)算節(jié)點(diǎn)執(zhí)行背光亮度調(diào)節(jié)比在手機(jī)端上的節(jié)能效果更好,而延遲方面兩者相差并不大,甚至隨著分辨率的增加,前者的延遲反而會(huì)比后者還要低一些.這主要是因?yàn)槌藞?zhí)行背光調(diào)節(jié)方案的位置不同之外,其他執(zhí)行流程基本相同:分析流、獲取背光亮度方案、解碼煊染等.而相對(duì)而言,邊緣計(jì)算節(jié)點(diǎn)擁有更強(qiáng)的計(jì)算能力,執(zhí)行背光調(diào)節(jié)效率會(huì)更高,即使是高質(zhì)量的視頻亦能較快獲得結(jié)果.所以邊緣計(jì)算節(jié)點(diǎn)在處理高分辨率的視頻時(shí)整體上能獲得更低的延遲.當(dāng)在邊緣計(jì)算節(jié)點(diǎn)上確定好背光亮度調(diào)節(jié)方案之后,手機(jī)端只需根據(jù)發(fā)送過來的背光亮度流進(jìn)行背光亮度控制即可,而不需要再對(duì)流媒體進(jìn)行分析,所以節(jié)能效果會(huì)更好. 圖7 手機(jī)端和邊計(jì)算節(jié)點(diǎn)的能耗和延遲對(duì)比Fig.7 Comparison of energy consumption and delay between smartphone and edge-computing node 本文提出了面向邊緣計(jì)算環(huán)境的智能手機(jī)背光調(diào)節(jié)機(jī)制,提高手機(jī)端續(xù)航能力.其核心思想是將背光亮度值的確定和背光亮度補(bǔ)償?shù)热蝿?wù)遷移到邊緣計(jì)算節(jié)點(diǎn)上完成.其他類似的應(yīng)用程序只需要添加背光控制功能就能快速接入該系統(tǒng),且該系統(tǒng)既能滿足實(shí)時(shí)流媒體的要求,也能適用于點(diǎn)播的應(yīng)用場(chǎng)景,系統(tǒng)使用范圍較廣.實(shí)驗(yàn)結(jié)果表明,在保證視頻質(zhì)量和延遲的前提下,該機(jī)制能達(dá)到較好的節(jié)能效果.后續(xù)工作包括: 1)研究OLED的背光調(diào)節(jié)方案,提高系統(tǒng)適應(yīng)性; 2)結(jié)合視頻編解碼和傳輸,進(jìn)一步優(yōu)化視頻在移動(dòng)端的能耗.5.3 背光亮度補(bǔ)償
5.4 背光亮度保持不變的幀間隔的確定
6 實(shí)驗(yàn)與性能分析
6.1 背光調(diào)節(jié)對(duì)客戶端的影響
6.2 邊緣節(jié)點(diǎn)對(duì)客戶端能耗的影響
7 結(jié)束語