Flutter端末のGL環境はネイティブ端末の環境から隔離されているため、Flutterに美顔を接続する際に直接バインド関係を確立することができません。下図のようにネイティブ端末で関係のバインドを行う必要があります。
美顔側が定義するインターフェース:
public interface ITXCustomBeautyProcesserFactory {
/**
* 美顔インスタンスの作成
* @return
*/
ITXCustomBeautyProcesser createCustomBeautyProcesser();
/**
* 美顔インスタンスの破棄(GLスレッドで呼び出す必要があります)
*/
void destroyCustomBeautyProcesser();
}
public interface ITXCustomBeautyProcesser {
//美顔がサポートするビデオフレームのピクセル形式を取得します。美顔がサポートしているのはOpenGL 2Dテクスチャです。
TXCustomBeautyPixelFormat getSupportedPixelFormat();
//美顔がサポートするビデオデータパッケージ形式を取得します。美顔がサポートしているのはV2TXLiveBufferTypeTextureです。テクスチャIDを直接操作でき、パフォーマンスが最良で、画質ロスが最少です。
TXCustomBeautyBufferType getSupportedBufferType();
//GLスレッドで呼び出します(srcFrameにはRGBAテクスチャ、およびwidth、heightが含まれる必要があります)。美顔処理後に処理後のテクスチャオブジェクトをdstFrame内のtexture.textureId内に配置します。
void onProcessVideoFrame(TXCustomBeautyVideoFrame srcFrame, TXCustomBeautyVideoFrame dstFrame);
}
com.tencent.effect.tencent_effect_flutter.XmagicProcesserFactory
をTRTCに登録します(ネイティブ端末で行います)。Flutter
層で、カスタム美顔インターフェースの有効化と無効化を行うFuture<v2txlivecode> enableCustomVideoProcess(bool enable)
インターフェースを提供します。美顔が提供する抽象化層の依存
///
implementation 'com.tencent.liteav:custom-video-processor:latest.release'
この記事はお役に立ちましたか?