ZEGO 教程 | RTC + AI 视觉的最佳实践 (PC端)

以下文章来源于ZEGO即构开发者 ,作者Native SDK 开发
ZEGO 教程 | RTC + AI 视觉的最佳实践 (PC端)
文章图片

摘要:帮助开发者在音视频场景中快速获得 AI 视觉功能 —— 美颜、滤镜、背景抠图等。
? 文|即构 Native SDK 开发团队
上篇文章我们详细介绍了基于移动端实现音视频+AI视觉结合,快速获取智能图像渲染和算法能力,下面我们将以 WINDOWS,MACOS 端为切入点,带大家了解一下在PC端 Express SDK + Effects SDK 的整个实现过程。
AI视觉在音视频代码中的实现逻辑 1、初始化Effects SDK
初始化Effects SDK主要是完成对象的创建和资源的设置。
C++代码实现如下:

... // 设置资源 zego_effects_set_models(model_path_list, 2); zego_effects_set_resources(resouce_path_list, 4); // 创建 effects 实例 zego_effects_create(&m_handle,license); // 初始化effects 对象 zego_effects_init_env(handle,width,height);

2、初始化Express SDK
初始化Express SDK主要完成视频帧数据格式的设置,启动自定义前处理功能以及注册回调对象。这里需要注意的是,不同平台下所用的视频帧格式有所不同。
平台 视频帧数据格式
MACOS ZEGO_VIDEO_BUFFER_TYPE_CV_PIXEL_BUFFER
WINDOWS ZEGO_VIDEO_BUFFER_TYPE_RAW_DATA
【ZEGO 教程 | RTC + AI 视觉的最佳实践 (PC端)】C++(MACOS)代码实现如下:
// 创建 express 实例 engine = ZegoExpressSDK::createEngine(appID,appSign,true, ZEGO_SCENARIO_GENERAL,nullptr); // 选择CVPixelBuffer 类型视频帧数据 ZegoCustomVideoProcessConfig config; config.bufferType = ZEGO_VIDEO_BUFFER_TYPE_CV_PIXEL_BUFFER; // 开启自定义前处理 engine->enableCustomVideoProcessing(true,&config); // 设置视频前处理回调对象 engine->setCustomVideoProcessHandler(myHandler);

C++(WINDOWS)代码实现如下:
// 创建 express 实例 engine = ZegoExpressSDK::createEngine(appID,appSign,true, ZEGO_SCENARIO_GENERAL,nullptr); // 选择RAW_DATA 类型视频帧数据 ZegoCustomVideoProcessConfig config; config.bufferType = ZEGO_VIDEO_BUFFER_TYPE_RAW_DATA; // 开启自定义前处理 engine->enableCustomVideoProcessing(true,&config); // 设置视频前处理回调对象 engine->setCustomVideoProcessHandler(myHandler);

3、Effects SDK + Express SDK 的实现逻辑
Express SDK 提供的自定义视频前处理能与 Effects SDK 完美结合起来。
自定义视频前处理功能无需开发者管理设备输入源,开发者只需在 Express SDK 提供的采集回调函数中对原始数据进行操作,再把数据传回给 Express SDK 即可,而 Effects SDK 在这个过程中负责对原始数据的处理。
C++(MACOS)代码实现如下:
void MyHandler::onCapturedUnprocessedCVPixelBuffer(void * buffer, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel) { ... //把Express SDK采集的数据传给Effects SDK进行处理 zego_effects_process_image_buffer_rgb(m_handle,image.bits(), image.bytesPerLine() * image.height(),param); // 把Effects SDK处理后数据抛回给Express SDK engine->sendCustomVideoProcessedCVPixelBuffer(buffer,referenceTimeMillisecond,channel); ... }

C++(WINDOWS)代码实现如下:
void MyHandler::onCapturedUnprocessedRawData(const unsigned char** data, unsigned int* dataLength, ZegoVideoFrameParam param, unsigned long long referenceTimeMillisecond, ZegoPublishChannel channel) { ... //把Express SDK采集的数据传给Effects SDK进行处理 zego_effects_process_image_buffer_rgb(m_handle,image.bits(), image.bytesPerLine() * image.height(),frameParam); //把Effects SDK处理后数据抛回给Express SDK engine->sendCustomVideoProcessedRawData((const unsigned char**)data,dataLength,param,referenceTimeMillisecond); ... }

4、AI视觉效果调整
Effects_SDK还提供了美颜,美型,背景分割,人脸检测,挂件,滤镜等功能,广泛应用于娱乐直播,在线教育,拍照工具等多个场景,开发者可根据需要调用相应的接口。
C++代码实现如下:
// 开启美白功能 effects.enableWhiten(handle,true); // 设置美白强度,范围 [0, 100],默认为 50 ZegoEffectsWhitenParam param = new ZegoEffectsWhitenParam(); param.intensity = 100; effects.setWhitenParam(handle,¶m);

总结 以上就是关于在 PC 端通过使用 Express SDK 和 Effects SDK 搭建音视频+Al 的解读。
ZEGO Effects 作为一款 AI 视觉产品,提供了多项智能图像渲染和算法能力,包括智能美颜、人像检测、图像分割等,被广泛应用于娱乐直播、在线教育、拍照工具等多种场景。
这是 AI 能力与音视频的有机结合,我们也期待在将来可以实现更多音视频与 AI 的创新应用。
获取更多支持
  • 获取本文的Demo、开发文档、技术支持,访问即构文档中心
  • 近期有开发规划的开发者可上即构官网查看,恰逢即构七周年全线音视频产品1折的优惠,联系商务获取RTC产品优惠;

    推荐阅读