即时通信 IM Android(美颜特效)

TUICallEngine 中提供了 getTRTCCloudInstance() 接口,可以通过该接口调用 TRTC 的高级特性 setLocalVideoProcessListener(),实现接入第三方美颜。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

这篇会介绍如何在 TUICallKit 中接入 腾讯特效 SDK,其他第三方美颜接入方法类似,请结合第三方 SDK 文档进行接入。

一、接入准备

按照 腾讯特效 TRTC 接入指引,下载场景化 Demo 的 zip 包,按照文档替换资源,将 Xmagic 目录复制到自己的工程中,导入后的目录结构如下:

二、导入 Xmagic

1. 在工程根目录下找到 settings.gradle 文件,在其中增加如下代码,将 Xmagic 组件导入到你当前的项目中。

include ':Xmagic'

2. 在 tuicallkit 目录下找到 build.gradle 文件,并在其中增加如下代码,声明 tuicallkit 对新加入的 Xmagic 组件的依赖。

api project(':Xmagic')

3. 修改 Xmagic 目录下 build.gradle 中的 compileSdkVersion、minSdkVersion、TRTC SDK 版本、Glide 版本等与你的工程保持一致;依赖的 Xmagic SDK 版本为你的套餐包版本。

api 'com.tencent.liteav:LiteAVSDK_TRTC:11.1.0.13111'api 'com.github.bumptech.glide:glide:4.12.0'api 'com.tencent.mediacloud:TencentEffect_S1-04:3.0.0.13'

4. 修改 XMagicImpl.java 文件,替换自己的 authKey 和authLicenceUrl。

public static final String authKey = YOUR_LICENSE_KEY;public static final String authLicenceUrl = YOUR_LICENSE_URL;

三、初始化 Xmagic

Xmagic 提供了美颜面板供使用者调用,TUICallKit 集成的时候,可以在 BaseCallActivity 文件中增加布局,每次拉起通话界面时展示,也可以在显示出通话界面后以 Dialog 的形式展示,注意生命周期即可。可参考 腾讯特效 TRTC 接入指引 中 Demo ⼯程的 ThirdBeautyActivity 类。

1. 授权:

//鉴权注意事项及错误码详情,请参考 https://cloud.tencent.com/document/product/616/65891#.E6.AD.A5.E9.AA.A4.E4.B8.80.EF.BC.9A.E9.89.B4.E6.9D.83XMagicImpl.init(getApplicationContext());if (TUICallDefine.MediaType.Video.equals(TUICallingStatusManager.sharedInstance(getApplicationContext()).getMediaType())) { if (XmagicLoadAssetsView.isCopyedRes) { initXMagic(); return; } XMagicImpl.checkAuth((errorCode, msg) -> { if (errorCode == TELicenseCheck.ERROR_OK) { showLoadResourceView(); } else { Log.e("Xmagic", "please check url and key" + errorCode + " , " + msg); } }); }

2. 初始化素材:

private void showLoadResourceView() { if (XmagicLoadAssetsView.isCopyedRes) { XmagicResParser.parseRes(getApplicationContext()); initXMagic(); } else { loadAssetsView = new XmagicLoadAssetsView(this); loadAssetsView.setOnAssetsLoadFinishListener(() -> { XmagicResParser.parseRes(getApplicationContext()); initXMagic(); }); } }

四、设置纹理回调和添加美颜效果

//1. set TRTCVideoFrameListener, refer to:{https://liteav.sdk.qcloud.com/doc/api/zh-cn/group__TRTCCloud__android.html#a0b565dc8c77df7fb826f0c45d8ad2d85}TRTCCloud trtcCloud = TUICallEngine.createInstance(this).getTRTCCloudInstance();trtcCloud.setLocalVideoProcessListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, new TRTCCloudListener.TRTCVideoFrameListener() { @Override public void onGLContextCreated() { //2. GLContext created if (isGLContextCreated) { isGLContextCreated = false; } else { runOnUiThread(() -> initXMagic()); } } @Override public int onProcessVideoFrame(TRTCCloudDef.TRTCVideoFrame srcFrame, TRTCCloudDef.TRTCVideoFrame dstFrame) { //3. invoke xmagic module, more details refer to {https://liteav.sdk.qcloud.com/doc/api/zh-cn/group__TRTCCloudListener__android.html#a22afb08b2a1a18563c7be28c904b166a} if (mXMagic != null) { dstFrame.texture.textureId = mXMagic.process(srcFrame.texture.textureId, srcFrame.width, srcFrame.height); } return dstFrame.texture.textureId; } @Override public void onGLContextDestory() { //4. GLContext destroyed if (mXMagic != null) { mXMagic.onDestroy(); } }});

1. 布局中添加 SDK 美颜面板:

<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" />

2. 初始化面板:

mBeautyPanelView = findViewById(R.id.livepusher_bp_beauty_pannel); private void initXMagic() { if (mXMagic == null) { mXMagic = new XMagicImpl(this, mBeautyPanelView); }else { mXMagic.onResume(); } }

完成上述步骤后,即可在音视频通话中使用第三方美颜。

五、集成效果

下图是 TUICallKit 含 UI 组件集成腾讯特效 SDK 面板的效果:

六、集成 Xmagic 后,动效、美妆、分割下内容怎么为空?

请先检查套餐是否包含该特效;如果套餐包满足,请检查 /asset/下的资源文件是否包含 MotionRes/2dMotionRes 等目录及文件。

赞 (0)
上一篇 4天前
下一篇 4天前