統合
エンジン作成が nil を返す
licenseTokenまたはappId+appKeyを設定してください。両方ある場合はトークンが優先されます。- Mac の Bundle ID をバインドします(CLI ツールはプロセス名)。
- オンライン認証には App Sandbox の Outgoing Connections と、
/facebetter/v2/authへの到達が必要です。 createEngineWithConfig:の前にログを開き、イベント1/101を確認してください。- CocoaPods:
pod 'Facebetter', '2.0.0'。.xcworkspaceを開きます。
コンパイルでヘッダーまたはクラスが見つからない
#import <Facebetter/FBBeautyEffectEngine.h>をインポートします。- 手動
.framework: Embed & Sign。 - Xcode 15+ の CocoaPods サンドボックス:
ENABLE_USER_SCRIPT_SANDBOXINGを No にします。
実行時のリンク / dyld エラー
- アーキテクチャ: x86_64 と arm64。
- デプロイターゲット macOS 10.15+。
認証
licenseToken と appId / appKey
licenseToken が空でない場合、SDK はトークン / {token} JSON / .lic をローカルで検証します。それ以外はオンライン認証です。詳細: 認証とライセンス。
イベント 1 または 101
認証または初期化の失敗です。Bundle ID、サンドボックスのネットワーク、トークン期限切れ、ログを確認してください。
美顔
効果が弱すぎる、または強すぎる
- 美肌 / メイク / フィルター:
[0.0, 1.0]。 - リシェイプ:
setReshape:intensity:で[-1.0, 1.0]。 - 強度
0はその項目をオフにします。 - 肌領域のみ:
setBeautySkinOnly:。
フィルター、ステッカー、バーチャル背景
.fbd のパスまたはバイトを渡します。サンドボックスアプリはそのパスを読める必要があります。
処理
processImage: が nil を返す
フレームが無効、初期化失敗、または externalContext = YES だが現在 GL コンテキストがない。
フレームタイプ
imageFrame.type を FBFrameTypeImage(0)または FBFrameTypeVideo(1)に設定します。処理モード引数はありません。
フォーマット変換
convert: を使います。
NSImage
カメラ
AVCaptureVideoDataOutput→CVPixelBuffer。createWithNV12:...またはcreateWithBGRA:...。type = FBFrameTypeVideo、任意でsetMirror:@"horizontal"。- AppKit / OpenGL ビューで
[output data]または[output texture]を表示します。
パフォーマンス
- リアルタイムでは
FBFrameTypeVideo。getStatsを確認します。 - エンジンは 1 つ、シリアルキュー。
- ウィンドウ最小化時はキャプチャを一時停止します。
ログ
バージョン
- macOS 10.15+、x86_64 + arm64。
- CocoaPods:
pod 'Facebetter', '2.0.0'。 - Universal Binary: xcframework に両方のスライスがあることを確認します(
lipo -info)。
サンドボックスと App Store
- オンライン認証には送信ネットワークが必要です。
- カメラには
NSCameraUsageDescriptionが必要です。 - ユーザーが選んだファイルには security-scoped bookmark を使います。
- プライベート API を使わないでください。ライブ動画ではメインスレッドでエンジンを走らせないでください。

