FacebetterPlugin.processTexture,再把输出纹理写回对方帧。
共性约定
不要在这台实时引擎上调用
processFile / processImageBytes / processImageFile / processImageToUiImage。
不要: 从 Dart 每帧传像素或 texture id;在非 GL 线程调
processTexture;把 FBEngine 当进程级单例。
TRTC(腾讯云)
前置:工程已接入tencent_trtc_cloud(或原生 TRTC)、facebetter_flutter: ^2.0.0。打开自定义前处理时指定 Texture2D + Texture buffer,不要走 YUV / PixelBuffer。
Dart 侧创建引擎后打开自定义前处理(方法名随插件版本可能略有差异):
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 插件文档打开自定义视频处理或注册原生 observer(API 随
agora_rtc_engine版本变化) - 在原生回调拿到
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。

