Enabling Beauty and Effects

步骤一:集成腾讯特效资源

2. 迁移腾讯特效资源
Android
iOS
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'
}
说明:
各套餐对应的 maven 地址,请参见 文档,SDK 的最新版本号可以在 版本历史 中查看。
3. 如果您使用的 Android 版美颜 SDK 小于3.9版本,您需要在 app 模块下找到 AndroidManifest.xml 文件,在 application 表填内添加如下标签:
<uses-native-library
android: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 目录下,添加后如下图:

注意:
上述从 demo 工程中复制的素材是测试素材,正式素材需要您在购买套餐之后联系腾讯特效美颜的 工作人员 进行获取并重新添加。

步骤二:集成 tencent_effect_flutter

您可以通过以下方式在您的 Flutter 工程中依赖 tencent_effect_flutter。
1. 远程依赖:
在您的 pubspec.yaml 文件中添加如下引用:
tencent_effect_flutter:
git:
url: https://github.com/Tencent-RTC/TencentEffect_Flutter
2. 本地依赖:
从 github 上下载最新版本的 tencent_effect_flutter ,而后在 pubspec.yaml 文件中添加如下引用:
tencent_effect_flutter:
path: path to tencent_effect_flutter

步骤三:美颜与 TRTC 关联

Android
iOS
在应用的 application 类的 onCreate 方法(或 FlutterActivity 的 onCreate 方法)中添加如下代码:
TRTCPlugin.setBeautyProcesserFactory(new XmagicProcesserFactory());
在 ios/Runner 目录下的 AppDelegate 文件中的 didFinishLaunchingWithOptions 方法中添加如下代码:
Swift
Object-C
let instance = XmagicProcesserFactory()
TencentRTCCloud.setBeautyProcesserFactory(factory: instance)
XmagicProcesserFactory *instance = [[XmagicProcesserFactory alloc] init];
[TencentRTCCloud setBeautyProcesserFactoryWithFactory:instance];

步骤四:美颜资源初始化与授权

1. 资源初始化
v0.3.5.0及之后
v0.3.1.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 与 腾讯特效美颜 的关联,您可以通过以下文档来进一步了解如何使用腾讯特效美颜: