低端机性能优化实践教程

美颜特效涉及 AI 检测、图像处理、2D 和 3D 图形渲染、动画特效等操作,会占用一定的 CPU 和 GPU 资源。如果在直播、拍摄场景时,系统本身负载已经很高,再叠加上美颜特效,在性能较差的设备上可能出现卡顿、掉帧现象。因此我们整理了低端机性能优化实践教程,尽可能减少美颜特效 SDK 在低端机上的性能开销,确保用户有良好的使用体验。

低端机的定义

SDK 提供了getDeviceLevel接口获取设备等级(接口说明见:AndroidiOS),等级取值为1 ~ 5, 1为最低端机,5为最高端机。我们建议将等级小于等于3的设备视为低端机。
您也可以根据自身产品数据以及自身App的性能消耗情况,自行判断当前设备的等级。
通过判断不同的设备等级,结合以下措施减少低端机的性能消耗:

措施一:使用 SDK 的 Normal 模式

从 SDK V3.9.0 开始,创建 SDK 时必须指定 EffectMode,它有两个取值: EffectMode_Normal 和 EffectMode_Pro。
EffectMode_Normal 等价于旧版本 SDK 的“高性能模式”。
EffectMode_Pro 等价于旧版本 SDK 的默认模式。
建议在低端机上使用 EffectMode_Normal。更多详细说明见:EffectMode(高性能模式)使用指引

措施二:关闭 SDK 的某些高级能力

通过 setFeatureEnableDisable 接口关闭某些高级能力:
FeatureName.WHITEN_ONLY_SKIN_AREA
美白仅对皮肤生效。默认未开启。开启此功能会触发开启“皮肤分割能力”。低端机上不建议开启。
FeatureName.SEGMENTATION_SKIN
皮肤分割能力,开启后可使磨皮和美白区域更精准,减少对周围环境的影响。SDK在设备等级大于等于4时会默认开启。低端机上不建议开启。
FeatureName.SEGMENTATION_FACE_BLOCK
人脸遮挡检测能力,开启后可避免妆容画到遮挡物上。SDK在设备等级大于等于5时会默认开启。低端机上不建议开启。
FeatureName.SMART_BEAUTY
智能美颜(为男性、宝宝减淡美颜美妆效果)。默认未开启。低端机上不建议开启。
此外,“美黑”能力也会触发开启 FeatureName.SEGMENTATION_SKIN 能力。低端机上不建议使用美黑能力。

措施三:使用轻美妆代替风格整妆

轻美妆是腾讯特效 SDK 在V3.9.0版本推出的新功能,与之前的“风格整妆特效”相比,轻美妆性能更好,且能跟其他特效很好地叠加。
更多说明见:轻美妆使用说明

措施四:使用性能更好的特效素材

我们提供丰富的特效供客户选择。有些特效比较简单,在低端机上能流畅展示。但有些特效需要消耗较多的 CPU 和 GPU 资源,在低端机上不建议使用,例如 3D 特效,GAN 特效(例如变娃娃脸、变漫画脸),背景分割特效等等。
我们提供了低端机专区,供客户自行选择,详情见美颜特效 Demo。

其他优化措施

除了以上美颜特效相关的优化措施,也可以关注外部影响性能/流畅度的因素:

1、选择合适的分辨率

分辨率越高,SDK 需要处理的像素就越多。在低端机上直播或拍摄时,建议不要超过540P分辨率。

2、设置合适的日志开关

SDK 提供了 setXmagicLogLevel 接口(AndroidiOS)用于设置日志等级,默认等级为 WARN 或 INFO。您可以将它进一步提升到 ERROR 级别,以减少日志输出。切记不能设置为 DEBUG 级别,否则大量的日志会影响性能。

3、检查推流帧率

检查是否设置的比较低,建议调整到24fps以上。当您的应用在没有设置美颜的时候画面也不太流畅时,需要检查一下采集模块的相机帧率,可以适当提高相机帧率从而达到画面流畅的效果。如果您使用的是 TRTC,那么可以参见 此文档 调整帧率。

4、检查美颜特效之外的模块的性能

如果在使用美颜特效之前,您的应用就已经很卡了,或者 CPU 占用率已经很高,说明 APP 性能已经出现了问题,这种情况下再使用美颜特效,只能让情况变得更差。所以建议先优化美颜特效之外的模块的性能。