抱石云开放API接入文档

1.概述

1.1 SDK简介

抱石云AndroidSDK是适用于Android平台的云直播点播功能SDK。使用SDK可以与抱石云直播点播服务进行对接,在Android端使用抱石云直播点播功能。

1.2 功能特性

功能 描述
直播 观看直播视频画面
线路 支持多线路切换
清晰度 支持多清晰度切换。目前支持清晰度类型:超清、高清、标清
连麦 支持纯语音或音视频连麦
白板 支持讲师课件白板实时展示
随堂问答 支持随堂题目下发及答题提交
通知 支持下发模版式通知消息
互动聊天 支持直播间文字图片互动聊天
口令红包 支持配置口令红包
货架 支持配置货架
点赞 支持直播间点赞功能
禁言 支持直播间禁言
在线人数 支持直播间在线人数及是否展示在线人数
广播 支持广播链接

1.3 点播功能特性

功能 描述
播放 支持视频在线及离线播放
下载 支持视频下载及断点续传
清晰度 支持多清晰度切换。目前支持清晰度类型:超清、高清、标清

2.集成开发

最新 release 版本 sdk

前提条件

  1. Android Studio
  2. API 19+

获取所需要的信息

  1. 阅读 应用与权限,获取 SDK Token

集成 SDK 到项目中

build.gradle 配置

1.打开根目录下的 build.gradle 进行如下标准配置:

allprojects {
    repositories {
        jcenter()
        // 添加以下内容-抱石云的 github 制品仓库
        maven {
            url = "https://maven.pkg.github.com/BaoShiYun/BaoShiYun-Android/"
            credentials {
                // 抱石云仓库的秘钥 必须添加
                username = "BaoShiYun"
                password = "ghp_0QxdoB"+"PlyiA4PQl"+"VAzvxZoBHyh"+"PpoP2WYb9h"
            }
        }
    }
}

2.打开 app 目录下的 build.gradle 进行如下配置:

android {
     ***
    defaultConfig {
      ***
      // 根据自己项目需求添加动态库过滤配置
      // abiFilters 'armeabi', 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a', 'armeabi-v7a'
        ndk {
            abiFilters 'armeabi-v7a'
        }
    }
}
dependencies {
    // 添加依赖
    // 数字请根据最新版自行添加
    implementation ('com.baoshiyun:bsy-sdk:1.1.6
    ')
    // okhttp和gson 与本地版本冲突时可以排除依赖
    // {
    //    exclude module: 'okhttp'
    //    exclude module: 'gson'
    // }
}

Permission 配置

打开 app 目录下的 AndroidManifest.xml 进行如下配置:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--直播间连麦互动 如果使用蓝牙耳机 通话时需要 申请-->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />

Proguard 配置

# 抱石云 sdk model
-keep class com.baoshiyun.**{*;}
# white SDK model
-keep class com.herewhite.** { *; }
-keepattributes  *JavascriptInterface*
-keepattributes Signature
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.gson.** { *;}
# 声网 sdk model
-keep class io.agora.** { *;}
# 腾讯 sdk model
-keep class com.tencent.**{*;}

初始化

在 Application onCreate() 方法中初始化 抱石云 sdk

BSYSdk.BSYSdkConfig bsySdkConfig = new BSYSdk.BSYSdkConfig(applicationContext)
    .debug(Boolean) // 是否打印调试日志 
    .setThreadPoolExecutor(ThreadPoolExecutor); // 线程池对象,可不设置 
BSYSdk.init(bsySdkConfig);

使用直播间

RoomEnterParams params = new RoomEnterParams.Builder()
    .setRoomParams("roomId","enterCode) // 直播间 id,直播间 enterCode
    .setTenantId("tenantId") // 抱石云租户id
    .setUserId("userId") // 用户id
    .setNickname("nickname")  // 用户昵称
    .setAvatarUrl("avatarUrl")) // 用户头像 url
    .build();

 // 抱石云教室初始化
 BSYRoomSdk mLiveRoom = BSYRoomSdk.createInstance(context, mEnterParams);
 // 添加教室回调
 mLiveRoom.addHandler(handler);
 // 进入教室
 mLiveRoom.enterRoom();

抱石云播放器使用

    try {
            IMediaPlayer mediaPlayer = BSYPlayerFactory.createMediaPlayer(
                    "tenantId", "accessToken", "userId");
            // 如果播放器不销毁,accessToken 变化后需要及时更新,
            mediaPlayer.updateAccessToken("accessToken");
            // 默认清晰度
            mediaPlayer.setDefaultDefinition(Definition.LHD);
            // 设置各种监听器
            mediaPlayer.setOn...Listener();
            // 设置播放在线数据源
            mediaPlayer.setOnlineData(context, "mediaId", null);
            // 设置播放离线数据源
            // mediaPlayer.setOfflineData(context, "mediaId", "filePath", Definition.LHD);
            // 主播播放
            mediaPlayer.prepareAsync();
        } catch (Exception e) {
            e.printStackTrace();
            // TODO:处理异常
        }

抱石云视频下载器使用

     VideoData videoData = new VideoData()
                .setTenantId("tenantId")
                .setUserId("userId")
                .setMediaId("mediaId")
                .setOutputFile(outputFile)
                .setDefinition(Definition.LHD);
        String accessToken = PassportManager.getInstance().getMediaToken();

        BSYVideoDownloader downloader = new BSYVideoDownloader("accessToken", videoData);
        downloader.setDownloadListener(new BSYVideoDownloader.DownloadListener() {
            @Override
            public void onProgress(int progress, long speed, long fileSize) {}
            @Override
            public void onStatusChanged(int status) {}
            @Override
            public void onFinished(String mediaId, String playLocalPath) {}
            @Override
            public void onFailed(Throwable e) {}
        });
        downloader.start();

results matching ""

    No results matching ""