You need to enable JavaScript to run this app.
音视频云端一体解决方案

音视频云端一体解决方案

复制全文
互动直播场景
Android 接入
复制全文
Android 接入

本文介绍集成 veVOS 解决方案相关 SDK 的方法,根据文档提供的操作步骤进行配置,您可以将 veVOS 解决方案下的 SDK 集成到 Android App 工程中。

开发环境要求

  • Android 5.0 及以上系统。
  • armv7a、arm64 架构。

前提条件

  • 获取 ttsdk-ttlivepush_rtcttsdk-ttlivepull_rtceffectsdkRangersAppLog-Lite-cn版本号

操作步骤

Step 1:获取 License

veVOS 互动直播场景下,您需要获取视频直播 License、实时音视频(RTC)Licnese 和智能美化特效(CV)License。

产品对应功能模块获取方式
视频直播直播推流、直播拉流获取视频直播 License
实时音视频连麦请联系您的商务经理
智能美化特效贴纸特效、美化滤镜、人像智能、手势与人体检测等请联系您的商务经理

Step 2:配置 Maven 仓库

  1. 打开根目录下的 build.gradle。
  2. 定义 Maven 仓库。并配置仓库服务器的 URL。URL 为 https://artifact.bytedance.com/repository/Volcengine/。集成代码示例如下所示。
allprojects {
    repositories {
        google()
        mavenCentral()
        maven {
            url "https://artifact.bytedance.com/repository/Volcengine/" // volc public maven repo
        }
    }
}

apply from: 'https://ve-vos.volccdn.com/script/vevos-repo-rtc.gradle'
apply from: 'https://ve-vos.volccdn.com/script/vevos-repo-cv-ck.gradle'

Step 3:配置环境和依赖

  1. 打开主工程下的 build.gradle。
  2. 在 defaultConfig 中配置 App 使用的 CPU 架构。支持 armv7a 和 arm64 架构。
  3. 在依赖 dependencies 中添加 TTSDK 和 AppLog 的在线集成地址。
