You need to enable JavaScript to run this app.
企业直播

企业直播

复制全文
Android 观播 SDK
集成 Android 观播 SDK
复制全文
集成 Android 观播 SDK

观播 SDK 提供看直播、发评论、参与抽奖等功能。本文介绍如何将观播 SDK 集成到您的 Android App 中。

注意

1.49.0 - 1.54.1 版本的 Android 观播 SDK 在日志事件上报方面存在问题。为避免影响线上问题排查,请将 1.49.0 - 1.54.1 版本升级到 1.54.2 及以上版本。

前提条件

  • 您已开通尊享版套餐。详见计费说明
  • 安装 Android Studio,建议使用 4.0 及以上版本。
  • Android 5.0(API 级别 21)及以上版本的真机。
  • CPU 架构:armeabi-v7a 或 arm64-v8a。
  • 仅支持 AndroidX 库。
  • minSdkVersion:21(Android 5.0)及以上。
  • targetSdkVersion:minSdkVersion 及以上、35(Android 15)及以下。
  • JDK version:1.8.0 及以上。
  • 获取直播 License 文件和点播 License 文件、创建 SDK 应用时填写的 App 英文名称以及应用创建后生成的 App ID。详见获取 License

集成步骤

步骤一:配置 Gradle

  1. 增加以下配置到项目根目录下的 build.gradle 文件。

    buildscript { 
        repositories { 
            google() 
            mavenCentral() 
        } 
        dependencies { 
            // 推荐使用 3.6.3 或更高的版本
            classpath 'com.android.tools.build:gradle:3.6.3' 
        } 
    } 
     
    allprojects { 
        repositories { 
            google() 
            mavenCentral() 
            jcenter() 
            maven {
                url "https://artifact.bytedance.com/repository/Volcengine/" // 火山引擎的官方仓库地址
            }
            maven {
                url "https://artifact.bytedance.com/repository/thrall_base/" // 推流仓库地址
                credentials {
                    username = 'veVOS' // 访问推流仓库的用户名,无需更改
                    password = 'KUC9TpKrqbryrxHz' // 访问推流仓库的密码,无需更改
                }
                authentication {
                    digest(BasicAuthentication)
                }
            }
        } 
    } 
    
  2. 增加以下配置到 app 目录下的 build.gradle 文件。

    android { 
        defaultConfig { 
            minSdkVersion 21 
            ndk { 
                abiFilters "armeabi-v7a","arm64-v8a" 
            } 
        } 
     
     
       // 开启数据绑定
        buildFeatures {
            dataBinding true
        }
    } 
     
    // 引入所需依赖
    dependencies { 
     
        // 引入观播 SDK。如不需要观众连麦和超低延时直播功能,则使用 implementation "com.bytedance.bdlive:bdlive-pull:1.65.1.chinaLite" 引入不包含观众连麦和超低延时直播功能的观播 SDK
        implementation "com.bytedance.bdlive:bdlive-pull:1.65.1.chinaFull"
     
         // 引入 Glide 图片库。如果项目已经引入 Glide 图片库,请查看 Glide 版本兼容性章节确保 Glide 版本兼容
        implementation "com.github.bumptech.glide:glide:4.15.1"
    } 
    

    说明

    自 SDK 1.54.0 版本开始,

    • 引入包含所有功能的观播 SDK 时,SDK 的版本后缀从 VersionNumber.external 变更为 VersionNumber.chinaFull。例如,使用 com.bytedance.bdlive:bdlive-pull:1.53.0.external 引入包含所有功能的观播 SDK 1.53.0 版本,使用 com.bytedance.bdlive:bdlive-pull:1.54.0.chinaFull 引入包含所有功能的观播 SDK 1.54.0 版本。
    • 引入不包含观众连麦和超低延时直播功能的观播 SDK 时,SDK 的版本后缀从 remove-rtc:VersionNumber.external 变更为 VersionNumber.chinaLite。例如,使用 com.bytedance.bdlive:bdlive-pull-remove-rtc:1.53.0.external 引入不包含观众连麦和超低延时直播功能的观播 SDK 1.53.0 版本,使用 com.bytedance.bdlive:bdlive-pull:1.54.0.chinaLite 引入不包含观众连麦和超低延时直播功能的观播 SDK 1.54.0 版本。

