Skip to main content
SDK 2.0.0。Flutter は美顔パラメータだけを設定します。リアルタイム動画フレームは Dart に入りません。相手 SDK の ネイティブ GL スレッド上で FacebetterPlugin.processTexture を呼び、出力テクスチャを相手フレームへ書き戻します。

共通の契約

このライブエンジンでは processFile / processImageBytes / processImageFile / processImageToUiImage を呼び出さないでください。
認証情報: サブスクリプション認証とライセンス。ネイティブ側のテクスチャ契約は Android · サードパーティ連携iOS · サードパーティ連携 も参照できます。 しないでください: Dart から毎フレームピクセルや texture id を渡す。非 GL スレッドで processTexture を呼ぶ。先のライブエンジンを dispose する前に 2 台目の externalContext: truecreate する。

TRTC(Tencent)

前提: プロジェクトに tencent_trtc_cloud(またはネイティブ TRTC)と facebetter_flutter: ^2.0.0 が入っている。カスタム前処理を開くときは Texture2D + Texture buffer を指定し、YUV / PixelBuffer を使わない。 Dart 側でエンジン作成後にカスタム前処理を開きます(メソッド名はプラグインバージョンで多少異なります)。

iOS — onProcessVideoFrame

tencent_trtc_cloudITXCustomBeautyProcesser を使う場合も、ピクセルフォーマットは Texture2D / Texture を選び、コールバックで同じ processTexture を呼びます。ファクトリ登録は GeneratedPluginRegistrant.register(with:)あとである必要があります。

Android — Kotlin

破棄


Agora

接続方針はネイティブと同じです。iOS / Android ネイティブの動画フレーム観測 / カスタム前処理コールバックで FacebetterPlugin.processTexture を呼び、Dart は FBEngine パラメータだけを担当します。
  1. Dart: FBEngine.create(externalContext: true) して美顔を設定
  2. Agora Flutter プラグインドキュメントに従い、カスタム動画処理を開くかネイティブ observer を登録(API は agora_rtc_engine バージョンで変化)
  3. ネイティブコールバックで GL_TEXTURE_2D textureId を取得したら processTexture を呼び、相手フレームへ書き戻す
OES / YUV のみのコールバックは先に Texture2D へ変換するか、Android / iOS のピクセル経路を参照してください(Flutter のライブ経路はテクスチャ + processTexture を優先します)。 破棄: 先に Agora 前処理を登録解除し、そのあと engine.dispose()

LiveKit

同様に Dart でパラメータを設定し、ネイティブでテクスチャを処理します。
  1. Dart で externalContext: true のエンジンを作成
  2. LiveKit Flutter / ネイティブのカスタム capturer または video processor でテクスチャフレームを取得
  3. GL スレッドFacebetterPlugin.processTexture を呼び、出力を LiveKit トラックへ戻す
具体的なフックは livekit_client とプラットフォーム実装で変わります。テクスチャ契約: Android · LiveKitiOS · LiveKit

関連ドキュメント