FacebetterPlugin.processTexture를 호출한 뒤 출력 텍스처를 다시 씁니다.
공통 계약
라이브 엔진에서
processFile / processImageBytes / processImageFile / processImageToUiImage를 호출하지 마세요.
하지 마세요: 매 프레임 Dart에서 픽셀이나 texture id를 푸시; GL 스레드 밖에서
processTexture 호출; 첫 라이브 엔진을 dispose하기 전에 두 번째 externalContext: true를 create.
TRTC (Tencent)
사전 요구 사항:tencent_trtc_cloud(또는 네이티브 TRTC)와 facebetter_flutter: ^2.0.0. 커스텀 전처리를 켤 때 YUV / PixelBuffer가 아니라 Texture2D + Texture buffer를 사용하세요.
Dart에서 엔진을 만든 뒤 커스텀 처리를 켭니다(API 이름은 플러그인 버전에 따라 다를 수 있음):
iOS — onProcessVideoFrame
tencent_trtc_cloud의 ITXCustomBeautyProcesser를 쓰면 Texture2D / Texture를 유지하고 콜백에서 같은 processTexture를 호출하세요. 팩토리는 GeneratedPluginRegistrant.register(with:) 이후에 등록하세요.
Android — Kotlin
해제
Agora
네이티브와 같은 모델입니다. iOS / Android 프레임 옵저버 / 커스텀 전처리 콜백 안에서FacebetterPlugin.processTexture를 호출하고, Dart는 FBEngine 파라미터만 소유합니다.
- Dart:
FBEngine.create(externalContext: true)후 뷰티 설정 - Agora Flutter 플러그인에 따라 커스텀 비디오 처리를 켜거나 네이티브 옵저버를 등록(
agora_rtc_engine버전에 따라 API가 다름) GL_TEXTURE_2DtextureId에서processTexture를 호출하고 벤더 프레임에 다시 씀
processTexture를 권장).
해제: Agora 전처리를 등록 해제한 뒤 engine.dispose().
LiveKit
다시: Dart가 파라미터를 설정하고, 네이티브가 텍스처를 처리합니다.- Dart에서
externalContext: true엔진을 만듭니다 - LiveKit Flutter / 네이티브 커스텀 capturer 또는 video processor로 텍스처 프레임을 얻습니다
- GL 스레드에서
FacebetterPlugin.processTexture를 호출한 뒤 출력을 LiveKit 트랙에 다시 넣습니다
livekit_client와 플랫폼에 따라 다릅니다. 텍스처 규칙: Android · LiveKit, iOS · LiveKit.

