Skip to main content
SDK 2.0.0。Dart 只设置美颜参数。每一帧视频都留在原生 GL 线程,通过 FacebetterPlugin.processTexture 处理。
不要在这台引擎上调用 processFile / processImageBytes / processImageFile / processImageToUiImage。那些接口需要 externalContext: false,并且要用另一台引擎。

前置条件

  • 工程里已接入 tencent_trtc_cloud(或原生 TRTC)
  • facebetter_flutter: ^2.0.0
  • 有效的 appId / appKeylicenseToken授权与许可证
打开 TRTC 自定义前处理时指定 Texture2D + Texture buffer,不要走 YUV / PixelBuffer。

1. 在 Dart 里创建引擎

必须在打开自定义前处理之前创建。externalContext 默认为 true,接 TRTC 必须保持 true
滑条回调可以直接调同步 setter:
然后打开 TRTC 自定义前处理(方法名随 TRTC Flutter 插件版本可能略有差异):

2. iOS — 在 onProcessVideoFrame 里喂纹理

若使用 tencent_trtc_cloudITXCustomBeautyProcesser,像素格式仍选 Texture2D / Texture,在 onProcessVideoFrame 里调用同一个 processTexture。工厂注册必须在 GeneratedPluginRegistrant.register(with:) 之后

3. Android — 同样的回调,Kotlin

processTexture 必须在当前 GL 线程调用,不要切到 UI isolate。

4. 销毁

  1. enableCustomVideoProcess(false)(或先退房)
  2. engine.dispose()

静图 vs 实时视频

不要做的事

  • 不要从 Dart 每帧传像素或 texture id — Flutter 与 TRTC 的 GL 上下文不能和 Dart 共用。
  • 不要在非 GL 线程调用 processTexture
  • 不要把 FBEngine 当成进程级单例。用 FBEngine.create 创建,通话结束时 dispose()

相关文档