你是否遇到过这样的问题,在疯狂追剧时手机电量消耗过快,一度以为是屏幕亮度等引起?但当在相同的屏幕亮度、音量、网络环境(WiFi 网络)等条件下刷同一部剧,不同视频类应用的耗电量仍不同。
那么还有哪些因素会增加视频应用的耗电量?华为终端开放实验室从预缓存策略角度出发,分别对 8 款视频类应用的耗电情况进行了对比分析,带你探究预缓存策略对这些应用耗电量的影响!
为保证视频播放流畅,在视频播放过程中,需要将要播放的视频数据临时下载到内存中,以便解码后在屏幕上播放。这种预先临时下载到内存中的行为,我们称之为预缓存。视频类应用所采用的预缓存策略是影响耗电的重要原因。这些数据在播放完成、中途退出或掉电的情况下都可能被清除。
预缓存策略会直接影响 WiFi 状态,进而影响应用的功耗值(耗电量)。故通过 WiFi 状态的分布数据可以直观体现视频类应用的具体功耗。
本次,华为终端开放实验室选取了 8 款常见的视频类应用作为评测对象,探究各应用不同预缓存策略对手机功耗的影响。
一、测试环境
硬件环境:华为 Mate 20
软件版本:Android 9.0
二、测试范围
本次测试选取了常见的 8 款视频类 App:
爱奇艺 9.12.0、优酷视频 7.5.9、咪咕视频 5.5.5.1、腾讯视频 6.5.8.17981、搜狐视频 7.0.1、影视大全 2.8.6、百度视频 8.8.0、乐视视频 8.7
三、预置条件
四、操作步骤
平均包 = 总数据包个数 / 总周期数
稀疏度 = 零数据包周期数 / 总周期数
平均包较小且稀疏度值较大则表明 WiFi 在线视频播放的缓存策略较优。
平均包较大且稀疏度较小,意味着频繁缓冲,WiFi 不间断工作,WiFi 视频播放的缓存策略较差。
多次测试在线视频播放的 WiFi 工作状态和其对应的功耗,得出如下关系:
本次测试的 8 款应用的 WiFi 分布状态指标对比如下图:
可以看出咪咕视频的稀疏度小于 0.5,测试值为 0.3055,功耗值大于 50 毫安,功耗值较大。可见 WiFi 长时间处于工作状态,预缓存策略有待整改。通过功耗值的对比,咪咕视频观看 1 小时视频耗用的功耗相当于影视大全的 1.5-2 小时的功耗值。
一、预缓存流程
视频在线播放过程如下图所示,大体涉及两个过程:
理论上视频播放需要满足的条件是:任何时刻 (t) 的当前冗余缓存视频数据 D 大于 0(D=v1*t-v2*t>0)。但是实际上网络带宽或者用户拖动进度条等因素都会对播放产生影响,所以 D 值的选取很大程度上决定了用户的体验。
二、WiFi 工作状态
连续一段时间的 WiFi 工作状态反映出当前冗余缓存是否恰当,也反映出预缓存策略是否恰当。WiFi 主要有三种状态:工作状态(Active)、监听状态(listen)和休眠状态(sleep)。工作状态和监听状态主要体现在数据包的传递,休眠状态下理解成零数据包的传递。工作状态和监听状态越多功耗越大,休眠状态越多功耗越小。因此我们可以通过 WiFi 状态分布查看其功耗的大小。
三、预缓存策略对 WiFi 工作状态的影响
1.长期处于监听状态(listen)——高功耗
冗余缓存较小,视频解码播放完成需要继续缓存才能流畅播放,需要频繁的通过 WiFi 传递数据包。WiFi 启动上传或者下载一个有效的数据包后,在进入睡眠状态之前会有一个监听状态(listen)来保证 WiFi 连接的及时性。对于频繁的小包传递会使 WiFi 有较长的时间在监听状态,功耗较大。
2.长期处于工作状态(Active)——高功耗
冗余缓存太大如下图,WiFi 频繁的传递数据包,缓存的数据远大于当前视频解码播放的数据,造成 WiFi 长时间处于工作状态,功耗较大。部分用户观看视频中途不看,过多的缓存内容也会造成功耗的浪费。
3.WiFi 间歇性工作——低功耗
冗余缓存适中情况如下图,缓存数据大于当前播放视频解码数据时候,WiFi 不进行数据包传递进入休眠状态以降低功耗。当冗余 D 值被消耗到某个阈值时,WiFi 唤醒工作.。WiFi 间歇工作特性明显,功耗得到极大优化。
四、平均包和稀释度
为了解视频播放过程中 WiFi 工作状态的分布,衡量预缓存策略,我们引入了两个评测指标:单位周期平均数据包数(平均包)和数据包为零的周期数占比(稀疏度)。
平均包(avePkgs)的个数越少,代表数据包传递越少,处于工作状态的时间就越少。稀疏度越大,代表零数据包的个数越多,处于休眠状态时间越长。
总数据包数(Pkgs):TCP/IP 协议通信传输中的数据单位称之为数据包,统计数据包出现的总次数,包括上传和下载的数据包次数。
总周期数:实际获取数据包的总时间/基本周期(50 毫秒)。
零数据包周期数:相邻两条数据包记录时间之间大于基本周期,则称之有一组零数据。
在不影响流畅播放的前提下,可以通过以下方法进行优化:
* 以上内容首发于安卓绿色联盟公众号,解释权归华为终端开放实验室所有