processImage,再把输出纹理交回对方。
完整纹理约定见 实现美颜 · 外部纹理。对方 SDK 的进房、推流、权限请以其官方文档为准;本页只写与 Facebetter 的接线。
共性约定
Facebetter 不接受
GL_TEXTURE_EXTERNAL_OES 作为 createWithTexture 输入。若对方默认给 OES,请先按其文档切到 Texture2D / RGB,或自行 blit 成 GL_TEXTURE_2D 再处理。
共用处理函数
各厂商回调里都可以复用下面的辅助方法(在 GL 线程调用):TRTC(腾讯云)
挂钩 API:TRTCCloud.setLocalVideoProcessListener。像素格式选 Texture_2D,缓冲类型选 TEXTURE。
在 onGLContextCreated 里创建 Facebetter;在 onProcessVideoFrame 里处理并写回 dstFrame.texture.textureId;在 onGLContextDestory 里 release()。
FacebetterPlugin.processTexture,不是本页的 Java API)。
声网 Agora
挂钩 API:RtcEngine.registerVideoFrameObserver(Video SDK 4.x)。需要:
getVideoFrameProcessMode()返回PROCESS_MODE_READ_WRITE- 尽量拿到 TextureBuffer,且类型为 RGB(
GL_TEXTURE_2D) - 在
onCaptureVideoFrame(或你选择的观测位置)里跑 Facebetter,再把处理后的纹理写回VideoFrame
RtcEngine 前注销 observer,并 beautyEngine.release()。
LiveKit
挂钩方式:创建本地视频轨时传入org.webrtc.VideoProcessor(或等价的 track processor)。在 onFrameCaptured 里处理纹理,再通过 sink.onFrame(...) 送回。
VideoCapturer,在采到纹理后先 processTexture 再 capturerObserver.onFrameCaptured。虚拟背景等官方 processor 见 LiveKit 的 livekit-android-track-processors 模块。

