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 に設定します。
カメラ撮影を使う場合のみ、Info.plist に追加します。
ヘッダーのインポート
ログ設定
ログはデフォルトでオフです。エンジン作成の前に setLogConfig: を呼び出す必要があります。
エンジンの作成
iOS Bundle ID をバインドし、licenseToken または appId + appKey を渡します。AppID と AppKey の取得 と 認証とライセンス を参照してください。
優先順位: licenseToken が空でない(ライセンストークン、{token} JSON、または .lic の内容)場合はローカル検証。それ以外は appId + appKey で /facebetter/v2/auth を呼び出します。
createEngineWithConfig: が返すのはインスタンスであり、シングルトンではありません。
強度は通常 [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)。パラメータ列挙 と オプションリソースパック。
メイク
強度、形状、色を分けて設定します。完全なプリセット: パラメータ列挙。
バーチャル背景
デフォルトのマスクはポートレートセグメンテーションです。ぼかし強度 [0.0, 1.0]、0 でぼかしをクリアします。画像パスは空でない png/jpg である必要があります。
クロマキー
クロマキーはマスクだけを置き換えます。塗りつぶしはぼかしまたは置換画像のままです。
フィルターとステッカー
.fbd ファイルパスまたはメモリバイトを渡します。
3D ステッカーにはオプションパック resource_3d.fbd が必要です(framework には含まれません)。オプションリソースパック を参照してください。
コールバックと統計
画像の処理
FBImageFrame は I420、NV12、NV21、RGB、RGBA、BGR、BGRA、ファイル、テクスチャ、UIImage に対応します。
先に type を設定し、そのあと processImage: を呼び出します(追加のモード引数はありません)。出力フォーマットは入力と一致します。
FBFrameTypeVideo はリアルタイムストリーム、FBFrameTypeImage は静止画向けです。
回転 / ミラー / 変換 / 保存:
YUV プレーン: dataY、dataU、dataV、dataUV、および strideY / strideU / strideV / strideUV。
外部テクスチャ
OpenGL ES スレッドでエンジンを作成し、externalContext = YES を設定してください。入力と出力のテクスチャはそのコンテキストを共有する必要があります。
推奨テクスチャパラメータ: GL_LINEAR、GL_CLAMP_TO_EDGE。エンジンは入力テクスチャを削除しません。出力テクスチャは SDK が所有します。
TRTC / Agora / LiveKit への接続: サードパーティ連携。
ライフサイクル
セッション中は strong 参照でエンジンを保持します。ViewController 破棄時は nil にします。ページを離れるときはキャプチャを止め、processImage: の呼び出しを止めます。
関連ドキュメント