このページは SDK 2.0.0 に対応します。メイク / リシェイプ列挙: パラメータ列挙。
正しいフレームタイプを選ぶ
processImage: の前に FBImageFrame.type を設定します。エンジンメソッドに独立した処理モード引数はありません。
FBFrameTypeVideo(1): カメラプレビュー、ライブ配信、通話。遅延が低い。FBFrameTypeImage(0): 静止画 /NSImage。効果が高い。
大きな静止画(プレビューと書き出し)
高解像度の静止画では、スライダーのたびに原寸をprocessImage: に渡さないでください。縮小したあとに原画を捨てないでください。
写真を開いたら完全な NSImage を残し、プレビュー用フレームを 1 枚作ります(長辺は約 1280–1440、createWithNSImage:)。パラメータ調整はプレビュー(FBFrameTypeImage)、書き出しは同じ setter で全サイズをもう一度処理します。出力サイズは入力と同じです。カメラプレビューはキャプチャ解像度 + FBFrameTypeVideo のままです。
パラメータ範囲
- 美肌 / メイク / フィルター強度:
[0.0, 1.0]。0はその項目をオフにします。 - リシェイプ(
setReshape:intensity:):[-1.0, 1.0]。0はオフ。正負は逆方向です。
1 つのエンジン、1 つのシリアルキュー
createEngineWithConfig: が返すのはインスタンスであり、プロセス単位のシングルトンではありません。セッションごとにエンジンを 1 つ保持し、シリアルキュー上で呼び出します(externalContext = YES の場合は GL スレッド)。
メモリ
- ARC を使い、使い終わった
FBImageFrameはnilにします。 - カメラがすでに NV12 / BGRA の場合、毎フレーム RGBA へ変換しないでください。
setFilter:/setSticker:は 1 回で十分です。テクスチャは次のprocessImage:で読み込まれます。clearFilter、clearSticker、clearVirtualBackground、clearChromaKeyを使い、別エンジンを作らないでください。
外部 OpenGL
AppKit ビューがすでに GL コンテキストを持っている場合:config.externalContext = YESを設定します。- その GL スレッドでエンジンを作成します。
createWithTexture:width:height:stride:でテクスチャをラップします。- 出力は
[output texture]を使います。
getStats で監視
avgProcessTimeMs は約 33 ms 未満が望ましいです。デスクトップ GPU はより高い解像度を扱えます。UI がカクつく場合は効果を減らしてください。
ライフサイクル(AppKit)
エンジンはNSViewController(またはセッションオブジェクト)に置きます。viewWillDisappear でキャプチャを止めます。ウィンドウ最小化時は一時停止します。dealloc / applicationWillTerminate でエンジンを nil にします。
FBEngineCallbacks の block では __weak を使います。
macOS のキャプチャと表示
createWithNV12:...、createWithBGRA:...、またはcreateWithNSImage:でフレームを作ります。- フロント / 自撮りプレビュー:
setMirror:@"horizontal"。 - Retina: ポイントサイズではなくピクセルサイズで処理します(
backingScaleFactor)。 - カメラ:
NSCameraUsageDescription。サンドボックスアプリのオンライン認証には Outgoing Connections が必要です。 - ユーザーが選んだ
.fbd/ 背景画像: security-scoped URL を使います。
テスト
- Mac アプリの Bundle ID をバインドします(CLI ツールはプロセス名)。
- 実際の
appId/appKeyまたはlicenseTokenを使います。 FBFrameTypeImage+createWithNSImage:とFBFrameTypeVideoの両方をカバーします。- setter が
FBErrorCode_Successを返すことをアサートします。Universal Binary は Intel と Apple Silicon の両方でテストしてください。

