[TOC]
0. 基础SDK以及音视频
CC视频推拉流以及各个组件都依赖CCAtlasClient这个核心类, 获取核心类的实例:CCAtlasClient mAtlasClient = CCAtlasClient.getInstance();
获取一个context实例:CCInteractSDK.init(this.getApplicationContext(), true);
0.1 获取sessionid
登入房间需要获取sessionid才可以登入房间
public void login(String roomId, String userId, @CCAtlasClient.Role int role,
String username, String password,final CCAtlasCallBack<String> callBack) {
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
roomId | String | 房间ID | 必选 |
userId | String | 用户ID | 必选 |
role | int | 用户角色 | 必选 |
username | String | 用户名 | 必选 |
password | String | 用户密码 | 必选 |
callBack | CCAtlasCallBack | 回调 | 必选 |
0.1.1 登录成功
join登录成功以后,给客户返回配置信息data
public void join(String sessionId, String userAcount, String areaCode, final CCAtlasCallBack<CCInteractBean> callBack) {
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
sessionId | String | sessionid | 必选 |
userAcount | String | 用户ID | 必选 |
areaCode | String | 节点区域,可以传null | 可选 |
callBack | CCAtlasCallBack | 回调 | 必选 |
返回 CCInteractBean部分数据格式如下
{
result:"OK",
data:{
"desc": "9DC1A878A164F696", //房间描述
"talker_bitrate": 200, //学生推流码率
"publisher_bitrate": 200, //老师推流码率
"live": {
"id": 1231, // 直播id
"status": 0, // 1为开始
"last": "2000" // 如果status为1,则last为直播持续时长,单位毫秒
"startTime":"1503908480000" //直播开始时间戳
}
"max_streams": 6, //允许最大视频流数
"name": "ha", //用户昵称
"result": "OK",
"user": {
"id": "6e373a456cd04b45b00f7b97986a45fc", //用户唯一id
"name": "123123123", //用户name
"role": "talker", //'talker'学生 'presenter'老师
"roomid": "EC05E15A770D84AC9C33DC5901307461", // 房间id
},
"video_mode": 1, // 视频模式1为音视频模式 , 2为仅音频模式
"is_follow": '', // 默认为空,如果是跟随模式,则为流id
"max_users": 1, // 最大支持连麦人数
"allow_chat": true // 是否允许发言,默认为True, 房间级配置
"allow_audio": true // 是否允许麦克风 默认为True, 房间级配置
"allow_speak": true // 是否允许上麦,默认为True 房间级配置
"rtspurl": "" //第三方推流地址
}
}
1. 流相关方法
1.1 本地流相关方法
1.1.1 创建本地流
创建本地流,需要
public CCStream createLocalStream(@NonNull LocalStreamConfig config) throws StreamException {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
config | LocalStreamConfig | 创建本地流自定义参数 | 必选 |
1.1.2 关闭远程流声音
public void pauseAudio(@NonNull CCStream stream, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | CCStream | 远程流 | 必选 |
success | function | 成功回调 | 可选 |
fail | function | 失败回调 | 可选 |
1.1.3 开启远程流声音
public void playAudio(@NonNull CCStream stream, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | CCStream | 本地流名称 | 必选 |
success | function | 成功回调 | 可选 |
fail | function | 失败回调 | 可选 |
1.1.4 关闭本地流视频画面
public void pauseVideo(@NonNull CCStream stream, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | CCStream | 本地流名称 | 必选 |
success | function | 成功回调 | 可选 |
fail | function | 失败回调 | 可选 |
1.1.5 开启本地流视频画面
public void playVideo(@NonNull CCStream stream, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | CCStream | 本地流名称 | 必选 |
success | function | 成功回调 | 可选 |
fail | function | 失败回调 | 可选 |
1.1.6 销毁本地流的资源
public void destoryLocalStream() {
1.1.7 推送本地流
public synchronized void publish(final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.1.8 取消推送本地流
private synchronized void _publish(final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.2 远程流方法
1.2.1 订阅远程流
public synchronized void SubscribeStream(CCStream remoteStream, CCAtlasCallBack<CCStream> callBack)
throws StreamException {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
remoteStream | CCStream | 要订阅的流对象 | 必选 |
success | CCStream | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.2.2 取消订阅远程流
public synchronized void unSubscribeStream(CCStream remoteStream, CCAtlasCallBack<Void>
callBack) throws StreamException {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
unSubStream | object | 要取消订阅的流对象 | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.3 监听流相关事件
事件监听,建议在初始化sdk后做监听
1.3.1 监听流服务事件通知
监听atlas的流服务事件,不使用排麦组件则监听该事件,使用排麦组件监听排麦流服务事件。
首先获取流服务的监听事件:mAtlasClient.setOnNotifyStreamListener(mClientObserver);
使用例子:(demo里有实现的代码逻辑,可供参考)
private CCAtlasClient.OnNotifyStreamListener mClientObserver = new CCAtlasClient.OnNotifyStreamListener() {
@Override
public void onStreamAllowSub(CCStream stream) {
//这块监听是监听到有流可订阅,逻辑可以根据需要设置。
}
@Override
public void onStreamRemoved(CCStream stream) {
//这块监听是监听到流移除事件,逻辑可以根据需要设置
}
@Override
public void onStreamError() {
//这块监听是流错误事件,可以根据自己需要设置
}
};
1.4 部分高级功能
1.4.1 推流至cdn平台
直播开启后,讲师端推流成功后,可以调用该方法,将房间内的流推入cdn平台
public void addExternalOutput(@NonNull String serverUrl, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
url | String | 推流地址 | 可选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.2 取消推流至cdn平台
讲师端调用推流至cdn平台成功后,如果要取消推送,可以调用该方法
public void removeExternalOutput(@NonNull String serverUrl, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
url | String | 推流地址 | 可选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.3 更新推流平台地址
public void updateExternalOutput(@NonNull String serverUrl, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
url | String | 推流地址 | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.4 mix 流
此方法只有讲师角色有权限调用,将本地流合并入混流
public void mix(final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.5 unMix 流
此方法只有讲师角色有权限调用,将已加入混流的流取消混流
public void unmix(final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.6 设置混流位置
此方法只有讲师角色有权限调用,为已加入混流的流设置显示区域
public void setRegion(@NonNull CCStream stream, final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | stream | 设置混流参数 | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.7 获取混流位置
此方法只有讲师角色有权限调用,获取已加入混流的流的显示区域
public void getRegion(@NonNull CCStream stream, final CCAtlasCallBack<String> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | stream | 获取混流位置参数 | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.8 获取单条流状态
此方法用于获取已经订阅到或已经推出去的流对象的音视频状态
public void getConnectionStats(@NonNull CCStream stream, final CCAtlasCallBack<ConnectionStatsWrapper> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
stream | stream | 已经订阅到或已经推出去的流对象 | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
1.4.9 获取城市节点列表
此方法主要是获取到城市节点的列表
public void dispatch(String roomid,String userid,final CCAtlasCallBack<CCCityBean> callBack){
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
roomid | String | 房间ID | 必选 |
userid | String | 用户ID | 必选 |
callBack | CCAtlasCallBack | 回调 | 可选 |
2. 直播间操作api
2.1 主动调用事件
2.1.1 开启直播
直播开启接口由老师角色去控制
public void startLive(final CCAtlasCallBack<Void> callBack) {
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
2.1.2 关闭直播
直播关闭接口由老师角色去控制
public void stopLive(final CCAtlasCallBack<Void> callBack)
参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调 | 可选 |
fail | function | 失败回调(含参数) | 可选 |
2.1.3 判断直播是否开启
老师端是否开启了直播,返回true开始直播,false结束直播
public boolean isRoomLive() {
2.1.4 获取本地流ID
public String getLocalStreamId() {
2.1.4 获取直播间用户列表
public @Nullable ArrayList<CCUser> getUserList() {
2.2 被动监听事件
事件监听,建议在初始化sdk后做监听
2.2.1 监听开启/结束直播事件通知
当老师角色调用开启/结束直播接口后,房间内所有人都会监听到该事件
首先获取开启/结束直播监听事件: mAtlasClient.setOnClassStatusListener(mClassStatusListener);
使用例子:(demo里有实现的代码逻辑,可供参考)
private CCAtlasClient.OnClassStatusListener mClassStatusListener = new CCAtlasClient.OnClassStatusListener() {
@Override
public void onStart() {
}
@Override
public void onStop() {
}
};