你是否遇到过这样的问题,在疯狂追剧时手机电量消耗过快,一度觉得是屏幕亮度等引发?但当在相同的屏幕亮度、音量、网络环境(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毫秒)。
零数据包周期数:相邻两条数据包记录时间之间大于基本周期,则称之有一组零数据。
在不影响流畅播放的前提下,能够经过如下方法进行优化:
*以上内容首发于安卓绿色联盟公众号,解释权归华为终端开放实验室全部