由于 Flutter 端的 GL 环境与原生端环境进行了隔离,所以 Flutter 中接入美颜时无法直接建立绑定关系,需要在原生端进行关系的绑定,如下图所示:
实现方式总体流程
1. 美颜侧抽象一层接口,并在美颜侧实现了接口。
2. 在应用启动时将此接口注册到三方推流端,这样三方推流端就可以通过此接口进行创建、使用、销毁美颜实例。
3. 三方推流端再将创建和销毁美颜的能力暴露给自己的 Flutter 端供客户使用。
4. 美颜属性设置可通过美颜提供的 Flutter SDK 能力进行处理。
以 TRTC 为例
美颜侧定义的接口:
public interface ITXCustomBeautyProcesserFactory {
ITXCustomBeautyProcesser createCustomBeautyProcesser();
void destroyCustomBeautyProcesser();
}
public interface ITXCustomBeautyProcesser {
TXCustomBeautyPixelFormat getSupportedPixelFormat();
TXCustomBeautyBufferType getSupportedBufferType();
void onProcessVideoFrame(TXCustomBeautyVideoFrame srcFrame, TXCustomBeautyVideoFrame dstFrame);
}
1. TRTC提供一个注册的方法,在应用启动时,需将美颜侧 ITXCustomBeautyProcesserFactory 接口的实现类com.tencent.effect.tencent_effect_flutter.XmagicProcesserFactory
注册进 TRTC 中(在原生端进行)。
2. 在 Flutter
层,提供 Future<V2TXLiveCode> enableCustomVideoProcess(bool enable)
接口进行开启或关闭自定义美颜接口。
附录
美颜提供的抽象层依赖
implementation 'com.tencent.liteav:custom-video-processor:latest.release'
本页内容是否解决了您的问题?