腾讯云即时通信IMAndroid_AI解决方案_同尘科技
TUICallEngine 中提供了 getTRTCCloudInstance() 接口,可以通过该接口调用 TRTC 的高级特性 setLocalVideoProcessListener(),实现接入第三方美颜。本文将介绍如何在 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 美颜面板:
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 等目录及文件。
对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?