添加 SDK 依赖
方法 A:CocoaPods(推荐)
Xcode 15+ 编译错误使用 Xcode 15 或更高版本时,编译可能出现 Sandbox: rsync.samba deny(1)。这是 User Script Sandboxing 导致的。解决方法:
- 在 Xcode 中选择 Project。
- 打开 Build Settings。
- 搜索
ENABLE_USER_SCRIPT_SANDBOXING。
- 将值从
Yes 改为 No。
方法 B:手动集成 Framework
前往 下载 获取 SDK,将 Facebetter.framework 拷入工程,并按 嵌入动态库 将 Embed 设为 Embed & Sign。
使用在线 appId / appKey 的沙盒 Mac 应用必须允许出站网络:
相机(可选):在 Info.plist 中添加 NSCameraUsageDescription。
导入头文件
AppKit 类型(NSImage)需要 #import <AppKit/AppKit.h>(macOS 上通常已由引擎头文件或前缀头引入)。
日志配置
默认关闭日志。必须在创建引擎之前调用 setLogConfig:。
创建引擎
绑定 macOS Bundle ID,然后传入 licenseToken 或 appId + appKey。见 获取 AppID 和 AppKey 与 授权与许可。
优先级: licenseToken 非空(许可证 token、{token} JSON 或 .lic 内容)时本地校验;否则用 appId + appKey 请求 /facebetter/v2/auth。
createEngineWithConfig: 返回的是实例,不是单例。没有 Bundle ID 的命令行工具请在控制台绑定进程名。
强度一般为 [0.0, 1.0]。风格枚举见 参数枚举。
setReshape:intensity: 范围为 [-1.0, 1.0]。0 关闭。参数:FBReshape_FaceThin … FBReshape_BrowThickness(0–25)。含义见 参数枚举。
setBodyReshape:intensity: 范围为 [0.0, 1.0]。0 关闭。先用 addResourcePack: 登记 resource_body.fbd。参数:FBBodyReshape_BodySlim … FBBodyReshape_TorsoLong(0–8)。见 参数枚举 与 可选资源包。
强度、形状、色号分开设置。完整预设见 参数枚举。
虚拟背景
色键只替换遮罩。填充仍是模糊或替换图。
滤镜与贴纸
传入 .fbd 文件路径或内存字节。没有按 ID 注册的接口。
3D 贴纸需要可选包 resource_3d.fbd(不在 framework 内)。见 可选资源包:
回调与统计
处理图像
FBImageFrame 支持 I420、NV12、NV21、RGB、RGBA、BGR、BGRA、文件、纹理和 NSImage。
先设 type,再调用 processImage:(没有额外的模式参数)。输出格式与输入一致。
FBFrameTypeVideo 用于实时流,FBFrameTypeImage 用于静图和 NSImage。
YUV 平面:dataY、dataU、dataV、dataUV 及对应 stride。
外部纹理
在 OpenGL 线程创建引擎,并设置 externalContext = YES。输入输出纹理必须共享该上下文。macOS 为桌面 OpenGL 3.2 Core(NSOpenGLContext / CGL),不是 OpenGL ES。
接入 TRTC / 声网 / LiveKit:见 第三方对接。
生命周期
用 NSViewController 的 strong 引用持有引擎。视图消失或窗口最小化时停止采集。会话结束时将引擎置 nil。
相关文档