tencent cloud

文档反馈

第三方推流接入美颜(Flutter)

最后更新时间:2022-11-30 18:02:12

    由于 Flutter 端的 GL 环境与原生端环境进行了隔离,所以 Flutter 中接入美颜时无法直接建立绑定关系,需要在原生端进行关系的绑定,如下图所示:

    实现方式总体流程

    1. 美颜侧抽象一层接口,并在美颜侧实现了接口。
    2. 在应用启动时将此接口注册到三方推流端,这样三方推流端就可以通过此接口进行创建、使用、销毁美颜实例。
    3. 三方推流端再将创建和销毁美颜的能力暴露给自己的 Flutter 端供客户使用。
    4. 美颜属性设置可通过美颜提供的 Flutter SDK 能力进行处理。

    以 TRTC 为例

    美颜侧定义的接口:

    public interface ITXCustomBeautyProcesserFactory {
        /**
        * 创建美颜实例
        * @return
        */
       ITXCustomBeautyProcesser createCustomBeautyProcesser();
        /**
        * 销毁美颜实例(需要在GL线程调用)
        */
       void destroyCustomBeautyProcesser();
    }
    public interface ITXCustomBeautyProcesser {
       //获取美颜支持的视频帧的像素格式。美颜支持的是:OpenGL 2D 纹理。
       TXCustomBeautyPixelFormat getSupportedPixelFormat();
       //获取美颜支持的视频数据包装格式。美颜支持的是:V2TXLiveBufferTypeTexture    直接操作纹理 ID,性能最好,画质损失最少。
       TXCustomBeautyBufferType getSupportedBufferType();
      //在GL线程调用(srcFrame中需要包含RGBA纹理,以及width,height),美颜处理之后会将处理后的纹理对象放置在dstFrame中的    texture.textureId中。
       void onProcessVideoFrame(TXCustomBeautyVideoFrame srcFrame, TXCustomBeautyVideoFrame dstFrame);
    }
    
    1. TRTC提供一个注册的方法,在应用启动时,需将美颜侧 ITXCustomBeautyProcesserFactory 接口的实现类com.tencent.effect.tencent_effect_flutter.XmagicProcesserFactory 注册进 TRTC 中(在原生端进行)。
    2. Flutter 层,提供 Future<v2txlivecode> enableCustomVideoProcess(bool enable) 接口进行开启或关闭自定义美颜接口。
    3. TRTC原生端实现开关美颜方法。

    附录

    美颜提供的抽象层依赖

    ///
    implementation 'com.tencent.liteav:custom-video-processor:latest.release'
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持