Basic Beauty Panel | Advanced Beauty Panel |
![]() | ![]() |
V-Face | Eye Distance | Slim Nose | 3D Stickers |
![]() | ![]() | ![]() | ![]() |
TUILiveKit includes Basic Beauty by default and requires no additional integration. To use Advanced Beauty, complete the steps below.te_beauty_kit folder into your project at the same directory level as the app folder.
te_beauty_kit dependency to your Flutter project's pubspec.yaml file:dependencies:te_beauty_kit:path: ../te_beauty_kit # Use your actual path
Resource | Purpose |
assets/beauty_panel/*.json | Panel UI configuration (groups, buttons, sliders) |
assets/beauty_panel/panel_icon/ | Panel button icon PNGs |
Resource | Purpose | Corresponding Panel Feature |
lut/ | Filter color lookup tables | Filter Tab |
MotionRes/2dMotionRes/ | 2D animated stickers | big head effects|Sticker Tab |
MotionRes/3dMotionRes/ | 3D model stickers | Sticker Tab |
MotionRes/handMotionRes/ | Gesture-triggered stickers | Gesture Tab |
MotionRes/makeupRes/ | Full Makeup Set (lipstick, eyeshadow, blush, etc.) | Makeup Tab |
MotionRes/light_makeup/ | Light Makeup assets | Light Makeup Tab |
MotionRes/segmentMotionRes/ | Portrait segmentation (green screen, matting, background blur) | Segmentation Tab |
TUIKit_Flutter/application/assets/beauty_panel to your Flutter project's assets directory.application/assets/├── beauty_panel/│ ├── beauty.json│ ├── beauty_template.json│ ├── beauty_template_ios.json│ ├── beauty_image.json│ ├── beauty_shape.json│ ├── beauty_makeup.json│ ├── beauty_body.json│ ├── light_makeup.json│ ├── makeup.json│ ├── motion_2d.json│ ├── motion_3d.json│ ├── motion_gesture.json│ ├── segmentation.json│ ├── lut.json│ └── panel_icon/
pubspec.yaml:flutter:assets:- assets/beauty_panel/- assets/beauty_panel/panel_icon/beauty/- assets/beauty_panel/panel_icon/beauty/beauty_smooth/- assets/beauty_panel/panel_icon/beauty/eyes_makeup/- assets/beauty_panel/panel_icon/beauty/kouhong/- assets/beauty_panel/panel_icon/beauty/liti/- assets/beauty_panel/panel_icon/beauty/saihong/- assets/beauty_panel/panel_icon/beauty_body/- assets/beauty_panel/panel_icon/beauty_template/- assets/beauty_panel/panel_icon/light_makeup_icon/- assets/beauty_panel/panel_icon/lut_icon/- assets/beauty_panel/panel_icon/motions_icon/
lut and MotionRes directories from TUIKit_Flutter/application/android/app/src/main/assets to your Android app's assets directory:android/app/src/main/assets/├── lut/│ ├── baixi_lf.png│ ├── dongjing_lf.png│ ├── moren_lf.png│ ├── xindong_lf.png│ └── ziran_lf.png└── MotionRes/├── 2dMotionRes/├── 3dMotionRes/├── handMotionRes/├── ganMotionRes/├── makeupRes/├── light_makeup/└── segmentMotionRes/
TUIKit_Flutter/application/ios/xmagic directory to your iOS project root:ios/└── xmagic/├── lut.bundle/├── 2dMotionRes.bundle/├── 3dMotionRes.bundle/├── makeupMotionRes.bundle/├── ganMotionRes.bundle/├── handMotionRes.bundle/├── lightMakeupRes.bundle/└── segmentMotionRes.bundle/
xmagic/ directory into your Xcode project, select Create folder references (blue folder), do not use group, and ensure Target Membership is enabled for your main app target.BeautyLevel. Missing files will result in missing or blank tabs.Package ( BeautyLevel) | Panel JSON files to import (full set) |
A1_00 | beauty_template, beauty, lut |
A1_01 | beauty_template, beauty, beauty_image, beauty_base_shape, lut |
A1_02 | beauty_template, beauty, beauty_image, beauty_base_shape, lut, motion_2d |
A1_03 | beauty_template, beauty, beauty_image, beauty_general_shape, lut, motion_2d |
A1_04 | beauty_template, beauty, beauty_image, beauty_general_shape, lut |
A1_05 | beauty_template, beauty, beauty_image, beauty_general_shape, lut, motion_2d, segmentation |
A1_06 | beauty_template, beauty, beauty_image, beauty_general_shape, lut, motion_2d, makeup |
S1_00 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut |
S1_01 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, motion_2d, motion_3d, makeup, light_makeup |
S1_02 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, motion_2d, motion_3d, motion_gesture, makeup, light_makeup |
S1_03 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, motion_2d, motion_3d, makeup, light_makeup, segmentation |
S1_04 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, motion_2d, motion_3d, motion_gesture, makeup, light_makeup, segmentation |
S1_05 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, beauty_body, motion_2d, motion_3d, makeup, light_makeup, segmentation |
S1_06 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, beauty_body, motion_2d, motion_3d, motion_gesture, makeup, light_makeup, segmentation |
S1_07 | beauty_template, beauty, beauty_image, beauty_shape, beauty_makeup, lut, beauty_body, motion_2d, motion_3d, motion_gesture, makeup, light_makeup, segmentation |
pubspec.yaml:# pubspec.yaml# Root-level configurationEffectPlayer:sub_spec: 'NoXMagic'TencentEffect:te_sub_spec: 'S1-07'
Default and NoXMagic. If you use both Tencent Effects Player and Tencent Effects Beauty libraries, you may encounter a compilation conflict with the xmagic library. To resolve this, set NoXMagic to compile only one copy of the xmagic library. TUILiveKit includes the gift component live_uikit_gift by default, which uses Tencent Effects Player.NoXMagic, comment out YTCommonXMagic in your iOS app's Podfile. Tencent Effects Beauty will import this library by default.# Comment out YTCommonXMagic library# pod 'YTCommonXMagic', :podspec => 'https://mediacloud-76607.gzc.vod.tencent-cloud.com/MediaX/iOS/podspec/release/YTCommonXMagic_1.3.1/YTCommonXMagic.podspec'
settings.gradle file's dependencyResolutionManagement includes the Tencent Maven repository. The tebeautykit module's Tencent Effects SDK dependency is fetched from this source:dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()// Add Tencent Maven repositorymaven { url 'https://mirrors.tencent.com/repository/maven/thirdparty' }}}
package com.tencent.applicationimport android.os.Bundleimport android.os.PersistableBundleimport io.flutter.embedding.android.FlutterActivity// Import related filesimport com.tencent.trtcplugin.TRTCPluginimport com.tencent.effect.tencent_effect_flutter.XmagicProcesserFactoryclass MainActivity: FlutterActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// Register beauty processorTRTCPlugin.setBeautyProcesserFactory(XmagicProcesserFactory())}}
import Flutterimport UIKit// Import related filesimport tencent_effect_flutterimport tencent_rtc_sdk@main@objc class AppDelegate: FlutterAppDelegate {override func application(_ application: UIApplication,didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {GeneratedPluginRegistrant.register(with: self)// Register beauty processorlet instance = XmagicProcesserFactory()TencentRTCCloud.setBeautyProcesserFactory(factory: instance)return super.application(application, didFinishLaunchingWithOptions: launchOptions)}}
te_beauty_kit module in main.dart://// main.dart//// Import filesimport 'package:te_beauty_kit/te_beauty_kit.dart';// Your app's main classclass XXX extends StatelessWidget {const XXX({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(......localizationsDelegates: [...LiveKitLocalizations.localizationsDelegates,// Add localization delegates for te_beauty_kit module...TEBeautyKitLocalizations.localizationsDelegates,],......);}}
License authentication and beauty package type:// Import filesimport 'package:te_beauty_kit/te_beauty_kit.dart';// Initialize Tencent BeautyTUIBeautyKit.instance.init("YOUR_LICENSE_URL", "YOUR_LICENSE_KEY", BeautyLevel.S1_07);
BeautyLevel options (correspond to the Tencent Effects SDK packages you have purchased):A1_00 A1_01 A1_02 A1_03 A1_04 A1_05 A1_06S1_00 S1_01 S1_02 S1_03 S1_04 S1_05 S1_06 S1_07
TencentEffect/te_sub_spec configuration.LicenseUrl and LicenseKey are bound to the correct package, confirm that the selected BeautyLevel matches the License, and make sure your application's applicationId matches the package name used when applying for the License.フィードバック