統合
エンジン作成が nil を返す
licenseTokenまたはappId+appKeyを設定してください。両方ある場合はトークンが優先されます。- コンソールでアプリの Bundle ID をバインドしてください。
- オンライン認証では
/facebetter/v2/authに到達できる必要があります。 createEngineWithConfig:の前にログを開き、イベント1(認証失敗)と101(初期化失敗)を確認してください。- CocoaPods:
pod 'Facebetter', '2.0.0'。.xcodeprojではなく.xcworkspaceを開いてください。
コンパイルでヘッダーまたはクラスが見つからない
#import <Facebetter/FBBeautyEffectEngine.h>をインポートします。.frameworkを手動統合する場合は Embed & Sign に設定します。- Clean Build Folder のあと再ビルドします。
- Xcode 15+ で CocoaPods スクリプトが失敗する場合、
ENABLE_USER_SCRIPT_SANDBOXINGを No にします。
実行時のリンク / dyld エラー
- アーキテクチャは arm64 である必要があります。
- デプロイターゲットは iOS 12.0+ です。
Facebetter.frameworkが Embed Frameworks に入っていることを確認してください。
認証
licenseToken と appId / appKey
licenseToken が空でない場合、SDK はトークン / {token} JSON / .lic をローカルで検証し、appId / appKey を再送信しません。それ以外はオンライン認証です。詳細: 認証とライセンス。
イベント 1 または 101
認証または初期化の失敗です。Bundle ID、プラン、トークンの期限切れ、ログを確認してください。作成が nil でないだけでは不十分です。onEngineEvent も監視してください。
美顔
効果が弱すぎる、または強すぎる
- 美肌 / メイク / フィルター:
[0.0, 1.0]。 - リシェイプ:
setReshape:intensity:で[-1.0, 1.0](0はオフ)。 - 強度
0はその項目をオフにします。 - 肌領域のみ:
setBeautySkinOnly:。
FBReshape_FaceThin、FBLipstickColor_Rouge の形式です。
フィルター、ステッカー、バーチャル背景
フィルターまたはステッカーが効かない
.fbd のパスまたはバイトを直接渡します。
processImage: 処理後に有効になります。空パス / nil データは FBErrorCode_InvalidArgument を返します。ファイルがなければ FBErrorCode_IO です。
バーチャル背景
処理
processImage: が nil を返す
- エンジンが
nil、または初期化失敗(-2/ イベント101)。 - フレームが無効(サイズ 0、非対応フォーマット)。
externalContext = YESだが、現在のスレッドに GL コンテキストがない。- 処理失敗(
FBErrorCode_Process)として扱ってください。
フレームタイプ
imageFrame.type を FBFrameTypeImage(0)または FBFrameTypeVideo(1)に設定します。処理モード引数は渡さないでください。
フォーマット変換
convert: とフレームアクセサを使います。
dataY / dataU / dataV / dataUV と対応する stride*。
UIImage
カメラプレビュー
AVCaptureVideoDataOutputからCVPixelBufferを取得します。createWithNV12:...またはcreateWithBGRA:...でFBImageFrameを作成します。type = FBFrameTypeVideoを設定し、任意でsetMirror:@"horizontal"。processImage:のあと[output data]または[output texture]を表示します。
パフォーマンスとメモリ
- リアルタイムでは
FBFrameTypeVideo。getStats.avgProcessTimeMsが高い場合は解像度を下げます。 - エンジンは 1 つ、シリアルキュー。メインスレッドで処理しないでください。
- ARC でフレームを解放し(
frame = nil)、キャプチャバッファを再利用します。 - 毎フレーム
setFilter:/setSticker:しないでください。
ログ
0 成功、-1 引数不正、-2 未初期化。一覧は エラー処理 を参照してください。
バージョン
- iOS 12.0+、arm64。
- CocoaPods:
pod 'Facebetter', '2.0.0'。 - アップグレード後は
pod install、Clean Build Folder を実行し、認証とprocessImage:を再確認してください。
スレッド
- デフォルトエンジン: すべての
processImage:と、GL リソースに触れる setter はシリアルキューで実行します。 externalContext = YES: GL スレッドで作成して処理します。- UI の更新はメインキューのみです。

