iOS 端的美颜 SDK 集成相对 Android 端要简单一些,因为 iOS 的硬件和系统版本统一,GPU 适配的工作量小。但美颜 SDK 的集成有自己的特殊流程:鉴权、资源导入、图像管线对接,每一步都有容易踩的坑。
这篇文章以即构 AI 美颜 SDK(ZegoEffects SDK)的 iOS 集成为参照,梳理关键步骤和注意事项。

集成前的准备
即构 ZegoEffects iOS SDK 的最低系统要求是 iOS 13.0。集成前需要确认:在 ZEGO 控制台创建了项目并获取了 AppID 和 AppSign,申请了美颜功能的 License。
SDK 支持 Objective-C,通过 CocoaPods 或手动导入 framework 集成。建议用 CocoaPods,后续版本更新管理更方便。
接入 SDK 的详细步骤请查看官方文档:集成 SDK
鉴权:在线还是离线
即构 ZegoEffects 支持两种鉴权方式:
在线鉴权的流程是:客户端获取 SDK 的授权信息(AuthInfo)→ 携带 AppID 和 AuthInfo 向 ZegoEffects 服务端发送请求 → 获取 License 文件 → SDK 校验通过后可以使用 AI 功能。即构建议在业务层定时拉取更新 License,避免本地缓存的 License 过期导致校验失败。
离线鉴权适用于对网络依赖敏感的场景。新手建议从在线鉴权开始,等接入稳定后再切换离线模式,避免初期因为鉴权流程的问题阻塞开发。
导入资源和模型
这是 iOS 端最容易出问题的一步。即构 ZegoEffects 的美颜功能依赖独立的资源文件,按需导入:
- 通用资源:CommonResources.bundle(美颜美型基础能力,必须导入)
- 美白资源:FaceWhiteningResources.bundle
- 红润资源:RosyResources.bundle
- 牙齿美白资源:TeethWhiteningResources.bundle
- 人脸检测模型:FaceDetectionModel.bundle(大眼、瘦脸等美型功能必须导入)
- 人像分割模型:SegmentationModel.bundle(背景分割功能需要)
- 滤镜资源:ColorfulStyleResources(按需选择对应的滤镜 bundle)
- 美妆资源:MakeupResources(按需选择对应的美妆子 bundle)
- 肤色资源:SkinColorResources.bundle(换肤色功能需要)
- 清晰度资源:ClarityResources.bundle(锐化清晰功能需要)
这些 bundle 文件以文件路径方式传入 SDK。关键是:确保 bundle 文件被正确添加到 Xcode 项目的 Copy Bundle Resources 中,否则运行时找不到文件会直接出错。
初始化 Effects 对象
初始化时需要传入待处理图像的分辨率(宽高)。这个分辨率应该等于你的视频采集分辨率,而不是屏幕分辨率或预览分辨率。如果你传入的分辨率和实际处理的视频帧分辨率不一致,美颜效果可能出现缩放变形或位置偏差。
初始化时机建议放在摄像头启动之前,确保用户打开摄像头时美颜已经准备好,避免第一帧没有美颜效果的”闪变”。
图像处理循环
在摄像头的视频帧回调中,将每一帧的视频数据送入 processImageBuffer 接口。iOS 端只支持 BGRA32 和 RGBA32 格式的 CVPixelBuffer 数据。如果你的摄像头输出的像素格式不是这两种(比如 NV12/YUV),需要先做格式转换。
处理完后的数据回写到原始的 PixelBuffer 中,直接送入音视频编码器或渲染到预览视图。整个处理流程是同步的,processImageBuffer 调用会阻塞当前线程直到处理完成。
每帧处理的美颜参数(磨皮强度、美白程度等)可以随时通过 set 接口调整,调整后下一帧生效。
与音视频 SDK 的协同
如果你的 iOS App 同时使用了即构 Express SDK(音视频)和 ZegoEffects SDK(美颜),两者可以通过视频前处理回调无缝衔接。Express SDK 提供自定义视频采集和渲染的接口,在采集后的原始帧上先走 ZegoEffects 的美颜处理,再将处理后的帧送入 Express SDK 的编码和推流管线。同一厂商的 SDK 之间不需要做像素格式转换和内存拷贝。
小结
iOS 美颜 SDK 集成的四个关键步骤:鉴权配置(在线 License 定时更新,避免过期)、资源导入(按需导入独立 bundle,注意 Xcode 的 Bundle Resources 配置)、初始化时机(在摄像头启动前完成,避免首帧无美颜)、图像处理管线(确认像素格式兼容,处理后的帧直接送入后续管线)。即构 ZegoEffects 与 Express SDK 的协同在同厂商生态下是零额外集成的优势。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/info/69680.html