UGSV Enterprise Edition Migration Guide
UGSV Enterprise Edition has been discontinued, and its beauty filter module has been decoupled to form Tencent Effect SDK. Tencent Effect SDK has more natural beautification effects, more powerful features, and more flexible integration methods. This document describes how to migrate from UGSV Enterprise Edition to Tencent Effect SDK.
Notes
- Modify the version number of the
glide
library in thexmagic
module to make it the same as the actual version number. - Modify the earliest version number in the
xmagic
module to make it the same as the actual version number.
Integration steps
Step 1. Decompress the demo project
- Download the UGSV demo which has integrated the Tencent Effect SDK. This demo is built based on the Tencent Effect SDK S1-04 edition.
- Replace the SDK files in the demo with the files for the SDK you actually use. Specifically, follow the steps below:
- Replace the
.aar
file in thelibs
directory of theXmagic
module with the.aar
file inlibs
of your SDK. - Replace all the files in
../src/main/assets
of theXmagic
module with those inassets/
of your SDK. If there are files in theMotionRes
folder of your SDK package, also copy them to the../src/main/assets
directory. - Replace all the
.so
files in../src/main/jniLibs
of theXmagic
module with the.so
files injniLibs
of your SDK package (you need to decompress the ZIP files in thejinLibs
folder to get the.so
files for arm64-v8a and armeabi-v7a).
- Replace the
- Import the
Xmagic
module in the demo into your project.
Step 2. Upgrade the SDK edition
Upgrade the SDK from Enterprise Edition to Pro Edition.
- Before replacement:
implementation 'com.tencent.liteav:LiteAVSDK_Enterprise:latest.release'
- After replacement:
implementation 'com.tencent.liteav:LiteAVSDK_Professional:latest.release'
Step 3. Set the beauty filter license
Call the
oncreate
method inapplication
in the project as follows:XMagicImpl.init(this); XMagicImpl.checkAuth(null);
Replace the content in the
XMagicImpl
class with your obtained Tencent Effect SDK license URL and key.
Step 4. Implement the code
Take the UGSV recording page TCVideoRecordActivity.java
as an example:
Add the following variable code to the
TCVideoRecordActivity.java
class:private XMagicImpl mXMagic; private int isPause = 0;// 0: not paused; 1: paused; 2: pausing; 3: to be terminated
Add the following code after the
onCreate
method in theTCVideoRecordActivity.java
class:TXUGCRecord instance = TXUGCRecord.getInstance(this); instance.setVideoProcessListener(new TXUGCRecord.VideoCustomProcessListener() { @Override public int onTextureCustomProcess(int textureId, int width, int height) { if (isPause == 0 && mXMagic != null) { return mXMagic.process(textureId, width, height); } return 0; } @Override public void onDetectFacePoints(float[] floats) { } @Override public void onTextureDestroyed() { if (Looper.getMainLooper() != Looper.myLooper()) { // Not the main thread if (isPause == 1) { isPause = 2; if (mXMagic != null) { mXMagic.onDestroy(); } initXMagic(); isPause = 0; } else if (isPause == 3) { if (mXMagic != null) { mXMagic.onDestroy(); } } } } }); XMagicImpl.checkAuth((errorCode, msg) -> { if (errorCode == TELicenseCheck.ERROR_OK) { loadXmagicRes(); } else { TXCLog.e("TAG", "Authentication failed. Check the authentication URL and key" + errorCode + " " + msg); } });
Add the following code to the
onStop
method:isPause = 1; if (mXMagic != null) { mXMagic.onPause(); }
Add the following code to the
onDestroy
method:isPause = 3; XmagicPanelDataManager.getInstance().clearData();
Add the following code at the beginning of the
onActivityResult
method:if (mXMagic != null) { mXMagic.onActivityResult(requestCode, resultCode, data); }
Add the following two methods to the end of this class:
private void loadXmagicRes() { if (XMagicImpl.isLoadedRes) { XmagicResParser.parseRes(getApplicationContext()); initXMagic(); return; } new Thread(() -> { XmagicResParser.setResPath(new File(getFilesDir(), "xmagic").getAbsolutePath()); XmagicResParser.copyRes(getApplicationContext()); XmagicResParser.parseRes(getApplicationContext()); XMagicImpl.isLoadedRes = true; new Handler(Looper.getMainLooper()).post(() -> { initXMagic(); }); }).start(); } /**
- Initialize the beauty filter SDK
- /
private void initXMagic() {
if (mXMagic == null) {}else {mXMagic = <span class="hljs-keyword">new</span> XMagicImpl(<span class="hljs-keyword">this</span>, mUGCKitVideoRecord.getBeautyPanel());
}mXMagic.onResume();
}
Step 5. Modify other classes
- Change the
mBeautyPanel
type in theAbsVideoRecordUI
class to theRelativeLayout
type and the response type of thegetBeautyPanel()
method toRelativeLayout
. You also need to modify the corresponding XML configuration to comment out the code that reports errors. - Comment out the code that reports errors in the
UGCKitVideoRecord
class. - Modify the code in the
ScrollFilterView
class to delete themBeautyPanel
variable and comment out the code that reports errors.
Step 6. Delete the dependencies on the beautysettingkit
module
Delete the dependencies on the beautysettingkit
module in the build.gradle
file in the ugckit
module and compile the project to comment out the code that report errors.