看剧流畅还省电?视频类应用预缓存策略功耗评测详解

你是否遇到过这样的问题,在疯狂追剧时手机电量消耗过快,一度觉得是屏幕亮度等引发?但当在相同的屏幕亮度、音量、网络环境(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功耗优化的目的。

*以上内容首发于安卓绿色联盟公众号,解释权归华为终端开放实验室全部

相关文章
相关标签/搜索