tencent cloud

文档反馈

Android(3.3.0及以前)

最后更新时间:2024-02-02 17:59:18

    步骤一:解压 Demo 工程

    1. 下载集成了腾讯特效 TE 的 MLVB Demo 工程。本 Demo 基于腾讯特效 SDK S1-04 套餐构建。
    2. 替换资源。由于本 Demo 工程使用的 SDK 套餐未必与您实际的套餐一致,因此要将本 Demo 中的相关 SDK 文件替换为您实际使用的套餐的 SDK 文件。具体操作如下:
    删除 xmagic 模块中 libs 目录下的.aar文件,将 SDK 中 libs 目录下的.aar文件拷贝进 xmagic 模块中 libs 目录下。
    删除 xmagic 模块中 assets 目录下的所有文件,将 SDK 中的assets/目录下的全部资源拷贝到 xmagic 模块../src/main/assets目录下,如果 SDK 包中的 MotionRes 文件夹内有资源,将此文件夹也拷贝到../src/main/assets目录下 。
    删除 xmagic 模块中 jniLibs 目录下的所有 .so 文件,在 SDK 包内的 jniLibs 中找到对应的 .so 文件(由于 SDK 中 jinLibs 文件夹下的 arm64-v8a 和 armeabi-v7a 的.so文件在压缩包中,所以需要先解压),拷贝到 xmagic 模块中的../src/main/jniLibs目录下。
    3. 将 Demo ⼯程中的 xmagic 模块引⼊到实际项⽬⼯程中。

    步骤二:打开 app 模块的 build.gradle

    1. 将 applicationId 修改成与申请的测试授权⼀致的包名。
    2. 添加 gson 依赖设置。
    configurations {
    all*.exclude group: 'com.google.code.gson'
    }

    步骤三:SDK 接口集成

    可参考 Demo ⼯程的 ThirdBeautyActivity 类。
    1. 授权
    //鉴权注意事项及错误码详情,请参考 https://www.tencentcloud.com/document/product/616/65891?from_cn_redirect=1#.E6.AD.A5.E9.AA.A4.E4.B8.80.EF.BC.9A.E9.89.B4.E6.9D.83
    XMagicImpl.checkAuth((errorCode, msg) -> {
    if (errorCode == TELicenseCheck.ERROR_OK) {
    showLoadResourceView();
    } else {
    TXCLog.e(TAG, "鉴权失败,请检查鉴权url和key" + errorCode + " " + msg);
    }
    });
    2. 初始化素材
    private void showLoadResourceView() {
    if (XmagicLoadAssetsView.isCopyedRes) {
    XmagicResParser.parseRes(getApplicationContext());
    initXMagic();
    } else {
    XmagicLoadAssetsView loadAssetsView = new XmagicLoadAssetsView(this);
    loadAssetsView.setOnAssetsLoadFinishListener(() -> {
    XmagicResParser.parseRes(getApplicationContext());
    initXMagic();
    });
    }
    }
    3. 启动推流设置
    String userId = String.valueOf(new Random().nextInt(10000));
    String pushUrl = AddressUtils.generatePushUrl(streamId, userId, 0);
    mLivePusher = new V2TXLivePusherImpl(this, V2TXLiveDef.V2TXLiveMode.TXLiveMode_RTC);
    mLivePusher.enableCustomVideoProcess(true, V2TXLivePixelFormatTexture2D, V2TXLiveBufferTypeTexture);
    mLivePusher.setObserver(new V2TXLivePusherObserver() {
    @Override
    public void onGLContextCreated() {
    }
    
    @Override
    public int onProcessVideoFrame(V2TXLiveDef.V2TXLiveVideoFrame srcFrame, V2TXLiveDef.V2TXLiveVideoFrame dstFrame) {
    if (mXMagic != null) {
    dstFrame.texture.textureId = mXMagic.process(srcFrame.texture.textureId, srcFrame.width, srcFrame.height);
    }
    return srcFrame.texture.textureId;
    }
    
    @Override
    public void onGLContextDestroyed() {
    if (mXMagic != null) {
    mXMagic.onDestroy();
    }
    }
    });
    mLivePusher.setRenderView(mPushRenderView);
    mLivePusher.startCamera(true);
    int ret = mLivePusher.startPush(pushUrl);
    mLivePusher.startMicrophone();
    4. 将 textureId 传入到 SDK 内做渲染处理: 在 V2TXLivePusherObserver 接口的 onProcessVideoFrame(V2TXLiveDef.V2TXLiveVideoFrame srcFrame, V2TXLiveDef.V2TXLiveVideoFrame dstFrame) 方法中添加如下代码。
    if (mXMagic != null) {
    dstFrame.texture.textureId = mXMagic.process(srcFrame.texture.textureId, srcFrame.width,srcFrame.height);
    }
    return srcFrame.texture.textureId;
    5. 暂停/销毁 SDKonPause()用于暂停美颜效果,可以在 Activity/Fragment 生命周期方法中执行, onDestroy 方法需要在 GL 线程调用(可以在 onTextureDestroyed 方法中调用 XMagicImpl 对象的onDestroy()) ,更多使用请参考 Demo。
    mXMagic.onPause(); //暂停,与Activity的onPause方法绑定
    mXMagic.onDestroy(); // //销毁,需要在GL线程中调用
    6. 布局中添加 SDK 美颜面板
    <RelativeLayout
    android:id="@+id/livepusher_bp_beauty_pannel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/ll_edit_info" />
    7. 初始化面板
    private void initXMagic() {
    if (mXMagic == null) {
    mXMagic = new XMagicImpl(this, mBeautyPanelView);
    }else {
    mXMagic.onResume();
    }
    }
    具体操作请参见 Demo⼯程的ThirdBeautyActivity.initXMagic();⽅法。
    联系我们

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

    技术支持

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

    7x24 电话支持