Step 1. Replace resources
1. Download the TRTC demo which has integrated the Tencent Effect SDK. This demo is built based on the Tencent Effect SDK S1-04 edition. 2. 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 the libs
directory of the Xmagic
module with the .aar
file in libs
of your SDK.
Replace all the files in ../src/main/assets
of the Xmagic
module with those in assets/
of your SDK. If there are files in the MotionRes
folder of your SDK package, also copy them to the ../src/main/assets
directory.
Replace all the .so
files in ../src/main/jniLibs
of the Xmagic
module with the .so
files in jniLibs
of your SDK package (you need to decompress the ZIP files in the jinLibs
folder to get the .so
files for arm64-v8a and armeabi-v7a).
3. Import the Xmagic
module in the demo into your project.
Step 2. Open build.gradle
in app
and do the following:
1. Set applicationId
to the package name bound to the trial license.
2. Add Gson dependency settings.
configurations{
all*.exclude group:'com.google.code.gson'
}
Step 3. Integrate the SDK APIs
You can refer to the ThirdBeautyActivity
class of the demo.
1. Authorize:
XMagicImpl.checkAuth((errorCode, msg) -> {
if (errorCode == TELicenseCheck.ERROR_OK) {
showLoadResourceView();
} else {
TXCLog.e(TAG, "Authentication failed. Check the authentication URL and key" + errorCode + " " + msg);
}
});
2. Initialize the material:
private void showLoadResourceView() {
if (XmagicLoadAssetsView.isCopyedRes) {
XmagicResParser.parseRes(getApplicationContext());
initXMagic();
} else {
loadAssetsView = new XmagicLoadAssetsView(this);
loadAssetsView.setOnAssetsLoadFinishListener(() -> {
XmagicResParser.parseRes(getApplicationContext());
initXMagic();
});
}
}
3. Enable push settings:
mTRTCCloud.setLocalVideoProcessListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, new TRTCCloudListener.TRTCVideoFrameListener() {
@Override
public void onGLContextCreated() {
}
@Override
public int onProcessVideoFrame(TRTCCloudDef.TRTCVideoFrame srcFrame, TRTCCloudDef.TRTCVideoFrame dstFrame) {
}
@Override
public void onGLContextDestory() {
}
});
4. Pass textureId
to the SDK for rendering:
In the onProcessVideoFrame(TRTCCloudDef.TRTCVideoFrame srcFrame, TRTCCloudDef.TRTCVideoFrame dstFrame)
method of the TRTCVideoFrameListener
API, add the following code:
dstFrame.texture.textureId = mXMagic.process(srcFrame.texture.textureId, srcFrame.width, srcFrame.height);
5. Pause/Terminate the SDK:
onPause()
is used to pause beauty filter effects, which can be implemented in the Activity/Fragment
method. The onDestroy
method needs to be called in the GL thread (you can call onDestroy()
of the XMagicImpl
object in onTextureDestroyed
). For more information, see the demo.
mXMagic.onPause();
mXMagic.onDestroy();
6. Add the SDK beauty filter panel to the layout:
<RelativeLayout
android:layout_above="@+id/ll_edit_info"
android:id="@+id/livepusher_bp_beauty_pannel"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
7. Initialize the panel:
private void initXMagic() {
if (mXMagic == null) {
mXMagic = new XMagicImpl(this, mBeautyPanelView);
}else {
mXMagic.onResume();
}
}
See the ThirdBeautyActivity.initXMagic();
method of the demo for details.
Was this page helpful?