統合
エンジン構築時に例外が出る、または準備完了にならない
IllegalArgumentException:EngineConfigには空でないlicenseToken、またはappIdとappKeyの両方が必要です- ダッシュボードの アプリケーションパッケージ名 をこのアプリにバインドしてください
- オンライン認証では
/facebetter/v2/authへのネットワークアクセスを確認してください EngineEventCode.LICENSE_VALIDATION_FAILED/INITIALIZATION_FAILEDを監視してくださいsetLogConfigはnew BeautyEffectEngine(...)の前に呼び出してください
コンパイル: net.pixpark.facebetter を解決できない
- Maven:
implementation 'net.pixpark:facebetter:2.0.0' - ローカル AAR:
implementation files('libs/facebetter.aar')のあと Sync - Clean / Rebuild
UnsatisfiedLinkError
- デバイス ABI は
arm64-v8aまたはarmeabi-v7aである必要があります - 縮小 / 難読化する場合は
libfacebetter.soを保持し、ProGuard / R8 で Facebetter の native メソッドを保持してください - AAR / Maven 成果物が完全か確認してください
効果
美顔が弱い
[0, 1]の範囲で強度を上げてください(setSmoothing、setWhitening、メイクなど)- リシェイプは
[-1, 1]です。0に近い値はほぼオフです INITIALIZATION_COMPLETEを確認し、processImageが null でないフレームを返すことを確認してくださいonFaceLandmarksでランドマークを確認してください(空リスト = 顔なし)
顔が歪んで見える
setReshapeの絶対値を下げてください。符号を逆にすると方向が反転します- 多くのリシェイプつまみを高い絶対値で重ねないでください
- ライブ
VIDEOが柔らかく見える場合、静止画書き出しにはFrameType.IMAGEを使ってください(効果は強くなりません)
バーチャル背景が効かない
setVirtualBackgroundBlur(level)をlevel > 0で呼ぶか、またはsetVirtualBackground(path|bytes)を使いますsetVirtualBackgroundBlur(0)は効果をクリアします- 画像パスは読み取り可能な PNG/JPG である必要があります。空パスは
ErrorCode.INVALID_ARGUMENTを返します - グリーンスクリーン:
setChromaKey(ChromaKeyColor.GREEN)に塗りつぶし(ぼかしまたは画像)を組み合わせます clearChromaKey()はポートレートマスクを復元するだけで、塗りつぶしは取り除きません
フィルターまたはステッカーが表示されない
setFilter/setStickerに.fbdの パスまたはバイト を渡します(登録 API はありません)- 反映は GL スレッド上の次の
processImageです externalContext = trueの場合、その呼び出しはカレントな GL コンテキスト付きで実行する必要がありますsetFilterIntensity(0)にすると LUT は見えなくなります
パフォーマンスとメモリ
プレビューが遅い
input.type = ImageFrame.FrameType.VIDEO- キャプチャ解像度を下げてください
- 同時に使うリシェイプ / メイク / バーチャル背景を減らしてください
processImageはメインスレッド以外(カメラまたは GL スレッド)で実行してくださいengine.getStats().avgProcessTimeMsを確認してください- ギャラリーの大きな静止画: 開いたときに小さいプレビューフレームを作り、書き出しで原寸を 1 回処理します。ベストプラクティス を参照してください
メモリが増え続ける、またはネイティブクラッシュする
- すべての
ImageFrameをrelease()してください。convert()の結果とprocessImageの出力も含みます ByteBuffer.allocateDirectを使ってください- エンジンは 1 インスタンス。
onDestroyでengine.release()を呼び出してください
ANR
- HD 動画の
processImageを UI スレッドで実行しないでください - 大きな
.fbd/ JPEG をメインスレッドで読み込まないでください
画像とカメラ
ピクセルフォーマットを変更するには?
ImageFrame.convert(Format) を使います(新しいフレームを返します)。
getData()。プレーナー YUV: getDataY() / getDataU() / getDataV() または getDataUV()。
Camera2 プレビュー
YUV_420_888からImageを取得ImageFrame.createWithAndroid420(...)- センサーとフロントカメラ向けに
rotate/mirror input.type = FrameType.VIDEOprocessImage(input)- 表示用に変換するか
getTexture()を使います
回転
rotate(ImageFrame.Rotation.ROTATION_90)(0 / 90 / 180 / 270、時計回り)はフレームを変更します。
権限
オンライン認証:CAMERA(API 23+ では実行時リクエスト)。アプリストレージ外へのファイルログは、古い API ではストレージ権限が必要な場合があります。
デバッグ
エンジン作成前にログを有効にします。0 を返します。-1 = 引数不正、-2 = 未初期化。 一覧は エラー処理 を参照してください。
互換性
- Android 7.0(API 24)以上
- ABI:
arm64-v8a、armeabi-v7a - Maven:
net.pixpark:facebetter:2.0.0

