你是否遇到過這樣的問題,在瘋狂追劇時手機電量消耗過快,一度覺得是屏幕亮度等引發?但當在相同的屏幕亮度、音量、網絡環境(WiFi網絡)等條件下刷同一部劇,不一樣視頻類應用的耗電量仍不一樣。緩存
那麼還有哪些因素會增長視頻應用的耗電量?華爲終端開放實驗室從預緩存策略角度出發,分別對8款視頻類應用的耗電狀況進行了對比分析,帶你探究預緩存策略對這些應用耗電量的影響!服務器
爲保證視頻播放流暢,在視頻播放過程當中,須要將要播放的視頻數據臨時下載到內存中,以便解碼後在屏幕上播放。這種預先臨時下載到內存中的行爲,咱們稱之爲預緩存。視頻類應用所採用的預緩存策略是影響耗電的重要緣由。這些數據在播放完成、中途退出或掉電的狀況下均可能被清除。網絡
預緩存策略會直接影響WiFi狀態,進而影響應用的功耗值(耗電量)。故經過WiFi狀態的分佈數據能夠直觀體現視頻類應用的具體功耗。tcp
本次,華爲終端開放實驗室選取了8款常見的視頻類應用做爲評測對象,探究各應用不一樣預緩存策略對手機功耗的影響。測試
1、測試環境優化
硬件環境:華爲Mate 20cdn
軟件版本:Android 9.0視頻
2、測試範圍對象
本次測試選取了常見的8款視頻類App:blog
愛奇藝9.12.0、優酷視頻7.5.九、咪咕視頻5.5.5.一、騰訊視頻6.5.8.1798一、搜狐視頻7.0.一、影視大全2.8.六、百度視頻8.8.0、樂視視頻8.7
3、預置條件
4、操做步驟
平均包 = 總數據包個數 / 總週期數
稀疏度 = 零數據包週期數 / 總週期數
平均包較小且稀疏度值較大則代表WiFi在線視頻播放的緩存策略較優。
平均包較大且稀疏度較小,意味着頻繁緩衝,WiFi不間斷工做,WiFi視頻播放的緩存策略較差。
屢次測試在線視頻播放的WiFi工做狀態和其對應的功耗,得出以下關係:
本次測試的8款應用的WiFi分佈狀態指標對好比下圖:
能夠看出咪咕視頻的稀疏度小於0.5,測試值爲0.3055,功耗值大於50毫安,功耗值較大。可見WiFi長時間處於工做狀態,預緩存策略有待整改。經過功耗值的對比,咪咕視頻觀看1小時視頻耗用的功耗至關於影視大全的1.5-2小時的功耗值。
1、預緩存流程
視頻在線播放過程以下圖所示,大致涉及兩個過程:
理論上視頻播放須要知足的條件是:任什麼時候刻(t)的當前冗餘緩存視頻數據D大於0(D=v1t-v2t>0)。可是實際上網絡帶寬或者用戶拖動進度條等因素都會對播放產生影響,因此D值的選取很大程度上決定了用戶的體驗。
2、WiFi工做狀態
連續一段時間的WiFi工做狀態反映出當前冗餘緩存是否恰當,也反映出預緩存策略是否恰當。WiFi主要有三種狀態:工做狀態(Active)、監聽狀態(listen)和休眠狀態(sleep)。工做狀態和監聽狀態主要體如今數據包的傳遞,休眠狀態下理解成零數據包的傳遞。工做狀態和監聽狀態越多功耗越大,休眠狀態越多功耗越小。所以咱們能夠經過WiFi狀態分佈查看其功耗的大小。
3、預緩存策略對WiFi工做狀態的影響
1.長期處於監聽狀態(listen)——高功耗
冗餘緩存較小,視頻解碼播放完成須要繼續緩存才能流暢播放,須要頻繁的經過WiFi傳遞數據包。WiFi啓動上傳或者下載一個有效的數據包後,在進入睡眠狀態以前會有一個監聽狀態(listen)來保證WiFi鏈接的及時性。對於頻繁的小包傳遞會使WiFi有較長的時間在監聽狀態,功耗較大。
2.長期處於工做狀態(Active)——高功耗
冗餘緩存太大以下圖,WiFi頻繁的傳遞數據包,緩存的數據遠大於當前視頻解碼播放的數據,形成WiFi長時間處於工做狀態,功耗較大。部分用戶觀看視頻中途不看,過多的緩存內容也會形成功耗的浪費。
3.WiFi間歇性工做——低功耗
冗餘緩存適中狀況以下圖,緩存數據大於當前播放視頻解碼數據時候,WiFi不進行數據包傳遞進入休眠狀態以下降功耗。當冗餘D值被消耗到某個閾值時,WiFi喚醒工做.。WiFi間歇工做特性明顯,功耗獲得極大優化。
4、平均包和稀釋度
爲了解視頻播放過程當中WiFi工做狀態的分佈,衡量預緩存策略,咱們引入了兩個評測指標:單位週期平均數據包數(平均包)和數據包爲零的週期數佔比(稀疏度)。
平均包(avePkgs)的個數越少,表明數據包傳遞越少,處於工做狀態的時間就越少。稀疏度越大,表明零數據包的個數越多,處於休眠狀態時間越長。
總數據包數(Pkgs):TCP/IP協議通訊傳輸中的數據單位稱之爲數據包,統計數據包出現的總次數,包括上傳和下載的數據包次數。
總週期數:實際獲取數據包的總時間/基本週期(50毫秒)。
零數據包週期數:相鄰兩條數據包記錄時間之間大於基本週期,則稱之有一組零數據。
在不影響流暢播放的前提下,能夠經過如下方法進行優化:
*以上內容首發於安卓綠色聯盟公衆號,解釋權歸華爲終端開放實驗室全部