DingRTC SDK为您提供基础美颜功能和第三方美颜接入功能的接口和回调。通过阅读本文,您可以了解使用基础美颜以及第三方美颜的相关流程。
基础美颜
功能简介
DingRTC SDK 在 3.2 及以上版本中提供了基础美颜功能,包含了美白和磨皮两种功能。您可以在直播、视频通话、视频会议等场景中,通过美颜功能提高使用体验。
实现方法DingRTC SDK 通过 EnableBeautyFace 方法设置是否启用基础美颜。
/** * 设置美颜 * @param enable 美颜开关 * @param options 美颜参数控制 */ int EnableBeautyFace(bool enable, ding::rtc::RtcEngineBeautyFaceOptions options);
名称
类型
描述
enable
bool
YES表示启用,NO表示关闭,默认为NO。
options
RtcEngineBeautyFaceOptions
基础美颜参数。
第三方美颜
功能简介
功能简介DingRTC SDK 在 3.2 及以上版本中提供了支持第三方美颜功能,通常第三方美颜SDK接受I420数据类型的数据回调处理。
接入流程
以下第三方美颜功能以接入I420的数据为例:
初始化 RtcEngine对象。
实现一个美颜处理的类,假设为BeautyFace, 里面继承 ding::rtc::RtcEngineVideoFrameObserver,并根据具体第三方美颜库实现相关接口函数,onCaptureVideoFrame方法中对frame的数据进行处理,实现美颜功能,GetVideoFormatPreference函数选择视频采集格式偏好,这里可以选择I420
EnableVideoFrameObserver选择回调的时机,RegisterVideoFrameObserver注册视频流观察者回调。
在每一帧的视频处理中,会回调到onCaptureVideoFrame进行视频流的处理,在这里利用第三方美颜库对视频帧进行处理,如果处理成功,会覆写原来的buffer内容,如果处理失败,buffer还是原来的内容。
做第三方算法BeautyFace的销毁工作。
第三方美颜接口调用
DingRTC SDK 在接入第三方美颜的时候,需要订阅采集之后的前处理数据,所以在 startPreview 之后需要调用 setVideoFrameDelegate 和enableVideoFrameObserver 接口获取采集前处理数据并处理。
// @param enabled 是否允许数据回调。 // @param position 视频数据类型 int EnableVideoFrameObserver(bool enabled, unsigned int position);
// @param observer 视频观察类对象指针。 int RegisterVideoFrameObserver(ding::rtc::RtcEngineVideoFrameObserver* observer);
订阅成功后,将会回调 RtcEngineVideoFrameObserver 的 OnCaptureVideoFrame接口 。
// 获得回调视频流数据并处理 // @param frame 视频帧数据 bool OnCaptureVideoFrame(ding::rtc::RtcEngineVideoFrame& frame);