Glide 版本兼容性

自观播 SDK 1.30.0 版本开始,依赖的图片库组件已迁移至 Glide。Glide 不同版本的 API 存在较大差异,为避免由于调用不同版本的 API 导致崩溃,请参考以下内容确保 Glide 版本兼容性。项目引入的 Glide 版本不同,确保兼容性的方法也不同。

  • Glide 版本大于等于 4.9.0:无需额外操作。
  • Glide 版本为小于 4.9.0 的 4.x:打开项目 app 目录下的 build.gradle 文件并增加以下配置。
    // 引入观播 SDK
    implementation("com.bytedance.bdlive:bdlive-pull:x.x.x.chinaFull"){
     {
     // 移除默认的 bdlive-glide-v4 库
     exclude group:"com.bytedance.bdlive",module:"bdlive-glide-v4"
     }
    }
    
    // 引入 bdlive-glide-adapt-v4 库
    implementation "com.bytedance.bdlive:bdlive-glide-adapt-v4:1.1.5"
    

说明

观播 SDK 不支持 Glide 3.x 版本。建议将 Glide 升级至最新版本,升级后无需额外操作即可确保 Glide 版本兼容性。

步骤二:添加权限

app/src/main 目录下的 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.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

<!-- 悬浮窗权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<!-- 录音权限 --> 
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<!-- 摄像头权限 -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- 日历相关权限 --> 
<uses-permission android:name="android.permission.READ_CALENDAR"/> 
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>

步骤三:添加混淆规则

app 目录下的 proguard-rules.pro 文件中添加混淆规则。

-keep class com.pandora.**{*;}
-keep class com.ss.**{*;} 
-keep class com.bytedance.**{*;}
-keep class com.pandora.ttlicense2.**{*;}
-keep class com.bytertc.**{*;}
-keep class org.webrtc.**{*;}
-keep class log.**{*;}

步骤四:导入 License

app/src/main 目录下,创建 assets/lic 目录并把获取到的直播 License 文件 liveLicense.lic 和点播 License 文件 vodLicense.lic 放到 assets/lic 目录下。文件结构如下:

app
|-- src
    |-- main
        |-- java
        |-- assets
            |-- lic
                |--  liveLicense.lic
                |--  vodLicense.lic

步骤五:初始化 BDLive SDK

在初始化 Application 的过程中,调用 BDLiveEnv.init 初始化 BDLive SDK,即观播 SDK。

注意

  • 自观播 SDK 1.21.0 版本开始,必须通过初始化 BDLiveEnv 的方式初始化观播 SDK。
  • 初始化不获取用户个人信息。
private void initBDLiveEnv() {
    String assetsLicenseUri = "assets:///lic/example.lic"; // 将 assets:///lic/example.lic 替换为点播 License 的 URI
    String assetsLicenseUri2 = "assets:///lic/example.lic"; // 将 assets:///lic/example.lic 替换为直播 License 的 URI
    BDLiveEnv.init(new BDLiveConfig.Builder()
        .setApplicationContext(this)
        .setAppId("APP_ID") // 将 APP_ID 替换为在 SDK 应用创建后生成的 App ID
        .setAppName("APP_NAME") // 将 APP_NAME 替换为创建 SDK 应用时填写的 App 英文名称
        .setAppChannel("CHANNEL_NAME") // 将 CHANNEL_NAME 替换为 App 的渠道名称,例如小米应用商店(xiaomi)、华为应用市场(huawei)等
        .setAppVersion("APP_VERSION") // 将 APP_VERSION 替换为 App 的版本号。合法版本号应包含 2 个或以上的分隔符,例如 1.3.2
        .setAppRegion("REGION") // 将 REGION 替换为创建 SDK 应用时使用的地域,即 china
        .setVodLicenseUri(assetsLicenseUri) // 点播 License 的 URI
        .setLiveLicenseUri(assetsLicenseUri2) // 直播 License 的 URI
        .setUseSecureInfoCollect(true) // 是否开启信息采集安全模式。true:开启,不采集用户个人信息。false:不开启,采集用户个人信息。默认值:true
        .build());
}

