关于音视频:ZEGO-教程-RTC-AI-视觉的最佳实践-PC端

36次阅读

共计 2971 个字符,预计需要花费 8 分钟才能阅读完成。

以下文章来源于 ZEGO 即构开发者,作者 Native SDK 开发

摘要 :帮忙开发者在音视频场景中疾速取得 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

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,&param);

总结

以上就是对于在 PC 端通过应用 Express SDK 和 Effects SDK 搭建音视频 +Al 的解读。

ZEGO Effects 作为一款 AI 视觉产品,提供了多项智能图像渲染和算法能力,包含智能美颜、人像检测、图像宰割等,被广泛应用于娱乐直播、在线教育、拍照工具等多种场景。

这是 AI 能力与音视频的有机联合,咱们也期待在未来能够实现更多音视频与 AI 的翻新利用。

获取更多反对

  • 获取本文的 Demo、开发文档、技术支持,拜访即构文档核心
  • 近期有开发布局的开发者可上即构官网查看,恰逢即构七周年全线音视频产品 1 折的优惠,分割商务获取 RTC 产品优惠;

正文完
 0