tencent cloud

文档反馈

最后更新时间:2024-04-09 11:41:07

    功能说明

    TEBeautyKit 是腾讯特效美颜模块的 UI 面板库,用于客户快速方便的使用和管理美颜功能,效果如下图。
    
    
    

    如何集成

    注意
    此库只支持腾讯特效 SDK V3.5.0及以上版本。
    在集成此库之前需要按照 独立集成腾讯特效 中集成特效 SDK。

    第一步: 添加依赖库

    方式一:Maven 远程依赖

    在 dependencies 中添加 TEBeautyKit 库的依赖:
    dependencies{
    ...
    implementation 'com.tencent.mediacloud:TEBeautyKit:版本号'
    }

    方式二:aar 本地依赖

    下载 aar 文件 (下载之后是一个 zip 文件,解压即可得到 aar 文件)
    添加下载的 tebeautykit-xxxx.aar 文件到 app 工程 libs 目录下
    打开 app 模块的 build.gradle 添加依赖引用:
    dependencies{
    ...
    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar']) //添加 *.aar
    }
    注意
    对于方式一和方式二都需要再添加如下依赖:
    dependencies{
    implementation 'com.google.code.gson:gson:2.8.2'
    implementation 'com.squareup.okhttp3:okhttp:3.9.0'
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    }

    第二步: 添加面板 json 文件

    下载 面板配置文件 并解压,文件包含对 美颜、美体、滤镜、动效贴纸和分割属性的配置,客户可以根据自己的套餐选择 json 文件,放置在工程中的assets/beauty_panel文件夹下(panel_icon 也需要放置在此文件夹中)。
    
    
    
    下载的压缩包中包含如上图文件,下表对各个文件进行说明:
    文件
    说明
    beauty_A1_00.json
    如果您的套餐是A1-00套餐,美颜属性就使用此配置文件,可以删除beauty_A1_03.json、beauty_A1.json、beauty_S1.json 配置文件。
    beauty_A1_03.json
    如果您的套餐是A1-03套餐,美颜属性就使用此配置文件,可以删除beauty_A1_00.json、beauty_A1.json、beauty_S1.json 配置文件。
    beauty_A1.json
    如果您的套餐是A1-01 /A1-02/ A1-04/ A1-05/ A1-06套餐,美颜属性就使用此配置文件,可以删除beauty_A1_00.json、beauty_A1_03.json、beauty_S1.json 配置文件。
    beauty_body..json
    如果您的套餐中没有美体功能则删除此文件。
    beauty_S1.json
    如果您的套餐是S1-00/S1-01/S1-02/S1-03/S1-04/S1-07套餐,则需要添加此配置文件,删除beauty_A1_00.json、beauty_A1.json、beauty_A3.json
    lut.json
    如果您的套餐中包含滤镜功能,则添加此配置文件,注意:由于不同客户使用的滤镜素材不一样,所以客户在下载之后,可以按照 json 结构进行自行配置(可参考 json 文件结构说明),删除默认配置。
    makeup.json
    如果您的套餐包含风格整妆,添加此文件, 注意:由于不同客户使用的风格整妆素材不一样,所以客户在下载之后,可以按照 json 结构进行自行配置(可参见 json 文件结构说明),删除默认配置。
    motions.json
    如果您的套餐包含动效贴纸,添加此文件。注意:由于不同客户使用的动效贴纸素材不一样,所以客户在下载之后,可以按照 json 结构进行自行配置(可参见 json 文件结构说明),删除默认配置。
    panel_icon
    此文件夹中用于存放json文件中配置的图片,必须添加。
    segmentation.json
    如果您的套餐包含分割功能,添加此文件。注意:由于不同客户使用的分割素材不一样,所以客户在下载之后,可以按照 json 结构进行自行配置(可参见 json 文件结构说明),删除默认配置。

    如何使用

    第一步:设置路径

    TEBeautyKit.setResPath((new File(getFilesDir(), "xmagic_dir").getAbsolutePath()));

    第二步:设置面板 JSON 文件

    设置 步骤一 步骤中添加到您工程中的 JSON 文件路径,如果没有的可以设置 null。
    TEUIConfig.getInstance().setTEPanelViewRes("beauty_panel/beauty.json", null, "beauty_panel/lut.json", "beauty_panel/motions.json", "beauty_panel/makeup.json", "beauty_panel/segmentation.json");

    第三步:复制美颜资源

    将美颜资源复制到 如何使用下第一步 中设置的路径下,一个版本只需要成功复制一次
    new Thread(() -> { boolean result = TEBeautyKit.copyRes(MainActivity.this.getApplicationContext()); runOnUiThread(() -> { if (result) { saveCopyData(); } teProgressDialog.dismiss(); checkLicense(); }); }).start();

    第四步:鉴权

    TEBeautyKit.setTELicense(this.getApplicationContext(),LicenseConstant.mXMagicLicenceUrl,LicenseConstant.mXMagicKey, (i, s) -> { if (i == LicenseConstant.AUTH_STATE_SUCCEED) { Intent intent = new Intent(MainActivity.this, ThirdBeautyActivity.class); startActivity(intent); } else { Log.e(TAG, "te license check is failed,please checked "); } });

    第五步:添加面板

    private void initBeautyPanelView() { RelativeLayout panelLayout = findViewById(R.id.live_pusher_bp_beauty_panel); this.tePanelView = new TEPanelView(this); if (lastParamList != null) { //用于恢复美颜上次效果 this.tePanelView.setLastParamList(lastParamList); } this.tePanelView.showView(this); panelLayout.addView(this.tePanelView); }

    第六步:创建美颜

    /** * 初始化美颜SDK */ private void initBeautyApi() { TEBeautyKit.create(ThirdBeautyActivity.this.getApplicationContext(), false, new TEBeautyKit.OnInitListener() {
    @Override
    public void onInitResult(TEBeautyKit api) {
    beautyKit = api;
    beautyKit.setTipsListener(new XmagicApi.XmagicTipsListener() {
    @Override
    public void tipsNeedShow(String tips, String tipsIcon, int type, int duration) {
    showTips(tips, tipsIcon, type, duration);
    }
    
    @Override
    public void tipsNeedHide(String tips, String tipsIcon, int type) {
    }
    });
    tePanelView.setupWithTEBeautyKit(beautyKit);
    }
    }); }

    第七部:使用美颜

    这里使用美颜在 trtc 中的例子进行展示,trtc 会将摄像头数据回到到 onProcessVideoFrame 方法中,美颜在此方法中进行处理。
    private void setProcessListener() { //1. 设置 TRTCVideoFrameListener 回调, 详见API说明文档 {https://liteav.sdk.qcloud.com/doc/api/zh-cn/group__TRTCCloud__android.html#a0b565dc8c77df7fb826f0c45d8ad2d85} mTRTCCloud.setLocalVideoProcessListener(TRTCCloudDef.TRTC_VIDEO_PIXEL_FORMAT_Texture_2D, TRTCCloudDef.TRTC_VIDEO_BUFFER_TYPE_TEXTURE, new TRTCCloudListener.TRTCVideoFrameListener() { @Override public void onGLContextCreated() { //2. GLContext 创建 Log.e(TAG, "onGLContextCreated"); initBeautyApi(); } @Override public int onProcessVideoFrame(TRTCCloudDef.TRTCVideoFrame srcFrame, TRTCCloudDef.TRTCVideoFrame dstFrame) { if (beautyKit != null) { dstFrame.texture.textureId = beautyKit.process(srcFrame.texture.textureId, srcFrame.width, srcFrame.height); } else { dstFrame.texture.textureId = srcFrame.texture.textureId; } return 0; } @Override public void onGLContextDestory() { //4. GLContext 销毁 Log.e(TAG, "onGLContextDestroy"); if (beautyKit != null) { beautyKit.onDestroy();
    beautyKit = null; } } }); }

    第八步:销毁美颜 注意:需要在 GL 线程销毁

    public void onGLContextDestory() { //4. GLContext 销毁 Log.e(TAG, "onGLContextDestroy"); if (beautyKit != null) { beautyKit.onDestroy();
    beautyKit = null; } }

    第九步:恢复声音

    /** * 用于恢复贴纸中的声音 * 恢复陀螺仪传感器,一般在Activity的onResume方法中调用 */ public void onResume()

    第十步:暂停声音

    /** * 用于暂停贴纸中的声音 * 暂停陀螺仪传感器,一般在Activity的onPause方法中调用 */ public void onPause()

    附录

    面板 JSON 文件说明

    美颜、美体 。
    
    
    
    字段
    说明
    displayName
    中文名称
    displayNameEn
    英文名称
    icon
    图片地址,支持设置本地图片和网络图片,本地图片支持 assets 资源和 SD 资源,assets 图片如上图所示,SD 卡图片设置图片全路径,网络图片设置对应的 http 链接
    sdkParam
    美颜 SDK 需要用到的属性,共包含四个属性,可参考美颜参数表
    effectName
    美颜属性 key,参考属性参数表
    effectValue
    设置属性强度,参考属性参数表
    resourcePath
    设置资源路径,参考属性参数表
    extraInfo
    设置其他信息,参考属性参数表
    滤镜、动效贴纸、分割 。
    
    
    
    由于滤镜和动效贴纸、分割的配置基本一致,所以此处用滤镜的JSON进行说明,这里新增了downloadPath和resourceUri字段。
    字段
    说明
    downloadPath
    如果您的滤镜素材是网络下载,那么这里配置的是您素材下载后在本地的存放位置,这里是相对路径,全路径是您在 步骤一 +此处设置的路径
    resourceUri
    如果您的素材是需要通过网络下载的,那么这里配置网络地址,如上图第三个红框,如果您的滤镜素材在本地,则按照上图配置对应的本地地址。
    风格整妆
    
    
    
    在风格整妆中增加了 extraInfo下的 makeupLutStrength字段,此字段用于调节风格整妆素材中滤镜的强度(如果此风格整妆素材支持调节滤镜强度就进行配置),此字段可参考美颜参数表。

    TEBeautyKit 方法说明

    //异步创建TEBeautyKit对象
    public static void create(@NonNull Context context, @NonNull OnInitListener initListener)
    
    //isEnableHighPerformance 是否开启高性能模式,
    //高性能模式开启后,美颜占用的系统CPU/GPU资源更少,可减少手机的发热和卡顿现象,更适合低端机长时间使用。
    //但请注意:开启高性能模式后,以下美颜项将不可用:
    //1.眼部:眼宽、眼高、祛眼袋
    //2.眉毛:角度、距离、高度、长度、粗细、眉峰
    //3.嘴部:微笑唇
    //4.面部:瘦脸(自然,女神,英俊),收下颌,祛皱、祛法令纹。建议用“脸型”实现综合大眼瘦脸效果
    public static void create(@NonNull Context context, boolean isEnableHighPerformance, @NonNull OnInitListener initListener)
    
    //TEBeautyKit的构造方法,用于同步创建TEBeautyKit对象
    public TEBeautyKit(Context context)
    
    /** * @param context 应用上下文 * @param isEnableHighPerformance 是否开启高性能模式 */ public TEBeautyKit(Context context, boolean isEnableHighPerformance)
    
    /** * 设置静音 * * @param isMute true 表示静音 */ public void setMute(boolean isMute)
    
    /** * 如果是对图片进行美颜处理,需要调用此方法设置数据源的类型,分别为相机数据源和图片数据源: * 相机数据源:XmagicApi.PROCESS_TYPE_CAMERA_STREAM 图片数据源:XmagicApi.PROCESS_TYPE_PICTURE_DATA。 * @param type 默认是视频流类型 */ public void setBeautyStreamType(int type)
    
    /** * 设置某个特性的开或关 * * @param featureName 取值见 XmagicConstant.FeatureName * @param enable true表示开启,false表示关闭 */ public void setFeatureEnableDisable(String featureName, boolean enable)
    
    /** * 对图片进行美颜处理 * * @param bitmap * @param needReset * @return */ public Bitmap process(Bitmap bitmap, boolean needReset)
    
    /** * 处理 视频/摄像头 每一帧数据 * * @param textureId 纹理id,此纹理需要的是纹理类型为GL_TEXTURE_2D,纹理像素格式为RGBA * @param width 纹理宽度 * @param height 纹理高度 * @return 处理后的纹理ID */ public int process(int textureId, int width, int height)
    
    /** * 更新美颜属性 * * @param paramList */ public void setEffectList(List<TEUIProperty.TESDKParam> paramList)
    
    /** * 更新美颜属性 * * @param teParam */ public void setEffect(TEUIProperty.TESDKParam teParam)
    
    /** * 开启或关闭增强模式 * * @param enableEnhancedMode true 表示开启增强模式 false 表示关闭增强模式 * @return 返回true表示状态发生改变了,false 表示状态没有改变 */ public boolean enableEnhancedMode(boolean enableEnhancedMode)
    
    /** * 获取当前生效的美颜属性列表字符串。 * 客户可以将导出的字符串进行本地保存,在下次创建TEPanelView对象后调用setLastParamList方法进行设置。 * @return */ public String exportInUseSDKParam()
    
    /** * 用于恢复贴纸中的声音 * 恢复陀螺仪传感器 */ public void onResume()
    
    /** * 用于暂停贴纸中的声音 * 暂停陀螺仪传感器 */ public void onPause()
    
    /** * 销毁美颜 * 注意:必须在gl线程调用此方法 */ public void onDestroy()
    
    /** * 设置事件监听,用于监听 手机方向事件,用于adapter * @param listener 事件监听回调 */ public void setEventListener(EventListener listener)
    
    /** * 设置setAIDataListener 回调 * * @param aiDataListener */ public void setAIDataListener(XmagicApi.XmagicAIDataListener aiDataListener)
    
    /** * 设置动效提示语回调函数,用于将提示语展示到前端页面上。 * * @param tipsListener */ public void setTipsListener(XmagicApi.XmagicTipsListener tipsListener)
    
    /** * 截取当前纹理上的画面 * * @param callback */ public void exportCurrentTexture(XmagicApi.ExportTextureCallback callback)
    
    /** * 设置纹理逆时针旋转的度数。 * 主要作用:用于SDK内部对纹理进行旋转,旋转对应角度之后,让人头朝上,这样SDK内部就可以识别人脸 * 默认情况下SDK内部会使用sensor传感器获取需要旋转的角度 * * @param orientation 取值只有0、90、180、270 */ public void setImageOrientation(TEImageOrientation orientation)
    
    /** * 检测当前设备是否支持此素材 * * @param motionResPath 素材文件的路径 * @return */ public boolean isDeviceSupport(String motionResPath)
    
    /** * 获取美颜特效的开关状态 * * @return EffectState */ public EffectState getEffectState()
    
    /** * 设置是否开启美颜 * * @param effectState ENABLED, 表示开启 DISABLED 表示关闭 */ public void setEffectState(EffectState effectState)
    
    /** * 设置增强模式的策略实现类,如果不设置,则使用默认的实现 * * @param teParamEnhancingStrategy 增强模式处理类 */ public void setParamEnhancingStrategy(TEParamEnhancingStrategy teParamEnhancingStrategy)
    
    
    
    //静态方法如下
    
    /** * 设置美颜资源存放的路径 * * @param resPath */ public static void setResPath(String resPath)
    
    /** * 从 apk 的 assets 解压资源文件到指定路径, 需要先设置路径: {@link #setResPath(String)} <br> * 首次安装 App, 或 App 升级后调用一次即可. * copy xmagic resource from assets to local path */ public static boolean copyRes(Context context)
    
    /** * 进行美颜授权检验 * 注意:在使用此方法时,如果不设置回调接口,将不进行鉴权(只会从网络下载鉴权信息), * 所以可以参考demo 在application中调用时不设置回调,但是在使用TEBeautyKit对象之前再次调用此方法(设置回调接口)鉴权 * @param context 应用上下文 * @param licenseKey 在平台申请的licenseKey * @param licenseUrl 在平台申请的licenseUrl * @param teLicenseCheckListener 鉴权回调接口 */ public static void setTELicense(Context context, String licenseKey, String licenseUrl, TELicenseCheck.TELicenseCheckListener teLicenseCheckListener)

    TEUIConfig 说明

    修改面板颜色
    全局修改:通过TEUIConfig.getInstance()获取到对象之后可以通过修改如下字段来调整面板颜色
    局部修改:通过new TEUIConfig对象,然后修改如下字段来调整面板颜色,使用TEPanelView.updateUIConfig方法更新面板样式。
    @ColorInt public int panelBackgroundColor = 0x66000000; //默认背景色 @ColorInt public int panelDividerColor = 0x19FFFFFF; //分割线颜色 @ColorInt public int panelItemCheckedColor = 0xFF006EFF; //选中项颜色 @ColorInt public int textColor = 0x99FFFFFF; //文本颜色 @ColorInt public int textCheckedColor = 0xFFFFFFFF; //文本选中颜色 @ColorInt public int seekBarProgressColor = 0xFF006EFF; //进度条颜色
    配置面板的 JSON 文件
    /** * 设置美颜面板的JSON文件路径 * @param beauty 美颜属性的JSON文件路径,如果没有则设置为null * @param beautyBody 美体属性JSON文件路径,如果没有则设置为null * @param lut 滤镜属性JSON文件路径,如果没有则设置为null * @param motion 动效贴纸属性JSON文件路径,如果没有则设置为null * @param makeup 风格整妆属性JSON文件路径,如果没有则设置为null * @param segmentation 分割属性JSON文件路径,如果没有则设置为null */ public void setTEPanelViewRes(String beauty, String beautyBody, String lut, String motion, String makeup, String segmentation)
    更新面板语言
    //当客户程序监听到系统字体修改后,可以调用此方法,目前面板只支持中文和英文。
    public void setSystemLocal(Locale locale)

    TEPanelView 说明

    /** * 用于设置美颜上次效果的数据,目的是将美颜面板还原到上次的状态, * 注意:此方法需要在 {@link #showView(TEPanelViewCallback tePanelViewCallback)}} 方法之前使用 * * @param lastParamList 美颜数据,可以通过 {@link TEBeautyKit#exportInUseSDKParam()} ()}}方法获取,然后存储,在下次启动美颜的时候传入此字符串即可 */ void setLastParamList(String lastParamList); /** * 展示美颜面板 * @param tePanelViewCallback 面板事件回调接口 */ void showView(TEPanelViewCallback tePanelViewCallback); /** * 绑定TEBeautyKit对象,当用户点击item的时候,面板会直接调用TEBeautyKit的方法进行属性设置 * @param beautyKit TEBeautyKit对象 */ void setupWithTEBeautyKit(TEBeautyKit beautyKit);
    
    /** * 设置选中 自定义分割或者绿幕的item ,因为绿幕或者自定义分割按钮在点击之后是跳转到相册, * 只有用户选择了图片或者视频之后才会选中,如果在这个过程中用户取消了操作就不能选中对应的item * * @param uiProperty */ void checkPanelViewItem(TEUIProperty uiProperty);
    
    /** * 设置当前面板的UI配置 * @param uiConfig */ void updateUIConfig(TEUIConfig uiConfig);
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持