步骤六:进入与离开直播间

以下示例代码展示了进入与离开完整直播间的方法。

说明

有关如何在接入独立播放器、完整播放器的基础上进入与离开直播间,详见基础功能

long activityId = ACTIVITY_ID; // 将 ACTIVITY_ID 替换为直播间的活动 ID。
String token = "TOKEN"; // 将 TOKEN 替换为进入该直播间所需的授权 Token。
TVULiveRoom.TVURoomAuthMode roomAuthMode = TVULiveRoom.TVURoomAuthMode.PUBLIC; // 直播间鉴权模式。此处以公开模式进入直播间为例。观众无需登录即可观看直播、查看评论等。
boolean isPortrait = true;// 是否为竖屏直播间。此处以竖屏直播间为例。
// 进入直播间。
TVULiveRoom.joinLiveRoom(context, new JoinRoomConfig(activityId,token,roomAuthMode,isPortrait));
// 离开直播间。
TVULiveRoom.leaveLiveRoom(context);

优化包体积

自 SDK 1.54.0 版本开始,您可以按需完成以下操作优化 SDK 的包体积。

  1. app 目录下的 build.gradle 文件中,在 dependencies 块中找到观播 SDK 的依赖。

    com.bytedance.bdlive:bdlive-pull:1.65.1.chinaFull
    
  2. chinaFull 替换为 chinaLite,即:

    com.bytedance.bdlive:bdlive-pull:1.65.1.chinaLite
    

优化包体积后的 SDK 不包含超低延时直播以及观众连麦功能。

说明

如果 SDK 的版本号为 1.54.0 以下,您可以将 SDK 的依赖从 com.bytedance.bdlive:bdlive-pull:VersionNumber.external 变更为 com.bytedance.bdlive:bdlive-pull-remove-rtc:VersionNumber.external,优化 SDK 的包体积。例如将 com.bytedance.bdlive:bdlive-pull:1.53.0.external 变更为 com.bytedance.bdlive:bdlive-pull-remove-rtc:1.53.0.external

常见问题

License 鉴权有问题怎么办?

开启 LicenseManager 的 Log 功能,查看日志进行问题排查。如果问题依然存在,请联系企业直播技术支持。

LicenseManager.turnOnLogcat(true);

播放器一直加载怎么办?

通常是由于 License 鉴权失败导致视频无法播放,日志显示播放器错误码为 -30001(LICENSE_FAILED)。请查看直播 License 和点播 License 是否过期,并查看使用的项目包名、App ID 等是否与创建 SDK 应用时填写的信息以及应用创建后生成的信息一致。如果问题依然存在,请联系企业直播技术支持。

tabLayout 兼容性有问题怎么办?

错误信息如下:

AAPT: error: 'start' is incompatible with attribute tabGravity (attr) enum [center=1, fill=0] [weak].

由于项目中使用 tabLayoutstart 属性控制 tabGravity,因此请在 app 目录下的 build.gradle 文件中,增加以下配置升级相关依赖版本:

dependencies {

...
implementation 'com.google.android.material:material:1.2.1'
...
}

因架构或环境原因缺失 .so 文件,导致 App 崩溃怎么办?

So 库目前仅支持 arm64-v8a 和 armeabi-v7a 架构。请在项目 app 目录下的 build.gradle 文件中检查 abiFilters 的配置是否正确。如需支持其他架构,请联系企业直播技术支持。
下图为 armeabi-v7a 架构下的所有 .so 文件。
Image

本地添加 .so 文件后,报错文件重复怎么办?

错误信息如下:

Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'.
More than one file was found with OS independent path 'lib/armeabi/xxxx.so'

在项目 app 目录下的 build.gradle 文件中,增加以下配置:

android{
        ...
        packagingOptions {
            pickFirst 'lib/armeabi/xxxx.so'
        }
        ...
    }
最近更新时间:2025.11.21 10:57:23
这个页面对您有帮助吗?
有用
有用
无用
无用