关于音视频:RTCAI视觉如何快速开发一个实时美颜应用移动端

37次阅读

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

Z 世代作为社会新的生产主力,谋求共性、酷爱离奇事物,青眼与酷炫离奇的玩法、紧跟娱乐潮流。AI+ 音视频的联合,作为在音频和视频之外第三个场景玩法翻新的支撑点,刚好投合了潮流属性。

以后市场中难以找到 AI 视觉 & 音视频双能力稳固牢靠的供应商,AI 视觉与音视频各自的技术门槛令泛滥企业的技术综合能力,用户不得不对接更多的供应商,而这也让更贴合用户需要的一体化服务迟迟没有到来。

接入速度慢?

保护老本高?

响应不及时?

ZEGO 即构科技在往年 6 月推出了 AI 视觉产品“ZEGO Effects”,用稳固牢靠的 AI+ 音视频能力提供更便捷高效的一站式服务,解决行业痛点,基于根底的音视频服务,满足用户在音视频场景中对于美颜、滤镜、AI 特效等 AI 视觉性能的需要。

本篇文章咱们将介绍 如何应用 Zego 即构科技的 Express SDK 和 Effects SDK 产品,疾速实现在挪动端的音视频 + AI 场景的搭建

概念介绍

在正式开始介绍音视频 +AI 场景搭建实操之前,先简略介绍下 Express SDK 和 Effects SDK 的根底概念。

1、Express SDK

Express SDK 是指 ZEGO 实时音视频 SDK,可能为开发者提供便捷接入、高清晦涩、多平台互通、低提早、高并发的音视频服务,能够实现一对多,多对多的实时音视频互动,秀场直播,视频会议等场景。

2、Effects SDK

Effects SDK 是指 ZEGO AI 视觉 SDK,提供多项智能图像渲染和算法能力,包含智能美颜、AR 特效、图像宰割等,可广泛应用于娱乐直播、在线教育、拍照工具等多种场景。

充沛满足泛娱乐场景下各类玩法,让企业疾速取得 AI+ 音视频创新能力:

  • 美颜 —— 智能美颜、基于精准的人脸关键点监测和 3D 模型的高级美颜、自然美妆;
  • AR 特效 —— ZEGO Effects 提供多种 AR 特效,反对 2D/3D 贴纸,脸部贴纸,对于简单背景,光照变动及人物夸大姿势等有极强的鲁棒性;
  • 智能宰割 —— 通过精准宰割扭转画面背景,用户可需要实现视频、直播场景自在变换,再辅以多样背景素材,能够实现更多乏味玩法;
  • 百变滤镜 —— 提供多种精美滤镜,包含清爽、日系、柔美、森林、光效等不同主题,能够轻松变换图像格调。

AI 视觉在音视频代码中的实现逻辑

上面咱们将以 iOS,Android 端为切入点,带大家理解一下 Express SDK + Effects SDK 整个实现过程。

1、初始化 Effects SDK

初始化 Effects SDK 次要是实现对象的创立和资源的设置。

objective-c 代码实现如下:

...
// 设置资源
[ZegoEffects setModels:@[faceDetectionModelPath, segmentationModelPath]];
[ZegoEffects setResources:@[pendantBundlePath,whitenBundlePath]];
// 创立 effects 实例
ZegoEffects *effects = [ZegoEffects create:@license];
// 保留 effects 实例
self.effects = effects;
// 初始化 effects 对象
[self.effects initEnv:CGSizeMake(width, height)];

java 代码实现如下:

...
// 设置资源
ZegoEffects.setModels(aiModeInfos);
ZegoEffects.setResources(aiResources);
// 创立 effects 实例
ZegoEffects effects = ZegoEffects.create(license, getApplication());
// 初始化 effects 对象
effects.initEnv(width, height);

2、初始化 Express SDK

初始化 Express SDK 次要实现视频帧数据格式的设置,启动自定义前解决性能以及注册回调对象。这里须要留神的是,不同平台下所用的视频帧格局有所不同。

平台 视频帧数据格式
iOS ZegoVideoBufferTypeCVPixelBuffer
Android GL_TEXTURE_2D

objective-c 代码实现如下:

