API
初始化接口
SDK初始化
public static synchronized BaiduRtcRoom initWithAppID(Context context, String appId, String token)
初始化SDK并创建RTC房间实例,初始化SDK时调用,初始化SDK失败会导致SDK功能异常。
参数
参数 | 类型 | 描述 |
---|---|---|
context | Context | Android上下文环境 |
appId | String | 百度为App签发的App ID, 用于识别应用, 全局唯一,详见创建应用。 |
token | String | 百度RTC服务端鉴权使用的密钥,可缺省,使用应用鉴权可使得服务更加安全。 详见应用鉴权。 |
返回
类型 | 描述 |
---|---|
BaiduRtcRoom | 实例对象,null:失败,非null:表示成功 |
设置媒体参数
public abstract void setParamSettings(RtcParameterSettings paramSettings,RtcParameterSettings.RtcParamSettingType paramType);
音视频参数设置。
设置音视频相关的参数。该函数在loginRtcRoomWithRoomName接口前调用,主要用于设置音视频采集,编解码相关的参数。
参数
参数 | 类型 | 描述 |
---|---|---|
paramSettings | RtcParameterSettings | 该参数封装了音视频的一些参数,如音频采样率等 |
paramType | RtcParamSettingType | 参数类型,可指定设置某一项,或者所有参数都设置。 |
参数类型 RtcParamSettingType说明:
- RTC_PARAM_SETTINGS_ALL:设置全部paramSettings参数集,一般情况下采用该方式设置全部参数;
RtcParameterSettings 定义
- 通用属性
类型 | 属性 | 默认值 | 描述 | 说明 |
---|---|---|---|---|
boolean | HasAudio | true | 是否采集、发送音频流 | 涉及与服务端音频协商,通信后无法修改。 |
String | AudioCodec | "opus" | 音频编码类型 | 推荐使用默认值。 |
int | AudioFrequency | 48000 | 音频采样率 | 推荐使用默认值。 |
int | AudioChannel | 1 | 音频通道 | 推荐使用默认值。 |
boolean | MicPhoneMuted | false | 是否发送本端音频流 | 与HasAudio不同, 该值仅控制是否发送音频数据,通信后可切换。 |
int | AudioMaxkbps | -1 | 音频最大码率 | 默认值 -1 表示使用自适应码率,推荐使用默认值。 |
int | AudioSource | VOICE_COMMUNICATION | 音频输入源类型 | 输入源类型定义可参考系统接口:android.media.AudioSource,通信场景推荐使用默认值。 |
boolean | EnableMultistream | true | 开启多流模式 | 在多人通信场景,多路媒体流复用同一个连接,系统开销更小, 推荐使用。 |
boolean | AutoPublish | true | 自动发布媒体流 | 房间登录成功后自动发布本端媒体流,设置自动发布后不应再调用startPublish接口手动发布媒体流。 |
boolean | AutoSubScribe | true | 自动订阅媒体流 | 房间登录成功后自动订阅房间内其它用户媒体流,设置自动订阅后不应再调用subscribeStreaming接口手动发布媒体流。 |
- 扩展属性
扩展属性推荐使用默认值,您也可以根据具体应用场景选择性使用。
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
int | AudioContentType | AudioAttributes.CONTENT_TYPE_SPEECH | 设置音频输出类型,完整Audio Content Type定义参考系统接口 android.media.AudioAttributes |
RtcAudioBitrateMode | audioBitrateMode | RTC_AUDIO_BITRATE_CBR | 设置opus音频编码模式:CBR/VBR |
int | ConnectionTimeoutMs | 5000 | 信令服务器连接超时时长 |
int | ReadTimeoutMs | 5000 | 信令读取超时时长 |
boolean | EnableAudioLevel | true | 开启服务端按音频增益混流 |
int | AudioLevelTopCount | 3 | 与EnableAudioLevel 配合使用,控制服务端转发的音频混流路数(根据音频增益大小) |
设置回调代理
public abstract boolean setBaiduRtcRoomDelegate(BaiduRtcRoomDelegate baiduRtcRoomDelegate);
代理设置。
设置RTC Room代理对象。使用RTC Room功能,初始化相关组件时需要设置代理对象,代理对象用户事件回调。未设置代理对象,或对象设置错误,可能导致无法收到相关回调。
参数
参数 | 类型 | 描述 |
---|---|---|
baiduRtcRoomDelegate | BaiduRtcRoomDelegate | 遵循BaiduRtcRoomDelegate协议的代理对象 |
返回
true 成功,false 失败
房间相关接口
登录房间
public abstract boolean loginRtcRoomWithRoomName(String roomName, long userId, String displayName, boolean isCompulsive);
登录房间成功,在同一个房间的人能进行相互音视频聊天。开启强制登录,若房间内之前存在同一userId用户,将被踢出,建议在断网重连或者初次登录失败时调用。
参数
参数 | 类型 | 描述 |
---|---|---|
roomName | String | 房间名,长度不可超过 255 byte,不可包括特殊字符及中文 |
userId | int | 用户ID,每个房间的用户ID必须唯一,建议每个用户唯一ID |
displayName | String | 用户显示名 |
isCompulsive | boolean | true:强制登录;false:正常登录,默认正常登录 |
返回
true 成功,false 失败
退出房间
public abstract boolean logoutRtcRoom();
执行logoutRtcRoom后,会停止音视频采集,断开与房间服务器的连接,取消音视频的传输,销毁音视频传输通道以及释放其他资源。
返回
true 成功,false 失败
启动跨房间通信
abstract void startRoomMediaRelay(String destRoomName, long userId, String token)
启动跨房间通信。
注意 默认情况下,SDK允许同一房间内的用户间进行通信,若要与其它房间的用户进行通信,则需要需要该接口进行跨房间通信。
参数
参数 | 类型 | 描述 |
---|---|---|
destRoomName | String | 目标房间 |
userId | long | 加入目标房间时使用的userId,必须在加入房间中是唯一的 |
token | String | App server派发的token字符串 |
停止跨房间通信
abstract void stopRoomMediaRelay(String destRoomName, long userId, String token)
停止跨房间通信。
参数
参数 | 类型 | 描述 |
---|---|---|
destRoomName | String | 目标房间 |
userId | long | 加入目标房间时使用的userId,必须在加入房间中是唯一的 |
停止所有跨房间通信
public abstract void stopRoomMediaRelayAll()
停止所有跨房间通信。
解散房间
public abstract boolean disbandRoom();
解散房间。 房间管理员有权利解散整个房间,解散后,房间中的每个用户都被动退出房间。
踢出某成员
public abstract void kickOffUserWithId(int userId);
踢出某用户。
房管/主播/会议主持 把某用户踢出聊天室。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | int | 在房间中的用户ID |
禁言某成员
public abstract void shutUpUserWithId(int userId, bool disable);
是否禁言某成功。
房管/主播/会议主持 禁止某成功发言。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | int | 在房间中的用户ID |
bool | disable | 禁言/取消禁言 |
发布/订阅相关接口
发布媒体流
public abstract void publishStreaming();
发布本地媒体流。
仅当RtcParameterSettings.AutoPublish设置为false(非自动发布)时,手动发布本地媒体流。
调用时机:接收到房间登录成功事件BaiduRtcRoomDelegate.RTC_ROOM_EVENT_LOGIN_OK之后;
订阅某成员媒体流
public abstract void subscribeStreaming(long feedId);
订阅远端成员订阅流。
仅当RtcParameterSettings.AutoSubscribe设置为false(非自动订阅)时,手动订阅远端用户媒体流。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
停止订阅某成员媒体流
public abstract void stopSubscribeStreaming(long feedId);
停止订阅流,可与subscribeStreaming接口配合使用。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
消息相关接口
向某成员发送消息
public abstract void sendMessageToUser(String msg, long id);
发送消息。
id=0,房间内广播消息,id = userID,指定用户发送消息。
参数
参数 | 类型 | 描述 |
---|---|---|
msg | String | 消息 |
id | long | 流的ID号 |
设置用户属性
public abstract void setUserAttribute(String attribute);
用户属性设置。
设置用户属性。
参数
参数 | 类型 | 描述 |
---|---|---|
attribute | String | 用户属性 |
获取用户属性
public abstract void getUserAttribute(long feedid);
用户属性获取。
获取用户属性。
参数
参数 | 类型 | 描述 |
---|---|---|
feedid | long | 流ID |
音频相关接口
关闭/开启麦克风静音
public abstract void muteMicphone(boolean muted);
开启/关闭 麦克风静音(不关闭手机麦克风设备)。
参数
参数 | 类型 | 描述 |
---|---|---|
muted | boolean | true:静音,false:取消静音 |
切换扬声器/听筒
public abstract void switchLoundSpeaker();
开关扬声器。
听筒与扬声器切换(免提功能)
预置听筒/扬声器
public abstract void presetLoudSpeaker(boolean isPresetLoudSpeaker);
预置听筒/扬声器。
参数
参数 | 类型 | 描述 |
---|---|---|
isPresetLoudSpeaker | boolean | true:扬声器,false:听筒 |
禁止/开启音频输出
public abstract void muteSpeaker(boolean mute)
开启/关闭音频输出。
参数
参数 | 类型 | 描述 |
---|---|---|
mute | boolean | true:禁止音频输出,false:开启音频输出,默认为false |
设置远端用户音频播放音量
public abstract void setUserPlaybackVolume(long userId, int volume)
设置远端用户音频播放音量。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 远端用户ID |
volume | int | 设置的音量范围 [0,100] |
查询扬声器是否开启
public abstract boolean isSpeakerOn()
查询扬声器是否开启。
获取房间成员音量列表
public abstract RtcRoomAudioLevel[] getRemoteAudioLevels();
房间成员音量接口。
获取用户音量列表。
返回
RtcRoomAudioLevel[]
设置是否拉取某成员音频流
public abstract void setRemoteAudioPlayState(boolean stats, long userId);
指定远端音频暂停/恢复播放。
通过控制音频流拉取,控制指定远端用户音频暂停/恢复播放。
参数
参数 | 类型 | 描述 |
---|---|---|
stats | boolean | true:拉取,false:停止拉取,默认为true |
userId | long | 用户ID |
返回
RtcRoomAudioLevel[]
设置音频输出设备
public abstract void setSoundMod(RtcSoundMode soundMod)
设置音频输出设备,扬声器/听筒。
参数
参数 | 类型 | 描述 |
---|---|---|
soundMod | RtcSoundMode | 音频输出方式:扬声器/听筒 |
转推配置相关接口
配置媒体转推参数
public abstract boolean configLiveServerWithUrl(String url,
boolean isMix,
boolean isRecording,
String mixTemplate,
RtcLiveTransferMode transferMode);
server端推流参数配置。
该接口用于配置Server推流的参数,聊天室模式:在同一个RTC房间的所有参与者在混流后,直接转推到一个指定的直播房间;主播转推模式:主播推向不同的直播房间
参数
参数 | 类型 | 描述 |
---|---|---|
url | String | rtmp推流地址 |
isMix | boolean | 是否做混流处理 |
mixTemplate | String | 混流模板 |
transferMode | RtcLiveTransferMode | 转推模式: 聊天室模式, 主播转推模式 |
返回
true 设置成功, false 失败。
通知相关接口
登录房间回调
public void onLoginRtcRoom(int code, long roomId)
登录房间回调
参数
参数 | 类型 | 描述 |
---|---|---|
code | int | 结果码,0:成功,101:超时,其他:失败 |
roomId | long | 房间RoomID |
链接断开回调
public void onConnectionLost(int code)
链接断开回调
当音频通话中,发生连接断开,会回调该事件
链接状态变化回调
public void onConnectionStateChanged(int newState, int reason)
链接状态发生变化回调
参数
参数 | 类型 | 描述 |
---|---|---|
newState | int | 链接状态,值为 BaiduRtcRoomDelegate.ConnectionState |
reason | int | 房间RoomID |
用户加入房间回调
public void onUserJoined(long uid, String displayName)
远端用户加入房间回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
displayName | String | 远端用户显示名字 |
用户离开房间回调
public void onUserOffline(long uid, String msg)
远端用户离开房间回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
msg | String | 保留使用 |
远端音频到达回调
public void onFirstRemoteAudio(long uid, String msg)
远端音频到达回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
msg | String | 保留使用 |
远端音频流离开回调
public void onRemoteAudioOffline(long uid, String msg)
远端音频流离开回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
msg | String | 保留使用 |
远端用户加入房间且推流回调
public void onRemoteStreamComing(long uid, String name)
远端用户加入房间且推流回调
远端用户加入房间,且开始推流,收到该回调。当收到该回调时,可以开始订阅流
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
name | String | 用户名 |
远端流离开回调
public void onRemoteStreamLeaving(long uid)
远端流离开回调
远端用户停止推流时,收到该回调事件。与onUserOffline 事件区分,用户可能未离开房间,只停止推流。
房间解散事件回调
public void onRoomDisband()
房间解散事件回调
当房间被解散时,收到该回调事件
禁言状态变化回调
public void onUserShutupChanged(long uid, boolean on)
禁言状态变化回调
当某用户禁言状态发生变化时,收到该回调事件
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
on | boolean | 禁言状态,true:被禁言,false:解除禁言 |
用户被踢出房间回调
public void onUserKickOffed(long uid)
用户被踢出房间回调
当某用户被踢出房间时,收到该回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
转推事件回调
public void onLiveStreamStateChanged(String url,BaiduRtcRoom.RtcLiveTransferMode mode, int state)
转推事件回调
当调用configLiveServerWithUrl接口或者startLiveServerStreaming接口时,会收到该回调事件,通知转推状态
参数
参数 | 类型 | 描述 |
---|---|---|
url | String | 转推url |
mode | RtcLiveTransferMode | 转推模式: 聊天室模式, 主播转推模式 |
state | int | 转推状态,0:idle, 1:connected, 2:dis-connected, 3:interrupt |
用户信息回调
public void onUserMessage(long uid, String msg)
用户信息回调
当调用sendMessageToUser接口后,对应用户会收到该事件回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
msg | String | 收到的消息 |
用户属性回调
public void onUserAttribute(long uid, String msg)
用户属性回调
当用户设置属性,加入房间后,会收到该用户属性回调
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 远端用户UserID |
msg | String | 属性 |
开启跨房间转推回调
public void onStartMediaRelayResult(String destRoomName, long userId, int code)
跨房间转推回调
当调用startRoomMediaRelay接口后,会收到该事件回调
参数
参数 | 类型 | 描述 |
---|---|---|
destRoomName | String | 目标房间号 |
userId | long | 加入目标房间下的对应UserID |
code | int | 开启跨房间转推结果,0:成功,其他:失败 |
停止跨房间转推回调
public void onStopMediaRelayResult(String destRoomName, long userId, int code)
停止跨房间转推回调
当调用stopRoomMediaRelay接口后,会收到该事件回调
参数
参数 | 类型 | 描述 |
---|---|---|
destRoomName | String | 目标房间号 |
userId | long | 加入目标房间下的对应UserID |
code | int | 结果,0为成功,其他为失败 |
推流媒体链路事件回调
public void onPublisherMediaStateUpdate(int states)
媒体链路事件回调
当推流媒体链路发生状态变化时,收到该回调
参数
参数 | 类型 | 描述 |
---|---|---|
states | int | 状态 |
state具体值
public static final int RTC_STATE_STREAM_CLOSED = 2008; // 链路关闭
public static final int RTC_STATE_PUBLISHER_STREAM_DOWN = 2006; // 推流链路断开
public static final int RTC_STATE_SUBSCRIBER_STREAM_DOWN = 2007; // 订阅链路断开
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL0 = 2100; // 丢包
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL1 = 2101;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL2 = 2102;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL3 = 2103;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL4 = 2104;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL5 = 2105;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL6 = 2106;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL7 = 2107;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL8 = 2108;
public static final int RTC_STATE_STREAM_SLOW_LINK_LEVEL9 = 2109;
订阅媒体链路事件回调
public void onSubscriberMediaStateUpdate(int states)
订阅媒体链路事件回调
当订阅媒体链路发生状态变化时,收到该回调
参数
参数 | 类型 | 描述 |
---|---|---|
states | int | 状态 |
错误事件回调
public abstract void onError(/*RtcErrorCodes*/int errorInfo)
错误事件回调
当发生不可恢复错误时,收到该回调
参数
参数 | 类型 | 描述 |
---|---|---|
errorInfo | int | 错误码 |
ErrorCode 参数
public static class ErrorCode {
/** 无错误 */
public static final int ERROR_OK = 0;
/** 连接超时 */
public static final int ERROR_CONNECT_TIMEOUT = 101;
/** okHttp onFailure */
public static final int ERROR_CONNECT_FAIL = 102;
/** okHttp onFailure SSLException */
public static final int ERROR_SSL_EXCEPTION = 103;
/** signal-server send timeout command */
public static final int ERROR_SERVER_TIMEOUT_CMD = 104;
/** signal-server find uid already exist */
public static final int ERROR_USERID_ALREADY_EXIST = 200;
/** okHttp keep-alive fail */
public static final int ERROR_CHANNEL_KEEPALIVE_TIMEOUT = 201;
/** signal message error */
public static final int ERROR_SIGNAL_SERVER_ERROR = 203;
/** 人数达到上限/订阅者人数上限,业务处理 */
public static final int ERROR_EXCEED_SUBSCRIBERS_LIMIT = 230;
/** 发布者人数上限,业务处理 */
public static final int ERROR_EXCEED_PUBLISHERS_LIMIT = 241;
/** 参数错误,业务自己处理 */
public static final int ERROR_PUBLISHER_PARAMS_INCORRECT = 242;
/**
* 用户不存在,业务需要重连,整个重连
*/
public static final int ERROR_PUBLISHER_USER_NOT_EXISTS = 260;
public static final int ERROR_SUBSCRIBER_USER_NOT_EXISTS = 261;
/**
* 重复推流,上报业务无需处理
*/
public static final int ERROR_PUBLISHER_REPEAT_PUBLISH = 270;
public static final int ERROR_SUBSCRIBER_PARAMS_INCORRECT = 271;
public static final int ERROR_SUBSCRIBER_REPEAT_SUBSCRIBE = 272;
public static final int ERROR_UNSUBSCRIBE_USER_NOT_EXISTS = 280;
public static final int ERROR_UNSUBSCRIBE_PARAMS_INCORRECT = 281;
public static final int ERROR_UNSUBSCRIBE_USER_NOT_SUBSCRIBED = 282;
/**
* 用户状态错误,业务处理,需重新订阅
*/
public static final int ERROR_SUBSCRIBER_USER_STATE_INVALID = 290;
public static final int ERROR_UNPUBLISH_USER_NOT_EXISTS = 291;
/** peerconnection runtime error */
public static final int ERROR_PEER_CONNECTION_RUNTIME = 500;
}
警告事件回调
public abstract void onWarn(int code)
警告事件回调
参数
参数 | 类型 | 描述 |
---|---|---|
code | int | 错误码 |
其他接口
获取SDK版本
public static String version()
SDK版本号获取。
获取当前SDK版本号
返回
返回当前SDK版本号
开启/关闭调试信息输出
public static void setVerbose(boolean bOnVerbose)
是否打开调试信息。
建议在初始化SDK前调用。建议在调试阶段打开此开关,打开此开关后,将打开日志信息,方便调试。
参数
参数 | 类型 | 描述 |
---|---|---|
bOnVerbose | boolean | 是否打开调试信息,true:打开,false:关闭。默认为false |
开启/关闭质量数据上报
public abstract void enableStatsToServer(boolean isEnable, String qualityMonitorEnv)
RTC质量监控数据上报。
预置接口,监控信息上报开关 当打开开关时,上报、码率、丢包率等监控信息到服务端,console可查。
参数
参数 | 类型 | 描述 |
---|---|---|
isEnable | boolean | 是否打开RTC质量监控数据上报,true:打开,false:关闭。默认为false |
qualityMonitorEnv | String | online:"线上环境" qa:"沙盒"。默认值为online |
设置本地日志文件配置
public static void setWriteLogConfig(WriteLogConfig config)
设置日志写本地文件配置
参数
参数 | 类型 | 描述 |
---|---|---|
config | WriteLogConfig | 本地文件配置 |
WriteLogConfig 定义
参数 | 类型 | 描述 |
---|---|---|
logPath | String | 日志文件路径 |
logName | String | 日志文件名,不需要加后缀 |
maxBytes | String | 单个日志最大容器 |
maxNum | String | 最多保存日志文件个数 |
enableWriteFile | boolean | 是否允许写文件,true:打开写入本地文件,false:关闭,默认为false |
注意 需要先开启setVerbose(true)才会打开日志
开启/关闭日志自动上传
public abstract void enableAutoUploadLog(boolean enable);
开启/关闭自动上传日志文件
开启后,会自动上传日志文件到云服务器,方便排查线上问题
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否开启,true:开启,自动上传云端,false:关闭 |