相芯美颜
更新时间: 2024/08/05 15:02:55
NERTC SDK 支持接入相芯等第三方专业美颜滤镜厂商,实现美颜、美妆、滤镜、贴纸等美颜特效。在娱乐社交、在线教育等场景中,您可以快速构建具备美颜特效能力的应用,让用户在进行视频通话或直播时,呈现更良好的肌肤状态和精神面貌。
相芯美颜(Faceunity Nama SDK,下文简称 Nama SDK)的详细功能介绍请参见人脸特效。
准备工作
- 下载相芯美颜 SDK。
- 获取相芯美颜 SDK 的证书,具体请联系网易云信商务经理。
- 获取相芯美颜资源文件,具体请联系网易云信商务经理。
功能原理
-
NERTC SDK 提供了
onCaptureVideoFrame
采集数据回调的接口,将采集到的视频图像数据通过该接口回调出来。 -
Nama SDK 通过回调获取视频图像数据,进行美颜处理后,通过参数返回给 NERTC SDK。
-
NERTC SDK 将美颜后的数据进行编码和传输。
注意事项
-
该设置仅在加入房间之前设置才有效。
-
onCaptureVideoFrame
回调必须同步返回,且保证 data 的地址值不被改变,分辨率不改变。
示例项目源码
网易云信提供第三方美颜的示例项目源码,您可以参考该源码实现第三方美颜。
实现方法
步骤1 集成相芯美颜
-
将证书文件
authpack.h
放到本地项目的Beauty
目录下。 -
将所需的美颜模型和道具放到本地项目的
Resource
目录下。 -
集成相芯美颜 SDK,具体步骤请参见Faceunity Nama 相关文档。
步骤2 初始化相芯美颜 SDK
具体步骤请参见Faceunity Nama 相关文档。
步骤3 视频图像处理
- 调用
setParameters
接口,将kNERtcKeyEnableVideoCaptureObserver
的值设置为YES
,开启摄像头采集数据的回调。
- V5.3.0 及之后版本需要执行该步骤。
- V4.6.X 版本请忽略该步骤。
-
在成功加入房间后,调用
enableLocalVideo
方法开启本地视频采集,并设置NERtcVideoStreamType
为kNERTCVideoStreamMain
,否则美颜效果不会生效。 -
在代理方法
onCaptureVideoFrame
中,将原始视频图像数据通过回调发给相芯美颜的接口,做相应的美颜处理。相关参数的含义如下:
参数名称 参数含义 data 采集视频数据 type 视频类型 width 视频宽度。 height 视频高度 count 视频 plane count offset 视频 offset stride 视频 stride rotation 视频旋转角度 -
调用相芯美颜的接口,从 NERTC 回调中获取原始视频图像数据,对视频图像数据进行美颜处理,美颜后的视频数据再通过参数返回给 NERTC 代理。
示例代码
c++std::string params("{\"enable_video_capture_observer\":1}");
rtcEngine->setParameters(params.c_str());
rtcEngine->enableLocalVideo(nertc::kNERTCVideoStreamMain, true);
void onCaptureVideoFrame(void *data,
NERtcVideoType type,
uint32_t width,
uint32_t height,
uint32_t count,
uint32_t offset[kNERtcMaxPlaneCount],
uint32_t stride[kNERtcMaxPlaneCount],
NERtcVideoRotation rotation)
{
//请自行实现美颜相关逻辑
}
步骤4 设置美颜效果
美颜、美妆、滤镜、贴纸效果的具体参数设置,请参见 Faceunity Nama 相关文档。
API 参考
方法 | 功能描述 |
---|---|
enableLocalVideo |
开启本地视频采集。 |
setParameters |
设置摄像头采集数据的回调。 |
onCaptureVideoFrame |
视频帧数据回调。 |