android sdk 自定义api,Android SDK音视频API文档

[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 callBack) {

object 参数说明:

参数名称

参数类型

说明

是否必须

roomId

String

房间ID

必选

userId

String

用户ID

必选

role

int

用户角色

必选

username

String

用户名

必选

password

String

用户密码

必选

callBack

CCAtlasCallBack

回调

必选

0.1 获取sessionid

登入房间需要获取sessionid才可以登入房间

public void login(String roomId, String userId, @CCAtlasClient.Role int role,

String username, String password,final CCAtlasCallBack 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 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 callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

CCStream

远程流

必选

success

function

成功回调

可选

fail

function

失败回调

可选

1.1.3 开启远程流声音

public void playAudio(@NonNull CCStream stream, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

CCStream

本地流名称

必选

success

function

成功回调

可选

fail

function

失败回调

可选

1.1.4 关闭本地流视频画面

public void pauseVideo(@NonNull CCStream stream, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

CCStream

本地流名称

必选

success

function

成功回调

可选

fail

function

失败回调

可选

1.1.5 开启本地流视频画面

public void playVideo(@NonNull CCStream stream, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

CCStream

本地流名称

必选

success

function

成功回调

可选

fail

function

失败回调

可选

1.1.6 销毁本地流的资源

public void destoryLocalStream() {

1.1.7 推送本地流

public synchronized void publish(final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.1.8 取消推送本地流

private synchronized void _publish(final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.2 远程流方法

1.2.1 订阅远程流

public synchronized void SubscribeStream(CCStream remoteStream, CCAtlasCallBack callBack)

throws StreamException {

参数说明:

参数名称

参数类型

说明

是否必须

remoteStream

CCStream

要订阅的流对象

必选

success

CCStream

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.2.2 取消订阅远程流

public synchronized void unSubscribeStream(CCStream remoteStream, CCAtlasCallBack

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 callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

url

String

推流地址

可选

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.2 取消推流至cdn平台

讲师端调用推流至cdn平台成功后,如果要取消推送,可以调用该方法

public void removeExternalOutput(@NonNull String serverUrl, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

url

String

推流地址

可选

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.3 更新推流平台地址

public void updateExternalOutput(@NonNull String serverUrl, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

url

String

推流地址

必选

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.4 mix 流

此方法只有讲师角色有权限调用,将本地流合并入混流

public void mix(final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.5 unMix 流

此方法只有讲师角色有权限调用,将已加入混流的流取消混流

public void unmix(final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.6 设置混流位置

此方法只有讲师角色有权限调用,为已加入混流的流设置显示区域

public void setRegion(@NonNull CCStream stream, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

stream

设置混流参数

必选

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.7 获取混流位置

此方法只有讲师角色有权限调用,获取已加入混流的流的显示区域

public void getRegion(@NonNull CCStream stream, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

stream

获取混流位置参数

必选

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.8 获取单条流状态

此方法用于获取已经订阅到或已经推出去的流对象的音视频状态

public void getConnectionStats(@NonNull CCStream stream, final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

stream

stream

已经订阅到或已经推出去的流对象

必选

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

1.4.9 获取城市节点列表

此方法主要是获取到城市节点的列表

public void dispatch(String userid,final CCAtlasCallBack callBack){

参数说明:

参数名称

参数类型

说明

是否必须

userid

String

账户ID

必选

callBack

CCAtlasCallBack

回调

可选

2. 公有的SDK接口

2.1 主动调用事件

2.1.1 开启直播

直播开启接口由老师角色去控制

public void startLive(final CCAtlasCallBack callBack) {

参数说明:

参数名称

参数类型

说明

是否必须

success

function

成功回调(含参数)

可选

fail

function

失败回调(含参数)

可选

2.1.2 关闭直播

直播关闭接口由老师角色去控制

public void stopLive(final CCAtlasCallBack 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 getUserList() {

2.1.5 资源释放接口,退出房间,需要释放资源

public void disconnectSocket() {

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() {

}

};

2.2.2 用户加入房间、退出房间通知

人员加入房间/退出房间通知事件

首先获取加入/退出房间监听事件:ccAtlasClient.setOnUserRoomStatus(mUpdateUserList);

使用例子:(demo里有实现的代码逻辑,可供参考)

//人员加入房间/退出房间通知事件

private CCAtlasClient.OnUserRoomStatus mUpdateUserList = new CCAtlasClient.OnUserRoomStatus() {

@Override

public void OnExitRoomUser(CCUserRoomStatus ccUserRoomStatus) {

message(ccUserRoomStatus.getUserName() + "退出房间");

}

@Override

public void OnJoinRoomUser(CCUserRoomStatus ccUserRoomStatus) {

message(ccUserRoomStatus.getUserName() + "加入房间");

}

};

2.2.3 学员举手通知

人员在举手连麦模式下,举手通知事件

首先获取举手通知事件:ccAtlasClient.setOnUserHand(mUserHand);

使用例子:(demo里有实现的代码逻辑,可供参考)

//人员在举手连麦模式下,举手通知事件

private CCAtlasClient.OnUserHand mUserHand = new CCAtlasClient.OnUserHand() {

@Override

public void UserHand(CCUser user) {

message(user.getUserName() + "举手了");

}

};

2.2.4 用户自定义pusher 事件

首先设置自己的pusher事件:

JSONObject data = new JSONObject();

try {

data.put("action","nihao");

//用户自己定义socket事件

ccAtlasClient.sendPublishMessage(data);

} catch (JSONException e) {

e.printStackTrace();

}

监听自己的pusher事件:ccAtlasClient.setOnPublishMessageListener(mPublishMessage);

使用例子:(demo里有实现的代码逻辑,可供参考)

//用户监听自己设置的socket事件

private CCAtlasClient.OnPublishMessageListener mPublishMessage = new CCAtlasClient.OnPublishMessageListener() {

@Override

public void onPublishMessage(JSONObject object) {

try {

message(object.getString("action"));

} catch (JSONException e) {

e.printStackTrace();

}

}

};

3、音视频属性流程

1、视频

1.1 开启或者关闭指定用户id的学生视频,该接口是老师端操作

public boolean toggleVideo(boolean flag, @NonNull String userId)参数

参数说明

flag

true:开始视频,false;关闭视频

userId

指定的用户id

1.2 开启视频

开启自己的视频,是否需要通知别人

public void enableVideo(boolean isDoBroadcast)参数

参数说明

isDoBroadcast

是否通知其他用户

1.3 关闭视频

关闭自己的视频,是否需要通知别人

public void disableVideo(boolean isDoBroadcast)参数

参数说明

isDoBroadcast

是否通知其他用户

2、音频

2.1 开启或者关闭指定用户id的学生音频,该接口是老师端操作

public boolean toggleAudio(boolean flag, @NonNull String userId)参数

参数说明

flag

true:开始音频,false;关闭音频

userId

指定的用户id

2.2 开启音频

开启自己音频,是否需要通知别人

public void enableAudio(boolean isDoBroadcast)参数

参数说明

isDoBroadcast

是否通知其他用户

2.3 关闭音频

关闭自己视频,是否需要通知别人

public void disableAudio(boolean isDoBroadcast)参数

参数说明

isDoBroadcast

是否通知其他用户

3、音视频更新通知,回调给应用层

3.1 学生多媒体状态被动变化回调

需要去设置监听多媒体事件

public void setOnMediaListener(OnMediaListener onMediaListener)

public interface OnMediaListener{

/**

* 麦克风更新通知

*

* @param userid 当前操作的用户id

* @param isAllowAudio

  • true开启麦克风
  • false关闭麦克风

* @param isSelf

  • true是自己
  • false不是自己

*/

void onAudio(String userid, boolean isAllowAudio, boolean isSelf);

/**

* 摄像头更新通知

*

* @param userid 当前操作的用户id

* @param isAllowVideo

  • true开启摄像头
  • false关闭摄像头

* @param isSelf

  • true是自己
  • false不是自己

*/

void onVideo(String userid, boolean isAllowVideo, boolean isSelf);

}

4、插播音视频(自定义控件CCMediaSurfaceView)

4.1使用方法布局文件使用,如下

android:id="@+id/id_ccmediasurface"

android:layout_width="160dp"

android:layout_height="90dp"

android:visibility="visible" />

4.2自定义控件的回调

4.2.1 是不是显示自定义控件

业务需要:视频显示控件、音频隐藏控件,可根据此监听写自己的业务逻辑

public interface OnIsVisiableMadieListener {

/**

* @param isShow 是否显示插播音视频

*/

void isShowMadie(boolean isShow);

}

4.2.2 获取真实视频的宽高

业务需要:获取真实视频的宽高,进行做视频,防止视频变形;音频的时候宽高都是0

public interface OnVideoWHListener {

void setVideoWH(int w, int h);

}

4.2.3 视频加载

业务需要:视频需要有个加载过程

public interface OnProgressShowHide {

void show();//显示加载动画

void hide();//隐藏加载动画

}

4.3视频播放操作方法

如果没有特殊需求,不建议使用,以为只是展示web端的,并且内部都已经实现

getVideoType()//获取视频类型true 视频,false 音频,进入房间的时候时候判断

seekToVideo() //视频跳转

pauseVideo() //视频暂停

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值