android {
   defaultConfig {
       ndk {
           //设置 SO 库架构,支持 armv7a 和 arm64 架构。
           abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
   }
}

dependencies {
    ......
    //最新版本号获取方式请参考[前提条件]章节
    
    //直播推流互动版本,例如,1.33.2.102.onekit
   implementation 'com.bytedanceapi:ttsdk-ttlivepush_rtc:x.x.x.x'
   
    //直播拉流互动版本,例如,1.33.2.102.onekit
   implementation 'com.bytedanceapi:ttsdk-ttlivepull_rtc:x.x.x.x'
   
    //智能美化特效
    implementation 'com.bytedance:effectsdk:xxxx'
    
    //日志上报 SDK,用于直播日志上传
    implementation 'com.bytedance.applog:RangersAppLog-Lite-global:xxxx'
   
    //添加第三方依赖。
   implementation 'commons-net:commons-net:3.6'
   
   // 开启 HTTPDNS 解析
    implementation 'com.squareup.okhttp3:okhttp:4.2.1'
}
  1. 单击 Sync Now 按钮同步 SDK,SDK 将自动下载集成到工程。如果出现集成失败,请检查您与 jcenter 仓库的网络连接。

Step 4:配置权限

在 AndroidManifest.xml 文件中声明应用间交互的权限。

<!-- 使用权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />

添加动态申请权限代码。

private boolean checkPermission(int request) {
        String permissions[] = new String[]{
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.CAMERA,
                Manifest.permission.RECORD_AUDIO,
                Manifest.permission.MODIFY_AUDIO_SETTINGS,
                Manifest.permission.INTERNET
        };
        List<String> permissionList = new ArrayList<>();
        for (String permission : permissions) {
            boolean granted = ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED;
            if (granted) continue;
            permissionList.add(permission);
        }
        if (permissionList.isEmpty()) return true;

        String permissionsToGrant[] = new String[permissionList.size()];
        permissionList.toArray(permissionsToGrant);
        ActivityCompat.requestPermissions(this, permissionsToGrant, request);
        return false;
}

Step 5:添加 License

拷贝 License 文件到工程目录下。例如下图所示,将 License2_test.lic 文件拷贝到 assets 目录下。

alt

Step 6:配置混淆规则

在 proguard-rules.pro 文件中,将 SDK 相关类加入不混淆名单。

//直播混淆规则
-keep class com.pandora.**{*;}
-keep class com.ss.**{*;} 
-keep class com.bytedance.**{*;}
-keep class com.pandora.ttlicense2.**{*;}
-keep class com.bytertc.**{*;}
-keep class log.**{*;}

//CV 混淆规则
-keep class com.bytedance.labcv.effectsdk.** {;}
-keep class com.bef.effectsdk.* {*;} 
-keep class com.bytedance.labcv.licenselibrary.** {*;}


Step 7:初始化 SDK

调用ENV.init初始化 TTSDK。

//TTSDK 环境初始化。
   Env.init(new Config.Builder()
   .setApplicationContext(sApplicationContext)
   .setAppID(填写申请的AppID);
   .setAppName(填写申请的应用名称)
   .setAppVersion(BuildConfig.VERSION_NAME) // 合法版本号应大于、等于 2 个分隔符,如:"1.3.2"
   .setAppChannel("veVOSLiveDemo")
   .setLicenseUri("assets:///license/live.lic")
   .setLicenseCallback(mLicenseCallback)//License 加载的状态回调
   .build());

//开启 License 模块 logcat 输出。建议排查问题时开启,发包时关闭。
//LicenseManager.turnOnLogcat(true);

//License 回调对象
LicenseManager.Callback mLicenseCallback =new LicenseManager.Callback() {
        @Override
        public void onLicenseLoadSuccess(@NonNull String licenseUri, @NonNull String licenseId) {
            licenseID = licenseId;//License ID,用于获取License的信息
        }

        @Override
        public void onLicenseLoadError(@NonNull String licenseUri, @NonNull Exception e, boolean retryAble) {
           
        }

        @Override
        public void onLicenseLoadRetry(@NonNull String licenseUri) {
           
        }

        @Override
        public void onLicenseUpdateSuccess(@NonNull String licenseUri, @NonNull String licenseId) {
          licenseID = licenseId;
        }

        @Override
        public void onLicenseUpdateError(@NonNull String licenseUri, @NonNull Exception e, boolean retryAble) {
           
        }

        @Override
        public void onLicenseUpdateRetry(@NonNull String licenseUri) {
          
        }
    };
    
//License 信息获取。
License license = LicenseManager.getInstance().getLicense(licenseID);//licenseID 从mLicenseCallback 回调函数中获取
if (license != null) {
    StringBuilder builder = new StringBuilder();
    builder.append("License id:" + license.getId()).append("\n")
           .append("License package:" + license.getPackageName()).append("\n")
           .append("License test:" + license.getType()).append("\n")
           .append("License version:" + license.getVersion()).append("\n");

    if (license.getModules() != null) {
        String names = "";
        for (License.Module module : license.getModules()) {
            names = "module name:" + module.getName() + ", start time:" +
            TimeUtil.format(module.getStartTime(), Times.YYYY_MM_DD_KK_MM_SS)
                    + ", expire time:" + TimeUtil.format(module.getExpireTime(), Times.YYYY_MM_DD_KK_MM_SS) + "\n";
            builder.append("License modules:" + names);
        }
    }
}

初始化详细的参数说明如下表所示。

参数类型说明
AppIdStringApp ID,必填,从控制台 SDK 管理获取。
AppNameString必填, App 英文名,从控制台 SDK 管理获取。
AppVersionString必填,App 版本号,使用 BuildConfig.VERSION_NAME,合法版本号应包含大于、等于 2 个分隔符,如:"1.3.2"
AppChannelString必填,渠道号;业务自定义,如:小应用商店 (xiaomi)、华为应用市场 (huawei) 等。
LicenseUriString必填,License 路径。

Step 8:日志上报

线上问题的排查和质量平台的数据展示都依赖 SDK 上报的日志,因此,日志上报功能默认开启。如有特殊的数据保密要求,您可以在初始化环境前,设置 Env.openAppLog(false),关闭日志上报。

Step 9:功能接入

实现连麦功能

最近更新时间:2025.11.19 17:30:29
这个页面对您有帮助吗?
有用
有用
无用
无用