添加 SDK 依赖
方法 A:CocoaPods 集成(推荐)
在项目的 Podfile 中添加 Facebetter 依赖:
执行安装命令:
Xcode 15+ 编译错误处理如果你使用的是 Xcode 15 或更高版本,可能会在编译时遇到 Sandbox: rsync.samba deny(1) 错误。这是由于 Xcode 默认开启了 User Script Sandboxing 导致的。解决方法:
- 在 Xcode 中选择您的 Project。
- 进入 Build Settings 选项卡。
- 搜索
ENABLE_USER_SCRIPT_SANDBOXING。
- 将该选项的值从
Yes 修改为 No。
方法 B:手动集成 Framework
前往 下载 页面,获取最新版的 SDK,然后解压。
将 SDK 包内 Facebetter.framework 库,拷贝到你的项目路径下。
打开 Xcode,参考这里添加 Facebetter.framework 动态库,确保添加的动态库 Embed 属性设置为 Embed & Sign。
权限配置
确保开放联网权限,用于校验 appkey
权限说明:
- 网络权限:必需。SDK 需要联网验证
appId 和 appKey,确保应用正常运行。
导入头文件
日志配置
默认日志是关闭的,可以按需开启,支持控制台日志和文件日志开关。
开启日志要放到美颜引擎创建之前,否则可能看不到初始化日志。
创建配置引擎
按照 此页面 指引,获取 appid 和 appkey
验证方式优先级:
- 如果提供了
licenseJson,使用授权数据验证(支持在线响应和离线授权)
- 否则使用
appId 和 appKey 进行自动联网验证
错误处理
创建引擎后建议检查是否成功:
使用滤镜和贴纸
滤镜和贴纸需要先注册资源文件(.fbd),然后再通过 ID 进行设置。
使用滤镜
使用贴纸
调节美颜参数
所有美颜参数值范围为 [0.0, 1.0],设置为 0 即禁用效果。
设置美肤参数
通过 setBasicParam 接口,设置美肤参数,参数范围 [0.0, 1.0];
支持的美肤参数:
设置美颜仅作用于皮肤区域
通过 setSkinOnlyBeauty: 接口,设置美颜是否仅作用于皮肤区域。当启用时,美颜效果(磨皮、美白等)仅会应用于检测到的皮肤区域,非皮肤区域保持不变。
启用皮肤区域美颜后,即使美颜参数值较高,非皮肤区域(如背景、衣物等)也不会受到影响。
设置美型参数
通过 setReshapeParam 接口,设置美型参数,参数范围 [0.0, 1.0];
支持从美型参数:
设置美妆参数
支持的美妆参数:
设置虚拟背景
通过 setVirtualBackgroundType:intensity: 接口设置虚拟背景参数即可启用效果:
通过 setVirtualBackground 接口设置虚拟背景:
使用滤镜和贴纸
滤镜功能
滤镜通过 setFilter: 接口设置,需要先通过 registerFilter:fbdFilePath: 注册滤镜资源文件(.fbd)。
贴纸功能
贴纸通过 setSticker: 接口设置,同样需要先注册。
设置引擎回调
监听License验证和引擎初始化状态:
事件码:
FBEngineEventCodeLicenseValidationSuccess (0):License验证成功
FBEngineEventCodeLicenseValidationFailed (1):License验证失败
FBEngineEventCodeInitializationComplete (100):引擎初始化完成
FBEngineEventCodeInitializationFailed (101):引擎初始化失败
处理图像
创建图像
图像数据通过 FBImageFrame 封装,支持格式: YUVI420, NV12, NV21, RGB, RGBA, BGR, BGRA
通过 rgba 创建 FBImageFrame
通过图片创建 FBImageFrame
旋转图像
FBImageFrame 内置图像旋转方法, 可根据需要使用
旋转角度
处理图像
processMode 包括 Video 和 Image 两种,Video 适合直播,视频等场景使用,效率更高,Image 模式适合图片处理场景
引擎会自动保持输入输出格式一致。输入为 RGBA 格式,输出即为 RGBA 格式;输入为 I420 格式,输出即为 I420 格式。
获取处理后图像数据
获取 RGBA 格式数据:
获取 I420 格式数据:
格式转换:
如果需要将 FBImageFrame 转换为其他格式,可以使用 convert: 方法:
FBImageFrame 支持转换为以下格式: I420, NV12, NV21, RGB, RGBA, BGR, BGRA。
生命周期管理
FBBeautyEffectEngine 是单例,App 结束时自动释放,无需手动管理。
释放资源
在 ViewController 销毁时,务必释放引擎资源:
内存管理
- 及时释放
FBImageFrame 对象(ARC 会自动管理)
- 避免在循环中重复创建大量图像对象
- 建议复用
FBImageFrame 对象
相关文档