// 创立 express 实例
[ZegoExpressEngine createEngineWithAppID:appID appSign:appSign isTestEnv:YES scenario:ZegoScenarioGeneral eventHandler:self];
// 抉择 CVPixelBuffer 类型视频帧数据
ZegoCustomVideoProcessConfig *processConfig = [[ZegoCustomVideoProcessConfig alloc] init];
processConfig.bufferType = ZegoVideoBufferTypeCVPixelBuffer;
// 开启自定义前解决
[[ZegoExpressEngine sharedEngine] enableCustomVideoProcessing:YES config:processConfig channel:ZegoPublishChannelMain];
// 设置视频前解决回调对象
[[ZegoExpressEngine sharedEngine] setCustomVideoProcessHandler:self];

java 代码实现如下:

// 创立 express 实例
[ZegoExpressEngine createEngineWithAppID:appID appSign:appSign isTestEnv:YES scenario:ZegoScenarioGeneral eventHandler:self];
// 抉择 CVPixelBuffer 类型视频帧数据
ZegoCustomVideoProcessConfig *processConfig = [[ZegoCustomVideoProcessConfig alloc] init];
processConfig.bufferType = ZegoVideoBufferTypeCVPixelBuffer;
// 开启自定义前解决
[[ZegoExpressEngine sharedEngine] enableCustomVideoProcessing:YES config:processConfig channel:ZegoPublishChannelMain];
// 设置视频前解决回调对象
[[ZegoExpressEngine sharedEngine] setCustomVideoProcessHandler:self];

3、Express SDK + Effects SDK 的实现逻辑

Express SDK 提供的自定义视频前解决能与 Effects SDK 完满联合起来。自定义视频前解决性能无需开发者治理设施输出源,开发者只需在 Express SDK 提供的采集回调函数中对原始数据进行操作,再把数据传回给 Express SDK 即可。而 Effects SDK 在这个过程中负责对原始数据的解决。

objective-c 代码实现如下:

- (void)onCapturedUnprocessedCVPixelBuffer:(CVPixelBufferRef)buffer timestamp:(CMTime)timestamp channel:(ZegoPublishChannel)channel {
    ...
    // 把 Express SDK 采集的数据传给 Effects SDK 进行解决 
    [self.effects processImageBuffer:buffer];
    // 把 Effects SDK 解决后数据抛回给 Express SDK
    [[ZegoExpressEngine sharedEngine] sendCustomVideoProcessedCVPixelBuffer:output timestamp:timestamp channel:channel];
    ...
} 

java 代码实现如下:

public void onCapturedUnprocessedTextureData(int textureID, int width, int height, long referenceTimeMillisecond, ZegoPublishChannel channel) {ZegoEffectsVideoFrameParam param = new ZegoEffectsVideoFrameParam();
    param.format = ZegoEffectsVideoFrameFormat.BGRA32;
    param.width = width;
    param.height = height;
    // 把 Express SDK 采集的数据传给 Effects SDK 进行解决 
    int processedTextureID = effects.processTexture(textureID, param);   
    // 把 Effects SDK 解决后数据抛回给 Express SDK
    express.sendCustomVideoProcessedTextureData(processedTextureID, width, height, referenceTimeMillisecond);
}

4、AI 视觉效果调整

Effects_SDK 还提供了美颜,美型,背景宰割,人脸检测,挂件,滤镜等性能,广泛应用于娱乐直播,在线教育,拍照工具等多个场景,开发者可依据须要调用相应的接口。

objective-c 代码实现如下:

// 开启美白性能
[self.effects enableWhiten:YES];
// 设置美白强度,范畴 [0, 100],默认为 50
ZegoEffectsWhitenParam *param = [[ZegoEffectsWhitenParam alloc] init];
param.intensity = 100;
[self.effects setWhitenParam:param];

java 代码实现如下:

// 开启美白性能
effects.enableWhiten(true);
// 设置美白强度,范畴 [0, 100],默认为 50
ZegoEffectsWhitenParam param = new ZegoEffectsWhitenParam();
param.intensity = 100;
effects.setWhitenParam(param);

总结

以上就是对于在挪动端通过应用 Express SDK 和 Effects SDK 搭建音视频 +Al 的解读。对于 PC 端的代码实现请见本次公布的次条文章。

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

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

获取更多反对

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

正文完
 0