RTC SDK 为您提供基础美颜功能和第三方美颜接入功能的接口和回调。通过阅读本文,您可以了解使用基础美颜及第三方美颜的相关流程。
基础美颜
- 功能简介
阿里云 RTC SDK 在 1.17.9 及以上版本中提供了基础美颜功能,包含了美白和磨皮两种功能。您可以在直播、视频通话、视频会议等场景中,通过美颜功能提高使用体验。
- 实现方法阿里云 RTC SDK 通过 setBeautyEffect 方法设置是否启用基础美颜。
/** * 设置美颜 * @param enable 美颜开关 * @param config 美颜参数控制 */ - (int)setBeautyEffect:(BOOL)enable config:(AliRtcBeautyConfig *_Nullable)config;
名称 类型 描述 enable BOOL YES表示启用,NO表示关闭,默认为NO。 config AliRtcBeautyConfig *_Nullable 基础美颜参数。
第三方美颜
- 功能简介
功能简介阿里云 RTC SDK 在 1.14.0 及以上版本中提供了支持第三方美颜功能,通常第三方美颜 SDK 接受以下两种类型的数据回调处理:
- YUV 裸数据用于做人脸识别。
- openGL 纹理数据用于最终做美颜效果的处理。
- 接入流程为了避免完成集成 SDK 后,自己能看到美颜效果,对方却看不到美颜效果。在接入前,我们需要在 SDK 的实例 extra 字段中添加开关,设置 user_specified_video_preprocess 为 TRUE。
- SDK的instanceSDK 的 instance 构造函数里面,扩展字段添加 [extrasDic setValue:@"TRUE" forKey:@"user_specified_video_preprocess"],并且将 extraDic 经过序列化之后传入到 AliRtcEngine sharedInstance 的第二个字段 extra 中。
- 在调用本地预览开启接口 startPreview 之后,调用 registerLocalVideoTexture 订阅 openGL 纹理数据。
- 如果需要对接 YUV 数据人脸识别功能,在调用本地预览开启接口 startPreview 之后,再调用 registerVideoSampleObserver 订阅采集前处理 YUV 数据(通常是对采集图像做人脸识别)。
- 如果需要对接 YUV 数据人脸识别功能,在 onCaptureVideoSample 回调中做第三方算法的人脸识别操作。
- 在 onTextureCreate 中做第三方算法的初始化工作,其中
context
为 openGL 的上下文。 - 在 onTextureUpdate 做第三方算法的每一帧美颜处理工作,如果不需要美颜或者第三方算法处理不成功,请将输入的 textureId 返回给该函数。如果美颜处理成功,则返回第三方算法处理过的 textureId。
- 在 onTextureDestory 做第三方算法的销毁工作。
第三方美颜接口调用
RTC SDK YUV 裸数据人脸识别接入接口,人脸识别接入时,需要订阅采集之后的前处理 buffer 数据,所以在 startPreview 之后需要调用 registerVideoSampleObserver 接口获取采集前处理数据并处理。
///@brief 订阅采集视频前处理裸数据 - (void)registerVideoSampleObserver;
说明 订阅成功后,通过 onCaptureVideoSample 回调本地采集数据。///@brief RTC采集视频数据前处理回调 - (BOOL)onCaptureVideoSample:(AliRtcVideoSource)videoSource videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;
参数 类型 描述 videoSource AliRtcVideoSource 视频裸数据源类型。 videoSample AliRtcVideoDataSample *_Nonnull 视频裸数据。 RTC SDK openGL 纹理接口美颜接入时,需要订阅视频的纹理数据,所以在 startPreview 之后需要调用接口获取 openGL 的纹理数据和 openGL 的线程环境。需要调用的接口如下所示:
- registerLocalVideoTexture 接口
///@brief 订阅openGL的纹理数据 - (void)registerLocalVideoTexture;
- onTextureCreate 回调(相芯SDK不处理此回调)
///@brief 表示本地视频流纹理创建 ///@param[in] context openGL的上下文EGLContext指针 - (void)onTextureCreate:(void *_Nullable)context;
- onTextureUpdate 回调
///@brief 表示每一帧视频流处理 ///@param[in] width 视频流纹理的宽度 ///@param[in] height 视频流纹理的高度 ///@param[in] videoSample 视频数据 - (int)onTextureUpdate:(int)textureId width:(int)width height:(int)height videoSample:(AliRtcVideoDataSample *_Nonnull)videoSample;
- onTextureDestory 回调(相芯 SDK 不处理此回调)
///@brief 表示本地视频流纹理销毁 - (void)onTextureDestory;
外置美颜SDK相关接口调用。
外置美颜 SDK 根据各自的设计,有对应的 SDK 自己的提供的接口,需要App对接时候正确使用,主要有如下:- 初始化、销毁。
- 资源加载和释放(通常是人脸识别使用的资源文件)。
- 美颜控制接口(美颜等级、强度的调节接口,美颜开关接口)。
- 对接 RTC SDK回调的接口。