Enabling Beauty and Effects
步骤一:集成腾讯特效资源
1. 下载 Demo 工程。
2. 迁移腾讯特效资源
1. 在您工程下的
android/app
模块下找到 src/main/assets
文件夹,将 demo 工程中 demo/android/app/src/main/assets
中的 lut 和 MotionRes 文件夹复制到您工程的android/app/src/main/assets
中,如果您的工程没有 assets 文件夹可以手动创建一个。
2. 在您项目的
android/app/build.gradle
文件中,添加 Android 端美颜 SDK 的依赖。具体依赖根据您选择的套餐包而定,例如您选择的是S1-04套餐,则添加如下:dependencies {implementation 'com.tencent.mediacloud:TencentEffect_S1-04:latest.release'}
3. 如果您使用的 Android 版美颜 SDK 小于3.9版本,您需要在 app 模块下找到 AndroidManifest.xml 文件,在 application 表填内添加如下标签:
<uses-native-libraryandroid:name="libOpenCL.so"android:required="false" />//true 表示libOpenCL是当前app必需的。如果没有此库,系统将不允许app安装//false 表示libOpenCL不是当前app必需的。无论有没有此库,都可以正常安装app。如果设备有此库,美颜特效SDK里的GAN类型特效能正常生效(例如童话脸、国漫脸)。如果设备没有此库,GAN类型不会生效,但也不影响SDK内其他功能的使用。//关于uses-native-library的说明,请参考Android 官网介绍:https://developer.android.com/guide/topics/manifest/uses-native-library-element
添加后如下图:

4. 混淆配置
在启用代码优化及混淆功能(minifyEnabled = true)构建 release 包时,编译工具可能移除未通过 Java/Kotlin 层显式调用的代码。若这些代码被 native 层动态调用,将触发 NoSuchMethodError 异常(如 no xxx method)。
建议在 proguard-rules.pro 通过 ProGuard 规则主动保留 Xmagic 模块的必要代码:
-keep class com.tencent.xmagic.** { *;}-keep class org.light.** { *;}-keep class org.libpag.** { *;}-keep class org.extra.** { *;}-keep class com.gyailib.**{ *;}-keep class com.tencent.cloud.iai.lib.** { *;}-keep class com.tencent.beacon.** { *;}-keep class com.tencent.qimei.** { *;}-keep class androidx.exifinterface.** { *;}-keep class com.tencent.effect.** { *;}
将 demo 工程中 ios/Runner 目录下的 xmagic 文件夹复制到您工程中 ios/Runner 目录下,添加后如下图:

注意:
步骤二:集成 tencent_effect_flutter
您可以通过以下方式在您的 Flutter 工程中依赖 tencent_effect_flutter。
1. 远程依赖:
在您的 pubspec.yaml 文件中添加如下引用:
tencent_effect_flutter:git:url: https://github.com/Tencent-RTC/TencentEffect_Flutter
2. 本地依赖:
tencent_effect_flutter:path: path to tencent_effect_flutter
步骤三:美颜与 TRTC 关联
在应用的 application 类的 onCreate 方法(或 FlutterActivity 的 onCreate 方法)中添加如下代码:
TRTCPlugin.setBeautyProcesserFactory(new XmagicProcesserFactory());
在 ios/Runner 目录下的 AppDelegate 文件中的 didFinishLaunchingWithOptions 方法中添加如下代码:
let instance = XmagicProcesserFactory()TencentRTCCloud.setBeautyProcesserFactory(factory: instance)
XmagicProcesserFactory *instance = [[XmagicProcesserFactory alloc] init];[TencentRTCCloud setBeautyProcesserFactoryWithFactory:instance];
步骤四:美颜资源初始化与授权
1. 资源初始化
TencentEffectApi.getApi()?.setResourcePath(resourceDir);TencentEffectApi.getApi()?.initXmagic((result) {// TODO});
TencentEffectApi.getApi()?.initXmagic(dir,(reslut) {//TODO});
2. 美颜授权
TencentEffectApi.getApi()?.setLicense(licenseKey, licenseUrl, (errorCode, msg) {if (errorCode == 0) {// Success}});
步骤五:开启/关闭美颜
完成上述操作后,您可以通过 TRTC 的隐藏接口来开启/关闭美颜:
_enableCustomBeautyByNative(bool open) {trtcCloud.callExperimentalAPI("{\"api\": \"enableVideoProcessByNative\", \"params\": {\"enable\": $open}}");}
注意:
在页面中开启美颜,关闭相机的时候需要先关闭美颜,开启和关闭是成对使用。
文档参考
以上您已经完成了 TRTC 与 腾讯特效美颜 的关联,您可以通过以下文档来进一步了解如何使用腾讯特效美颜:
美颜参数说明