Android 如何实现美颜功能

如何基于 CallLib ,RongRTC 实现美颜功能
发布时间: 2018-11-29 11:03

回答:

一、 融云提供的美颜插件

    1. 视频美颜开发文档:    

https://doc.rongcloud.cn/meeting/Android/5.X/video/beautifier 

https://doc.rongcloud.cn/live/Android/5.X/video/beautifier 


    2. 视频美颜 APP 可以在 https://www.rongcloud.cn/downloads/demo 下载 SealRTC apk 体验。


    3. 融云提供的美颜插件是必须要 sdk 5.1.4 及以上版本才行,

    face_beautifier: 'cn.rongcloud.sdk:face_beautifier:5.1.4';


    实现方式可以参考 quickdemo,但如果开发者要是自己实现美颜功能就不需要升级到 5.1.4 版本。


    4. 在 quickdemo(https://github.com/rongcloud/rtc-quickdemo-android) 中 live module 里有美颜相关代码可供参考。


二、CallLib 2.9.7 及以后的版本(5.1.4 之前)

1、基于 CallLib 实现美颜。

1.1、RongCallManager 设置监听视频流,自己实现美颜功能。

```
    RongCallClient.getInstance().registerVideoFrameListener(new IVideoFrameListener() {
        /**
             * 输出 width/height/oesTextureId。若用户不需要自定义美颜效果,可直接返回 oesTextureId;
             * 或是定义自己的美颜效果,请返回新的textureId。
             *
             * @param width        当前帧的宽度
             * @param height       当前帧的高度
             * @param oesTextureId 纹理资源 id
             * @return oesTextureId 返回默认oesTextureId(返回0也代表使用默认效果)或是自定义的textureId
             */
        @Override
        public int processVideoFrame(int width, int height, int oesTextureId) {

            return 0;
        }
    });
```

2、基于 RongRTC 实现美颜,RongRTC 引擎 2.1.1 及其之后的版本。

2.1、设置监听视频流,自己实现美颜功能。

       RongRTCEngine.getInstance().setVideoFrameListener(new RongRTCEngineVideoFrameListener() {
           /**
                 * 输出 width/height/oesTextureId。若用户不需要自定义美颜效果,可直接返回 oesTextureId;
                 * 或是定义自己的美颜效果,请返回新的textureId。
                 *
                 * @param width        当前帧的宽度
                 * @param height       当前帧的高度
                 * @param oesTextureId 纹理资源 id
                 * @return oesTextureId 返回默认oesTextureId(返回0也代表使用默认效果)或是自定义的textureId
                 */
            @Override
            public int processVideoFrame(int width, int height, int oesTextureId) {
                return 0;
            }
        });

我们的 RongRTC 是最底层的引擎,提供通讯和会议等能力,一些例如音视频的功能,需要基于我们的引擎二次开发,我们的 CallLib 是基于我们的 RongRTC 引擎开发的一套音视频能力库,提供例如音频视频,群内多人音视频等功能,没有 UI 界面,我们的 callkit 是基于 RongRTC 和 CallLib 开发的有 UI 界面的通讯能力库, 可提供音视频能力和 UI 界面,开发者可以根据自己的需求去选择相应的库,在相应的库的基础上进行操作即可,这里有关于三者更详细的说明,这里有关于三者的文档,这里有融云的开源代码,如 CallKit。