看剧、刷短视频是很多手机用户非常重要的娱乐方式之一。然而快乐无限,电量有限,在硬件条件不变的情况,优化软件的耗电可以有效的提升用户使用时长。本次测评将以 8 款常用视频 APP 为例,对比分析不同视频解码方式对耗电的影响,并提供硬解码适配指导。

测试背景

什么是视频解码?

视频是通过连续的图像与音频的叠加,原始的视频一般都存在大量的冗余,需要占用大量存储空间,不利于存储和传播。我们看到的视频通常都是采用某种格式进行压缩过的。因此,在播放过程中就需要进行一个反向的解压缩过程,这个过程就是视频解码。通常,我们根据解码方式的不同将视频解码分成软解码和硬解码两种。

软硬解码的区别

高清视频的解码需要耗费大量的计算和内存资源。软解码依靠 CPU 来完成解码,可能挤占其它应用的资源,可能导致发热和卡顿的现象。硬解码可以将 CPU 从繁重的视频解码运算中释放出来,依靠专门的编码解码器进行解码,在更高效输出视频的同时有利于手机性能和功耗的提升。

测试方案

测试环境

将测试样机设置为飞行模式并连接同一 WIFI 网络,关闭手机自动背光功能,音量设置为 100,亮度调到 150nit。

测试对象

image

测试方案

1、提前向应用开发者收集针对测试机型软解码和硬解码的两个版本的测试安装包;

2、将测试机拆壳后连接稳压电源(安捷伦或 PowerMonitor)进行测试,避免电池的影响;

3、将手机恢复预置状态后先后安装测试应用,针对同一应用选择同一视频播放 10 分钟,视频清晰选择 APP 支持的最高清晰度,记录每次测试电流值。

4、计算每个应用软硬解码的平均电流差。

测试结果

统计测试结果发下,本次测评的 8 款应用,硬解码版本平均电流均小于软解码的平均电流,其中直播类应用采用硬解码收益最明显。具体数据如下图所示:

image

为了更直观体现硬解码的优势,我们将节约的电量换算成可以观看视频的时长,可以看到每 10 个小时硬解码播放视频节约的电量最少可以多看 1 小时的视频,最多则接近 2 个小时。

image

通过本次测评,我们可以看出硬解码在功耗上有非常显著的优势。目前很多手机都具有独立的视频解码芯片,为了提升用户的体验,我们建议开发者积极适配硬解码。

如何适配硬解码

因为市场上机型繁多,开发者可以先判断硬件设备是否支持硬解码,然后根据芯片平台模糊匹配的方式进行硬解码的适配。

我们可以使用安卓原生的 Mediacodec 接口判断手机是否支持硬解码,可以参考 Android 官方的示例代码:

https://android.googlesource.com/platform/frameworks/av/+/android-8.0.0_r24/cmds/

如果硬件支持硬解码,开发者可以根据芯片平台进行模糊匹配。例如华为手机可以识别以下字段来适配新老平台:

ro.board.platform=kirin/hi3660/hi3650/hi6250


↙↙↙阅读原文可查看相关链接,并与作者交流