看劇流暢還省電?視頻類應用預緩存策略功耗評測詳解

你是否遇到過這樣的問題,在瘋狂追劇時手機電量消耗過快,一度覺得是屏幕亮度等引發?但當在相同的屏幕亮度、音量、網絡環境(WiFi網絡)等條件下刷同一部劇,不一樣視頻類應用的耗電量仍不一樣。緩存

那麼還有哪些因素會增長視頻應用的耗電量?華爲終端開放實驗室從預緩存策略角度出發,分別對8款視頻類應用的耗電狀況進行了對比分析,帶你探究預緩存策略對這些應用耗電量的影響!服務器

什麼是預緩存?

爲保證視頻播放流暢,在視頻播放過程當中,須要將要播放的視頻數據臨時下載到內存中,以便解碼後在屏幕上播放。這種預先臨時下載到內存中的行爲,咱們稱之爲預緩存。視頻類應用所採用的預緩存策略是影響耗電的重要緣由。這些數據在播放完成、中途退出或掉電的狀況下均可能被清除。網絡

預緩存如何影響應用耗電?

預緩存策略會直接影響WiFi狀態,進而影響應用的功耗值(耗電量)。故經過WiFi狀態的分佈數據能夠直觀體現視頻類應用的具體功耗。tcp

image

本次,華爲終端開放實驗室選取了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、預置條件

  1. 在統一WiFi環境下,關閉手機WiFi自動更新版本;
  2. 播放器的設置相同:播放720超清畫質,視頻播放無彈窗,抓包過程當中不會出現廣告;
  3. 手機鏈接USB,手機測試時電量大於50。

4、操做步驟

  1. 打開APP播放影片,播放10分鐘後經過tcpdump抓取接下來10分鐘的數據包生成.pcap文件;
  2. 使用Wireshark打開抓取到的.pcap文件並將其導出成csv文件;
  3. 按時間順序統計全部涉及本機ip(包括上傳下載)的數據包記錄到集合中,集合大小爲總數據包數,本機ip通常以192.168開頭;
  4. 以50毫秒爲週期,將集合進行分組。一組內可能有多條數據包記錄,例如50毫秒內有多條數據包記錄;也可能多個連續組數據包都爲0,例如兩條相鄰數據包記錄之間時長大於50毫秒;
  5. 統計總分組數爲總週期數,數據包爲0的組數爲零包週期數;
  6. 計算平均包和稀疏度。
  • 平均包 = 總數據包個數 / 總週期數

  • 稀疏度 = 零數據包週期數 / 總週期數

平均包較小且稀疏度值較大則代表WiFi在線視頻播放的緩存策略較優。

平均包較大且稀疏度較小,意味着頻繁緩衝,WiFi不間斷工做,WiFi視頻播放的緩存策略較差。

測試結果

屢次測試在線視頻播放的WiFi工做狀態和其對應的功耗,得出以下關係:

  • 平均包小於10而且稀疏度大於0.8時,功耗值小於30毫安;
  • 平均包小於20而且稀疏度大於0.5小於0.8時,功耗值大於30毫安小於50毫安;
  • 平均包大於20或者稀疏度小於0.5時,功耗值大於50毫安;

image

本次測試的8款應用的WiFi分佈狀態指標對好比下圖:

image

能夠看出咪咕視頻的稀疏度小於0.5,測試值爲0.3055,功耗值大於50毫安,功耗值較大。可見WiFi長時間處於工做狀態,預緩存策略有待整改。經過功耗值的對比,咪咕視頻觀看1小時視頻耗用的功耗至關於影視大全的1.5-2小時的功耗值。

image

相關技術要點解析

1、預緩存流程

視頻在線播放過程以下圖所示,大致涉及兩個過程:

  1. 從服務器緩存視頻到內存上,假設緩存速率是v1 ;
  2. 播放器的解碼器從內存上讀取緩存數據解碼渲染到屏幕上,假設解碼速率是v2。

image

理論上視頻播放須要知足的條件是:任什麼時候刻(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長時間處於工做狀態,功耗較大。部分用戶觀看視頻中途不看,過多的緩存內容也會形成功耗的浪費。

image

3.WiFi間歇性工做——低功耗

冗餘緩存適中狀況以下圖,緩存數據大於當前播放視頻解碼數據時候,WiFi不進行數據包傳遞進入休眠狀態以下降功耗。當冗餘D值被消耗到某個閾值時,WiFi喚醒工做.。WiFi間歇工做特性明顯,功耗獲得極大優化。

image

4、平均包和稀釋度

爲了解視頻播放過程當中WiFi工做狀態的分佈,衡量預緩存策略,咱們引入了兩個評測指標:單位週期平均數據包數(平均包)和數據包爲零的週期數佔比(稀疏度)。

平均包(avePkgs)的個數越少,表明數據包傳遞越少,處於工做狀態的時間就越少。稀疏度越大,表明零數據包的個數越多,處於休眠狀態時間越長。

總數據包數(Pkgs):TCP/IP協議通訊傳輸中的數據單位稱之爲數據包,統計數據包出現的總次數,包括上傳和下載的數據包次數。

總週期數:實際獲取數據包的總時間/基本週期(50毫秒)。

零數據包週期數:相鄰兩條數據包記錄時間之間大於基本週期,則稱之有一組零數據。

優化建議

在不影響流暢播放的前提下,能夠經過如下方法進行優化:

  1. WiFi視頻播放場景下,採用WiFi間歇工做的方式來提高功耗體驗;
  2. 經過當前時刻的網絡帶寬d、緩存速度v一、播放速度v二、播放進度c和當前冗餘緩存數據量D等參考指標綜合計算一個值y = f (d,v1,v2,c,D), 當y值知足某個設定的閾值,WiFi中止緩存數據,讓其進入休眠。
  3. 各大廠商也能夠引入更多的WiFi緩存模型來達到即能知足視頻流暢播放又能知足WiFi功耗優化的目的。

*以上內容首發於安卓綠色聯盟公衆號,解釋權歸華爲終端開放實驗室全部

相關文章
相關標籤/搜索