API
初始化接口
SDK初始化
public static synchronized BaiduRtcRoom initWithAppID(Context context, String appId, String token)
SDK初始化。
初始化SDK并创建RTC房间实例 初始化 SDK 时调用,初始化 SDK 失败会导致 SDK 功能异常。
参数
参数 | 类型 | 描述 |
---|---|---|
context | Context | Android上下文环境 |
appId | String | 百度为App签发的 App ID, 用于识别应用, 全局唯一,详见创建应用。 |
token | String | 百度RTC服务端鉴权使用的密钥,可缺省,使用应用鉴权可使得服务更加安全。 详见应用鉴权。 |
返回
BaiduRtcRoom 实例对象:成功; null:失败;
设置媒体参数
public abstract void setParamSettings(RtcParameterSettings paramSettings,RtcParameterSettings.RtcParamSettingType paramType);
音视频参数设置。
设置音视频相关的参数。该函数在登录房间前调用,主要用于设置音视频采集,编解码相关的参数。
参数
参数 | 类型 | 描述 |
---|---|---|
paramSettings | RtcParameterSettings | 该参数封装了音视频的一些参数,如video分辨率,fps, bitrate,音频采样率等 |
paramType | RtcParamSettingType | 参数类型,可指定设置某一项,或者所有参数都设置。 |
参数类型 RtcParamSettingType说明:
- RTC_PARAM_SETTINGS_ALL:设置全部paramSettings参数集,一般情况下采用该方式设置全部参数;
- RTC_VIDEO_PARAM_SETTINGS_BITRATE:仅设置最高视频码率;
- RTC_VIDEO_PARAM_SETTINGS_RENDER_MODE:仅设置视频渲染模式;
RtcParameterSettings 定义
- 通用属性
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
boolean | HasVideo | true | 【含义】是否采集、发送视频流 【说明】涉及与服务端视频协商,通信后无法修改。开启后采集摄像头媒体数据。 |
boolean | HasAudio | true | 【含义】是否采集、发送音频流 【说明】涉及与服务端音频协商,通信后无法修改。 |
boolean | HasScreen | false | 【含义】是否采集、发送屏幕共享 【说明】涉及与服务端音频协商,通信后无法修改。 |
boolean | HasRemoteVideo | true | 【含义】配置是否拉取远端视频流 |
boolean | HasRemoteAudio | true | 【含义】配置是否拉取远端音频流 |
boolean | HasData | false | 【含义】是否开启数据通道 【说明】涉及与服务端数据通道协商,通信后无法修改。开启可向其它用户发送数据。 |
String | VideoCodec | "h264" | 【含义】视频编码类型 【说明】推荐使用默认值。 |
String | AudioCodec | "opus" | 【含义】音频编码类型 【说明】推荐使用默认值。 |
int | AudioFrequency | 48000 | 【含义】音频采样率 【说明】推荐使用默认值。 |
int | AudioChannel | 1 | 【含义】音频通道 【说明】推荐使用默认值。 |
int | VideoWidth | 640 | 【含义】发送视频宽 【说明】推荐使用32位对齐的视频采集宽度,由于部分平台兼容性问题,非32位对齐可能存在视频编解码异常。 |
int | VideoHeight | 480 | 【含义】发送视频高 【说明】推荐使用32位对齐的视频采集高度,由于部分平台兼容性问题,非32位对齐可能存在视频编解码异常。 |
int | PreviewWidth | 0 | 【含义】预览视频宽 【说明】推荐使用32位对齐的视频采集宽度,由于部分平台兼容性问题,非32位对齐可能存在视频编解码异常,若未设置,使用VideoWidth作为预览视频宽。 |
int | PreviewHeight | 0 | 【含义】预览视频高 【说明】推荐使用32位对齐的视频采集高度,由于部分平台兼容性问题,非32位对齐可能存在视频编解码异常,若未设置,使用VideoHeight作为预览视频高。 |
int | VideoFps | 20 | 【含义】视频初始帧率 【说明】通信时,实际帧可能会根据当前带宽上下波动。 |
boolean | MicPhoneMuted | false | 【含义】是否发送本端音频流 【说明】与HasAudio不同, 该值仅控制是否发送音频数据,通信后可切换。 |
boolean | CameraMuted | false | 【含义】是否发送本端视频流 【说明】与HasVideo不同, 该值仅控制是否发送视频数据,通信后可切换 |
int | VideoMaxkbps | 1000 | 【含义】视频最高码率 【说明】通信时,实际发送的视频码率不超过最高码率。 |
int | VideoMinkbps | 0 | 【含义】视频最低码率 【说明】通信时,实际发送的视频码率不低于最低码率。 |
int | AudioMaxkbps | -1 | 【含义】音频最大码率 【说明】默认值 -1 表示使用自适应码率,推荐使用默认值。 |
int | AudioSource | VOICE_COMMUNICATION | 【含义】音频输入源类型 【说明】输入源类型定义可参考系统接口:android.media.AudioSource,通信场景推荐使用默认值。 |
boolean | EnableMultistream | true | 【含义】开启多流模式 【说明】在多人通信场景,多路媒体流复用同一个连接,系统开销更小, 推荐使用。 |
boolean | AutoPublish | true | 【含义】自动发布媒体流 【说明】 房间登录成功后自动发布本端媒体流,设置自动发布后不应再调用startPublish接口手动发布媒体流。 |
boolean | AutoSubScribe | true | 【含义】自动订阅媒体流 【说明】房间登录成功后自动订阅房间内其它用户媒体流,设置自动订阅后不应再调用subscribeStreaming接口手动订阅媒体流。 |
int | keyAgreementProto | 0 | 【含义】密钥交换方式 【说明】 参数包含: 0:KeyAgreementProtocol.BRTC_DTLS 1:KeyAgreementProtocol.BRTC_SDES 2:KeyAgreementProtocol.BRTC_NONE 推荐使用默认值。 |
boolean | enablePruneSignal | false | 【含义】极简信令 data-channel 【说明】开启极简信令模式。 |
int | subscribeMode | 2 | 【含义】极简信令订阅模式 【说明】 参数包含: 1:WebSocketData.SubscribeMode.AUTO_MODE 音频视频自动订阅 2:WebSocketData.SubscribeMode.MANUAL_MODE 手动订阅 3:WebSocketData.SubscribeMode.MEETING_MODE 音频自动订阅 视频手动订阅。 |
int | subscribeMaxCount | 3 | 【含义】极简信令订阅最大人数。 |
RtcSignalChannelMode | signalChannelMode | RTC_SIGNAL_CHANNEL_MODE_TCP | 【含义】信令传输模式。 【说明】 参数包含: 0: RTC_SIGNAL_CHANNEL_MODE_TCP 传统TCP模式传输 1: RTC_SIGNAL_CHANNEL_MODE_QUIC quic协议模式 |
- 扩展属性
扩展属性推荐使用默认值,您也可以根据具体应用场景选择性使用。
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
int | AudioContentType | AudioAttributes.CONTENT_TYPE_SPEECH | 【含义】设置音频输出类型,完整Audio Content Type定义参考系统接口 android.media.AudioAttributes |
RtcVideoRenderMode | VideoRenderMode | RTC_VIDEO_RENDER_MODE_INTERNAL | 【含义】设置渲染模式:内部渲染/外部渲染 |
boolean | EnableFixedResolution | false | 【含义】是否使用固定分辨率 |
boolean | EnableRequiredResolutionAligment32 | false | 【含义】 |
boolean | DisableBuiltInAEC | false | 【含义】禁用内置AEC |
boolean | EnableHisiH264HW | true | 【含义】是否打开Hisi平台H.264硬件编解码 |
boolean | EnableMTKH264Decode | true | 【含义】是否打开MTK平台H.264硬件解码 |
boolean | EnableAacCodec | false | 【含义】是否开启AAC 解码 (仅低延时播放场景) |
boolean | enableJitterRetransmission | false | 【含义】是否开启平滑渲染,可优化下行丢包 |
int | EncodeBitrateMode | RTC_VIDEO_CONTROLRATECONSTANT | 【含义】设置编码模式 |
RtcAudioBitrateMode | audioBitrateMode | RTC_AUDIO_BITRATE_CBR | 【含义】设置opus音频编码模式:CBR/VBR; |
RtcVideoDegradationPreference | degradationPreference | RtcVideoDegradationPreference.MAINTAIN_FRAMERATE | 【含义】保持fps 当网络变差时候降编码低分辨率来达到流畅 【说明】 参数包含:1、MAINTAIN_FRAMERATE 保持framerate 2、MAINTAIN_RESOLUTION 保持分辨率 3、BALANCED 平衡分辨率和framerate |
int | ConnectionTimeoutMs | 5000 | 【含义】信令服务器连接超时时长 |
int | ReadTimeoutMs | 5000 | 【含义】信令读取超时时长 |
boolean | EnableAudioLevel | false | 【含义】开启服务端按音频增益混流 |
int | AudioLevelTopCount | 3 | 【含义】与EnableAudioLevel 配合使用,控制服务端转发的音频混流路数(根据音频增益大小) |
- 屏幕分享属性
屏幕分享相关属性
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
boolean | HasScreen | false | 【含义】是否采集、发送屏幕媒体流 【说明】涉及与服务端视频协商,通信后无法修改,开启后采集屏幕媒体数据。 |
Intent | screenIntentData | null | 【含义】设置通过系统权限获取到的屏幕Intent数据 |
Map<String, RtcVideoEncodeParams> | videoEncodeParams | null | 【含义】Video编码参数集合,当前主要是屏幕分享使用,用于配置屏幕分享的分辨率、帧率、码率等。 Key一般设置为RtcParameterSetting.RtcMediaTarget,Value详细查看RtcVideoEncodeParams定义的属性 |
BRTCScreenShareParams | screenShareParams | null | 【含义】设置屏幕分享参数详细配置,可替代在videoEncodeParams配置屏幕分享视频参数 |
其中RtcParameterSetting.RtcMediaTarget定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
String | TARGET_VIDEO_DEFAULT | video | 【含义】默认视频。 |
String | TARGET_VIDEO_SCREEN | video_screen | 【含义】分享屏幕。 |
String | TARGET_AUDIO_DEFAULT | audio | 【含义】默认音频。 |
其中 RtcVideoEncodeParams属性定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
int | videoWidth | 640 | 【含义】采集视频宽 【说明】推荐使用32位对齐的视频采集宽度,由于部分平台兼容性问题,非32位对齐可能存在视频编解码异常。 |
int | videoHeight | 480 | 【含义】采集视频高 【说明】推荐使用32位对齐的视频采集高度,由于部分平台兼容性问题,非32位对齐可能存在视频编解码异常。 |
int | videoFps | 20 | 【含义】视频初始帧率 【说明】通信时,实际帧可能会根据当前带宽上下波动。 |
int | videoMaxkbps | 1000 | 【含义】视频最高码率 【说明】通信时,实际发送的视频码率不超过最高码率。 |
其中 BRTCScreenShareParams属性定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
boolean | mEnableVideoCapture | true | 【含义】是否开启系统屏幕采集。 |
boolean | mEnableAudioCapture | false | 【含义】是否开启系统音频采集。 |
BRTCScreenShareVideoParams | mVideoCaptureParams | - | 【含义】屏幕采集参数,继承自RtcVideoEncodeParams兼容旧版配置,参数定义与之相同,默认值videoWidth=720,videoHeight=1280,videoFps=10,videoMaxkbps=1500。 |
BRTCScreenShareAudioParams | mAudioCaptureParams | - | 【含义】系统音频参数,包含channel、sampleRate配置。 |
设置音频编码配置
public abstract int setAudioProfile(BRTCAudioProfileType profile, BRTCAudioScenario scenario);
音频编码及应用场景配置。
音频编码及应用场景配置。主要为简化设置媒体参数接口对音频参数的设置,使用该方法时将覆盖设置媒体参数接口对音频相关的参数设置,如果不使用该接口, 则设置媒体参数对音频参数的设置有效。另外,同设置媒体参数一样, 该函数在登录房间前调用,否则无效。
参数
参数 | 类型 | 描述 |
---|---|---|
profile | BRTCAudioProfileType | 该参数设置音频采样率、码率、编码模式及声道数。 |
scenario | BRTCAudioScenario | 音频应用场景。 |
BRTCAudioProfileType 定义
设置音频采样率、码率及声道数。
类型 | 值 | 描述 |
---|---|---|
BRTC_AUDIO_PROFILE_DEFAULT | 0 | 默认配置:同BRTC_AUDIO_PROFILE_HIGH_QUALITY |
BRTC_AUDIO_PROFILE_LOW_QUALITY | 1 | 低音质配置:采样率8KHz, 单声道, 最大编码码率12Kbps |
BRTC_AUDIO_PROFILE_STANDARD | 2 | 标准配置:采样率16KHz, 单声道, 最大编码码率32Kbps |
BRTC_AUDIO_PROFILE_HIGH_QUALITY | 3 | 高音质配置:采样率48KHz, 单声道, 最大编码码率48Kbps. |
BRTC_AUDIO_PROFILE_STEREO_HIGH_QUALITY | 4 | 立体声高音质配置:采样率48KHz, 双声道, 最大编码码率80Kbps |
BRTC_AUDIO_PROFILE_SUPER_QUALITY | 5 | 超高音质配置:采样率48KHz, 单声道, 最大编码码率96Kbps |
BRTC_AUDIO_PROFILE_STEREO_SUPER_QUALITY | 6 | 立体声超高音质配置:采样率48KHz, 双声道, 最大编码码率128Kbps |
BRTCAudioScenario 定义
音频应用场景。
类型 | 值 | 描述 |
---|---|---|
BRTC_AUDIO_SCENARIO_DEFAULT | 0 | 默认场景:同BRTC_AUDIO_SCENARIO_SPEECH |
BRTC_AUDIO_SCENARIO_SPEECH | 1 | 语音场景:语音清晰及传输稳定流畅,适用于双向语音通信场景 |
BRTC_AUDIO_SCENARIO_MUSIC | 2 | 音乐场景:高品质音乐音质,适用于高音质的场景 |
BRTC_AUDIO_SCENARIO_METAVERSE | 3 | 元宇宙场景:支持高音质及立体声 |
设置回调代理
public abstract boolean setBaiduRtcRoomDelegate(BaiduRtcRoomDelegate baiduRtcRoomDelegate);
代理设置。
设置RTC Room 代理对象。使用 RTC Room 功能,初始化相关组件时需要设置代理对象,代理对象用户事件回调。未设置代理对象,或对象设置错误,可能导致无法收到相关回调。
参数
参数 | 类型 | 描述 |
---|---|---|
baiduRtcRoomDelegate | BaiduRtcRoomDelegate | 遵循 BaiduRtcRoomDelegate 协议的代理对象 |
返回
true 成功,false 失败
开启/关闭引擎统计信息
public abstract void setEngineStateStatistics(boolean bOnStatistics);
引擎统计信息开关。
当打开开关时 onEngineStatisticsInfo 函数会每隔2秒返回引擎的统计信息,并且可通过queryEngineStatisticsInfo主动函数查询到引擎统计信息
参数
参数 | 类型 | 描述 |
---|---|---|
bOnStatistics | bool | 是否打开RTC引擎统计信息, bOnStatistics = true,打开开关,bOnStatistics = false, 关闭引擎统计信息 |
房间相关接口
登录房间
public abstract boolean loginRtcRoomWithRoomName(String roomName,
int userId,
String displayName,
boolean asPublisher,
boolean asListener);
登录房间。
登录成功后同一个房间的的成员能够互相看到和听到。Publisher 为发布音/视频的角色,Listener 为接收音/视频的角色。每一个房间里的用户可以同时为 Publisher 和 Listener,也可以选择性的Publisher 和 Listener。
参数
参数 | 类型 | 描述 |
---|---|---|
roomName | String | 房间名,长度不可超过 255 byte |
userId | long | 用户ID,每个房间的用户ID必须唯一 |
displayName | String | 用户显示名 |
asPublisher | boolean | 是否作为发布者 |
asListener | boolean | 是否作为听众 |
返回
true 成功,false 失败
注意
如果失败,会通过错误信息更新回调返回错误信息。
强制登录房间
public abstract boolean loginRtcRoomWithRoomName(String roomName,
int userId,
String displayName,
boolean isCompulsive);
强制登录房间。
登录房间成功,在同一个房间的人能进行相互音视频聊天。开启强制登录,若房间内之前存在同一userID用户,将被踢出,建议在断网重连或者初次登录失败时调用。
参数
参数 | 类型 | 描述 |
---|---|---|
roomName | String | 房间名,长度不可超过 255 byte, 不可包括特殊字符及中文 |
userId | int | 用户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 |
禁言某成员 (1/2)
public abstract void shutUpUserWithId(int userId);
禁言某人。
房管/主播/会议主持 禁止某人发言。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | int | 在房间中的用户的用户ID |
弃用
v1.3.2 后推荐使用shutUpUserWithId(int userId, bool disable)替换。
禁言某成员 (2/2)
public abstract void shutUpUserWithId(int userId, bool disable);
是否禁言某成员。
房管/主播/会议主持 禁止某成员发言。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | int | 在房间中的用户的 用户ID |
bool | disable | 禁言/取消禁言 |
获取房间成员ID列表
public abstract UserList queryUserListOfRoom()
查询房间内成员ID列表,已废弃,请使用新接口 queryUserList
获取房间中所有成员ID信息。
public abstract void queryUserList(BRtcCallback.QueryRoomUsersCallback queryRoomUsersCallback);
查询房间内成员ID列表, 通过回调接口返回相关数据。
获取房间中所有成员ID信息。
返回
用户ID信息列表
获取房间成员详细列表
public abstract RtcRoomUserInfo[] getUserListOfRoom()
查询房间用户详细信息。
获取房间中所有参与者的详细信息列表。
返回
用户详细信息列表
发布/订阅相关接口
开始直播推流
public abstract void startPublish();
开始直播推流。
发布媒体流,开始直播。与直播转推接口configLiveServerWithUrl(推流地址通过该接口设置)配合使用。
调用时机:接收到房间登录成功事件BaiduRtcRoomDelegate.RTC_ROOM_EVENT_LOGIN_OK之后;
注意 该接口仅直播场景使用。与stopPublish接口配对使用。
开始视频推流
public abstract void startVideoPublish();
开始视频推流,仅仅作用于 RtcParameterSettings.enablePruneSignal = true
停止直播推流
public abstract void stopPublish();
停止直播推流。
停止发布流,结束直播。
注意 该接口仅直播场景使用。与startPublish接口配对使用。
停止视频推流
public abstract void stopVideoPublish();
停止视频推流,仅仅作用于 RtcParameterSettings.enablePruneSignal = true
发布媒体流
public abstract void publishStreaming();
发布本地媒体流。
仅当RtcParameterSettings.AutoPublish设置为false(非自动发布)时,手动发布本地媒体流。
调用时机:接收到房间登录成功事件BaiduRtcRoomDelegate.RTC_ROOM_EVENT_LOGIN_OK之后;
订阅某成员媒体流 (1/2)
public abstract void subscribeStreaming(int videoViewIdx,long feedId);
订阅远端成员订阅流。
仅当RtcParameterSettings.AutoSubscribe设置为false(非自动订阅)时,手动订阅远端用户媒体流。 其中videoViewIdx为setRemoteDisplayGroup接口设置的视窗组中显示窗口索引号。
参数
参数 | 类型 | 描述 |
---|---|---|
videoViewIdx | int | 视频窗口索引号 |
feedId | long | 远端用户ID |
弃用 v1.3.2后弃用,建议使用订阅某成员媒体流 (2/2)接口替换,渲染窗口通过设置远端渲染窗口 (2/2) 动态设置。
订阅某成员媒体流 (2/2)
public abstract void subscribeStreaming(long feedId);
订阅远端成员订阅流。
仅当RtcParameterSettings.AutoSubscribe设置为false(非自动订阅)时,手动订阅远端用户媒体流。渲染窗口通过 setRemoteDisplay(RTCVideoView remoteVideoView, long userId) 动态设置。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
订阅所有远端用户视频流
public abstract void subscribeAllRemoteVideoStreams();
可在加入房间前、后调用;加入房间前调用等同于配置HasRemoteVideo字段
订阅所有远端用户音频流
public abstract void subscribeAllRemoteAudioStreams();
可在加入房间前、后调用;加入房间前调用等同于配置HasRemoteAudio字段
订阅某成员视频流
public abstract void subscribeVideoStreaming(long feedId);
手动订阅-开始订阅指定用户视频流 or 自动订阅时,开始订阅指定用户视频流
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
订阅某成员音频流
public abstract void subscribeAudioStreaming(long feedId);
手动订阅-开始订阅指定用户视频流 or 自动订阅时,开始订阅指定用户音频流
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
停止订阅某成员媒体流
public abstract void stopSubscribeStreaming(long feedId);
停止订阅。
停止订阅流。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
停止订阅所有远端用户视频流
public abstract void stopSubscribeAllRemoteVideoStreams();
可在加入房间前、后调用;加入房间前调用等同于配置HasRemoteVideo字段
停止订阅所有远端用户音频流
public abstract void stopSubscribeAllRemoteAudioStreams();
可在加入房间前、后调用;加入房间前调用等同于配置HasRemoteAudio字段
停止订阅某成员视频流
public abstract void stopSubscribeVideoStreaming(long feedId);
停止订阅指定用户视频流 参数
参数 | 类型 | 描述 |
---|---|---|
feedId | long | 远端用户ID |
停止订阅某成员音频流
public abstract void stopSubscribeAudioStreaming(long feedId);
停止订阅指定用户音频流 参数
参数 | 类型 | 描述 |
---|---|---|
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 sendData(ByteBuffer data);
发送Data数据。
Data 数据通道保证顺序性和完整性。 使用数据通道能够同时传输音视频之外的相关数据。
参数
参数 | 类型 | 描述 |
---|---|---|
data | ByteBuffer | 要发送的数据 |
注意 发送Data 数据, 需要先打开datachannel 功能: RtcParameterSettings cfg = RtcParameterSettings.getDefaultSettings(); cfg.HasData = true; mVideoRoom.setParamSettings(cfg,RtcParameterSettings.RtcParamSettingType.RTC_PARAM_SETTINGS_ALL);
视频相关接口
开启本地预览
public abstract void startPreview();
本地预览。
打开camera,开始预览。
停止本地预览
public abstract void stopPreview();
停止预览。
关闭camera, 停止本地预览。
设置本地渲染窗口
public abstract void setLocalDisplay(RTCVideoView localVideoView);
设置本地视频预览窗口。
设置本地相机预览窗口。 外部采集模式下勿需调用。 调用时机:登录房间之前。
参数
参数 | 类型 | 描述 |
---|---|---|
localVideoView | RTCVideoView | 本地显示窗口,用于显示camera采集的视频数据 |
RTCVideoView 主要接口
接口 | 描述 |
---|---|
setScalingType(ScalingType scalingType) | 设置画面裁剪模式: SCALE_ASPECT_FIT:等比缩放,保持视频比例,保留视频全部内容,未被填满区域填充背景色。 SCALE_ASPECT_FILL:全屏裁剪,保持视频比例,铺满整个视图,视频超出部分被裁剪。 SCALE_ASPECT_FILL_WITHOUT_CROP:保留视频全部内容,不裁剪,填充整个视图,画面可能变形。 |
setMirror(boolean mirror) | 设置显示镜像 |
clearImage() | 清屏,显示区域置黑。 |
设置远端渲染窗口 (1/3)
public abstract void setRemoteDisplay(RTCVideoView remoteVideoView);
设置远端显示窗口。 适用于1 v 1通信场景,不支持VideoView动态绑定与更新。
调用时机: 登录房间之前。
参数
参数 | 类型 | 描述 |
---|---|---|
remoteVideoView | RTCVideoView | 远端画面显示窗口, 用于显示远端用户传输过来的视频数据 |
设置远端渲染窗口 (2/3)
public abstract void setRemoteDisplay(RTCVideoView remoteVideoView, long feedId)
设置指定远端用户显示窗口。
可适用于1 v 1、1 v N等多种场景,支持RTCVideoView与User的动态绑定与更新,若不调用removeRemoteDisplay(long userId)主动释放VideoView(可缺省调用),则Videoview在远端用户离开或本端登出房间时自动释放。 调用时机: 本端登录房间前或远端用登入房间并获取到对应的feedId均可,推荐在 BaiduRtcRoomDelegate.RTC_ROOM_EVENT_REMOTE_COMING事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
remoteVideoView | RTCVideoView | 远端画面显示窗口, 用于显示远端用户传输过来的视频数据 |
feedId | long | 远端成员ID |
设置远端渲染窗口 (3/3)
public abstract void setRemoteDisplay(RTCVideoView remoteVideoView, long feedId, String viewMediaTarget);
设置指定远端用户指定流的显示窗口。
可适用于1 v 1、1 v N等多种场景,支持RTCVideoView与User的指定流绑定,主要扩展一个用户同时推多路视频流时,viewMediaTarget指定具体用户的哪路流,常用于多流模式的屏幕分享,指定具体是用户的哪一路视频流。 调用时机:推荐在 BaiduRtcRoomDelegate.RTC_ROOM_EVENT_REMOTE_COMING事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
remoteVideoView | RTCVideoView | 远端画面显示窗口, 用于显示远端用户传输过来的视频数据 |
feedId | long | 远端成员ID |
viewMediaTarget | String | 远端成员ID推的哪一路流,可使用RtcParameterSettings.RtcMediaTarget做类型匹配 |
移除远端用户渲染窗口
public abstract void removeRemoteDisplay(long userId)
移除远端用户渲染窗口。
移除并释放远端用户所对应的渲染窗口,可通过setRemoteDisplay(RTCVideoView, long)接口再次设置渲染窗口。若不主动调用该接口释放渲染,则相应的渲染视图将在远端用户退出或本端登出房间时释放。
注意
仅与setRemoteDisplay(RTCVideoView remoteVideoView, long feedId)配对使用,可缺省调用。
窗口视图不见时,通过该接口释放渲染视图可优化系统资源占用。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
设置远端渲染窗口组
public abstract void setRemoteDisplayGroup(RTCVideoView[] remoteVideoViewGroup);
设置远端显示窗口组。
与subscribeStreaming(int videoViewIdx, long feedId)接口配合使用,可用于提前创建布局,订阅指定的用户渲染到相应的窗口上。 调用时机:登录房间之前。
参数
参数 | 类型 | 描述 |
---|---|---|
remoteVideoViewGroup | RTCVideoView[] | 远端画面显示view列表, 用于显示远端用户画面 |
设置本地视频采集器
public abstract void setVideoCapture(RTCVideoCapture rtcVideoCapture);
设置视频外部采集器。 若开启视频外部采集,则sdk内部不打开拍摄头采集视频。本地视频由用户传入的外部采集器传入。
调用时机:登录房间之前。
参数
参数 | 类型 | 描述 |
---|---|---|
rtcVideoCapture | RTCVideoCapture | 视频采集器 |
开启/关闭本地视频外部采集
public abstract void enableExternalVideoCapturer(boolean isEnable);
使能视频外部采集。
参数
参数 | 类型 | 描述 |
---|---|---|
isEnable | boolean | true:外部采集;false:内部采集 |
设置某成员外部渲染器
public abstract void addExternalRenderer(long userId, RTCVideoExternalRender render);
设置外部渲染。
为指定用户设置外部视频渲染器,外部采集模式若不设置外部渲染器则使用默认外部渲染器。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
render | RTCVideoExternalRender | 渲染器 |
移除某成员外部渲染器
public abstract void removeExternalRenderer(long userId);
移除外部渲染器。
移除指定用户的外部渲染器。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
设置某成员外部渲染Surface
public abstract void setExternalSurface(long userId, Surface remoteSurface);
设置外部渲染Surface。
设置外部渲染Surface,该接口需在主线程调用。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
remoteSurface | Surface | surface |
更新外部渲染Surface尺寸
public abstract void changeSurfaceSize(long userId, int width, int height);
外部surface 尺寸变更。
外部surface 尺寸变更。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
width | int | 宽 |
height | int | 高 |
销毁指定用户对应的外部渲染surface
public abstract void destroyExternalSurface(long userId, Surface remoteSurface);
销毁指定用户对应的surface。
销毁指定用户对应的surface 及 外部渲染器。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
remoteSurface | Surface | surface |
获取远端视频尺寸
public abstract RtcRoomVideoDimension getRemoteVideoDimension(long userId);
获取视频video dimension。
当远端视频达到后,可通过该接口获取远端视频流的Dimension信息。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
返回
RtcRoomVideoDimension
截屏相关
/** SnapShotHelper 对象构建 */
public SnapShotHelper(RTCVideoView renderer, Handler handler);
/** 开始截屏 */
public void takeSnapShot(final String filePath, SnapShotCallback callback);
参数
参数 | 类型 | 描述 |
---|---|---|
render | RTCVideoView | 需要截屏的VideoView,截屏本地输入LocalDisplay,截屏远端输入RemoteDisplay |
handler | Handler | 暂时默认输入null |
filePath | String | 文件保存路径地址默认是jpg格式,如果使用外部存储需要有写权限 |
callback | SnapShotCallback | 截屏事件回调 |
/**
* 截图回调
*/
public interface SnapShotCallback {
/**
* 截图
* @param success 是否截图成功
* @param description 截图成功则该参数返回文件路径,否则返回出错描述
*/
void onSnapShotTake(boolean success, String description);
}
视频前处理相关
设置背景分割、虚化
public abstract void enableHumanSeg(boolean enable, BRTCEffectParams humanSegParams);
启停背景分割或虚化功能,可在通话前、通话中设置。
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 启动或停止背景分割功能 |
humanSegParams | BRTCEffectParams | 背景分割或虚化配置 |
BRTCEffectParams 定义
其中BRTCEffectParams属性定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
String | resourcePath | - | 特效资源地址,通常背景分割或虚化会提供一个特效包,此参数为特效包在本地的解压后的路径。 |
String | resourceId | - | 特效资源ID。 |
设置实时视频水印
public abstract void enableWatermark(boolean enable, BRTCWatermarkParams watermarkParams);
启停水印功能,可在通话前、通话中设置。
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 启动或停止实时视频功能 |
watermarkParams | BRTCWatermarkParams | 水印参数配置 |
BRTCWatermarkParams 定义
其中BRTCWatermarkParams属性定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
List |
watermarkParamList | - | 水印参数配置集合,多条水印可共存显示。 |
每一条水印存储在BRTCWatermarkParam中。
BRTCWatermarkParam 定义
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
WatermarkType | watermarkType | - | 类型:image、string、time。 |
Rect | rect | - | 水印位置,左上右下,像素值。 当类型是图片时,默认以rect计算的width和height为准,若未设置right、bottom,则以图片宽高为准。 当类型是字符串,将忽略bottom,由文字大小来决定最终的高度。 当类型是时间时,将忽略right和bottom,以生成的时间字符串为准。 |
String | watermarkResource | - | 资源地址。 image(固定资源图片(png) 或 绝对目录文件路径)。 字符串(静态字符串 (字符长度有最大限制,可根据设置的宽度,自动换行,居左对齐))。 时间(默认如果不设置时,使用yyyy-MM-dd HH:mm:ss format,可配置 yyyy-MM-dd\nHH:mm:ss 其中增加\n来进行换行)。 |
float | textSize | 13 | 文字大小,像素。 |
int | textColor | Color.rgb(255, 255, 255) | 文字颜色。 |
float | shadowRadius | 1f | 文字阴影半径。 |
float | shadowDx | 0f | 文字阴影x偏移。 |
float | shadowDy | 1f | 文字阴影y偏移。 |
int | shadowColor | Color.DKGRAY | 文字阴影颜色。 |
WatermarkType 定义
类型 | 值 | 描述 |
---|---|---|
IMAGE | 0 | 图片,可为本地drawable资源图或者存储在本地的图片 |
STRING | 1 | 字符串 |
TIME | 2 | 时间 |
本地录制相关接口
获取录制功能入口
public abstract IRtcMediaRecorder getBRTCMediaRecorder();
录制功能通过此接口获取到IRtcMediaRecorder后,调用相关接口进行录制操作。
返回
IRtcMediaRecorder
IRtcMediaRecorder定义
接口 | 描述 |
---|---|
int startRecording(BRTCMediaRecorderParams params) | 启动录制,BRTCMediaRecorderParams为启动录制的参数配置,接口返回值0调用接口成功,否则调用接口失败 |
int stopRecording() | 停止录制,返回值0调用接口成功,否则调用接口失败 |
void release() | 释放录制资源,调用后不可再调用其他接口 |
void setMediaRecorderCallback(BRTCMediaRecorderCallback callback) | 设置录制回调,详细参见BRTCMediaRecorderCallback定义 |
boolean isReleased() | 获取是否已释放状态,true表示已释放,false表示未释放 |
BRTCMediaRecorderParams定义
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
BRTCMediaRecorderType | mediaRecorderType | BRTCMediaRecorderType.AUDIO_VIDEO | 录制类型。包含纯音频、纯视频、音视频、混流纯音频、混流纯视频、混流音视频。 |
BRTCMediaMixType | mediaMixType | BRTCMediaMixType.PIP | 混流录制画面布局类型。包含画中画、主次布局、平铺布局。 |
String | storagePath | - | 录制文件存储位置。 |
BRTCMediaEncodeParams | encodeParams | - | 录制参数,参见BRTCMediaEncodeParams定义。 |
long | maxRecordDuration | - | 录制最大时长,单位毫秒。 |
long | infoUpdateInterval | - | 录制信息更新间隔,单位毫秒。 |
BRTCMediaRecorderType定义
类型 | 值 | 描述 |
---|---|---|
AUDIO_VIDEO | 0 | 音视频 |
AUDIO_ONLY | 1 | 纯音频 |
VIDEO_ONLY | 2 | 纯视频 |
MIX_AUDIO_VIDEO | 3 | 混流音视频 |
MIX_AUDIO_ONLY | 4 | 混流纯音频 |
MIX_VIDEO_ONLY | 5 | 混流纯视频 |
BRTCMediaMixType定义
类型 | 值 | 描述 |
---|---|---|
PIP | 0 | 画中画布局:远端第一路为大画面,其余画面悬浮于画布底部,子画面从右向左依次平铺,子画面的宽为整个画布宽的1/5,高为整个画布高的1/5。 |
PAS | 1 | 主次平铺布局:远端第一路为大画面,其余画面自上而下依次垂直排列于右侧,左侧大画面的宽为整个画布宽的4/5,左侧大画面的高为整个画布高; 右侧小画面的宽为整个画布宽的1/5,右侧小画面的高为整个画布高的1/5。 |
TILE | 2 | 平铺布局:本地画面作为第一路,根据流数量自动调整每个画面的大小,每个画面大小一致; 画面数为1时,画面的宽和高分别为整个画布宽和高; 画面数为2时,每个小画面的宽为整个画布宽的1/2,每个小画面的高为整个画布高; 画面数大于2小于等于4时,每个小画面的宽和高分别为整个画布宽和高的 1/2; 画面数大于4小于等于6时,每个小画面的宽为整个画布宽的1/2,每个小画面的高为画布高的1/3 |
BRTCMediaRecorderParams定义
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
String | videoCodec | MediaFormat.MIMETYPE_VIDEO_AVC | 视频编码格式,默认H264。 |
int | videoWidth | - | 视频宽度。 |
int | videoHeight | - | 视频高度。 |
int | videoFps | - | 视频帧率。 |
int | videoIFrameInterval | 5 | I帧间隔。 |
int | videoBitrate | - | 视频码率。 |
String | audioCodec | MediaFormat.MIMETYPE_AUDIO_AAC | 音频编码格式,默认AAC。 |
int | audioSampleRate | - | 采样率。 |
int | audioChannel | - | 声道数。 |
int | audioBitrate | - | 音频码率。 |
BRTCMediaRecorderCallback定义
接口 | 描述 |
---|---|
void onRecordStateChanged(int state, int code) | 录制状态改变回调,参见下面的state及code定义 |
void onRecordInfoUpdate(long durationMs, long fileSize) | 录制信息回调更新,durationMs录制时长, fileSize文件大小 |
state回调状态
类型 | 值 | 描述 |
---|---|---|
RECORDER_STATE_ERROR | -1 | 录制状态:错误 |
RECORDER_STATE_START | 1 | 录制状态:开始 |
RECORDER_STATE_STOP | 2 | 录制状态:停止 |
code状态码
类型 | 值 | 描述 |
---|---|---|
RECORDER_CODE_SUCCESS | 0 | 成功 |
RECORDER_CODE_ERROR_PARAMS_INVALID | -100 | 参数无效 |
RECORDER_CODE_ERROR_INITIALIZED | -101 | 初始化异常 |
RECORDER_CODE_ERROR_OVER_MAX_DURATION | -102 | 超过最大时长 |
RECORDER_CODE_ERROR_RECORDING_STATE | -103 | 录制状态异常 |
RECORDER_CODE_ERROR_ENGINE_RELEASED | -104 | BRTC引擎已释放 |
RECORDER_CODE_ERROR_WRITE_FAILED | -105 | 写入异常 |
RECORDER_CODE_ERROR_RECORDER_RELEASED | -106 | 录制已释放 |
RECORDER_CODE_ERROR_MUXER_STOP | -107 | 合成器停止异常 |
RECORDER_CODE_ERROR_MUXER_START | -108 | 合成器启动异常 |
摄像头相关接口
切换摄像头
public abstract void switchCamera();
切换摄像头。
前/后摄像头切换。
设置摄像头ID
public abstract void setCameraID(int cameraId);
设置指定的摄像头ID。 调用时机: 登录房间之前。
参数
参数 | 类型 | 描述 |
---|---|---|
cameraId | int | 摄像头ID |
关闭/开启本地视频采集
public abstract void muteCamera(boolean muted);
关闭/打开摄像头。
在关闭摄像头后,本地无法预览,且不传输本地视频数据给对方。
参数
参数 | 类型 | 描述 |
---|---|---|
muted | boolean | 是否打开摄像头 |
音频相关接口
关闭/开启麦克风静音
public abstract void muteMicphone(boolean muted);
开启/关闭 麦克风静音(不关闭手机麦克风设备)。
如果需要关闭麦克风设备,请查看enableMicCapture接口。
参数
参数 | 类型 | 描述 |
---|---|---|
muted | boolean | true表示要静音, false表示取消静音 |
关闭/开启麦克风采集
public abstract void enableMicCapture(boolean enableMic);
开启/关闭 麦克风采集(关闭手机麦克风设备)。
参数
参数 | 类型 | 描述 |
---|---|---|
enableMic | 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:开启音频输出 (默认) |
设置远端用户音频播放音量
public abstract void setUserPlaybackVolume(long userId, int volume)
设置远端用户音频播放音量。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 远端用户id |
volume | int | 设置的音量范围 [0,400] ,>100可增益 |
设置远端所有用户音频播放音量
public abstract void setPlaybackVolume(int volume)
设置所有远端用户播放音量。
参数
参数 | 类型 | 描述 |
---|---|---|
volume | int | 设置的音量范围 [0,400] ,>100可增益 |
设置采集或自定义采集的音量
public abstract void setAudioCaptureVolume(int volume)
设置采集音量或者自定义采集的音量。
参数
参数 | 类型 | 描述 |
---|---|---|
volume | int | 设置的音量范围 [0,400] ,>100可增益 |
查询扬声器是否开启
public abstract boolean isSpeakerOn()
查询扬声器是否开启。
获取房间成员语音激励列表
public abstract RtcRoomAudioLevel[] getRemoteAudioLevels();
语音激励接口。
获取用户语音激励列表。
返回
RtcRoomAudioLevel[]
启停用户音量提示回调
public abstract void enableAudioVolumeIndication(boolean enable, int interval)
启停用户音量提示,启用后,会通过onAudioVolumeIndication回调,与getRemoteAudioLevels接口的差别在于,getRemoteAudioLevels为主动调用一次,此接口会周期性回调。
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否启动音量提示回调 |
interval | int | 音量提示回调周期,单位毫秒 |
设置是否拉取某成员音频流
public abstract void setRemoteAudioPlayState(boolean stats, long userId);
指定远端音频暂停/恢复播放。
通过控制音频流拉取,控制指定远端用户音频暂停/恢复播放。
参数
参数 | 类型 | 描述 |
---|---|---|
stats | boolean | true:拉取,false:停止拉取。默认拉取 |
userId | long | 用户ID |
设置是否拉取某成员视频流
public abstract void setRemoteVideoPlayState(boolean stats, long userId);
指定远端画面暂停/恢复播放。
通过控制流的拉取与否,指定远端画面暂停/恢复播放。
参数
参数 | 类型 | 描述 |
---|---|---|
stats | boolean | true:拉取;false:停止拉取 |
userId | long | 用户ID |
设置音频输出设备
public abstract void setSoundMod(RtcSoundMode soundMod)
设置音频输出设备,扬声器/听筒。
参数
参数 | 类型 | 描述 |
---|---|---|
soundMod | RtcSoundMode | 音频输出方式:扬声器/听筒 |
设置自定义音频采集
// 设置外部音频采集
public abstract void enableExternalAudioRecord(boolean isEnable);
// 获取外部音频采集状态
public abstract boolean isExternalAudioRecord();
// 获取外部音频采集回调, 用于输入音频数据
public abstract RTCAudioSamples.RTCExternalSamplesReadyCallback getExternalAudioSamplesCallback();
// 音频回调接口
public static interface RTCExternalSamplesReadyCallback {
void onRtcAudioExternalSamplesReady(RTCAudioSamples samples);
}
开启自定义音频采集(外部音频采集)
设置自定义音频渲染
// 设置外部音频渲染
public abstract void enableExternalAudioRender(boolean isEnable);
// 获取外部音频渲染状态
public abstract boolean isExternalAudioRender();
// 设置远端音频渲染回调
public abstract void setRemoteAudioSamplesCallback(RTCAudioSamples.RTCRemoteSamplesReadyCallback callback);
开启自定义音频渲染(外部音频渲染)
设置本地音频数据回调
public abstract void setAuidoSamplesReadyCallback(RTCAudioSamples.RTCSamplesReadyCallback samplesReadyCallback);
设置本端音频数据回调。
在 登录房间前设置,进入通信后通过该接口回调本端PCM音频数据。
参数
参数 | 类型 | 描述 |
---|---|---|
samplesReadyCallback | RTCAudioSamples.RTCSamplesReadyCallback | 音频接收 |
开启默认音频自动增益
public abstract void enableAgc(boolean enable)
开启音频自动增益。
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 开启/关闭 |
开启默认音频自动噪声抑制
public abstract void enableAns(boolean isAns)
开启默认音频自动噪声抑制。
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 开启/关闭 |
开启默认音频回声消除
public abstract void enableAec(boolean enable)
开启默认音频回声消除。
参数
参数 | 类型 | 描述 |
---|---|---|
enable | boolean | 开启/关闭 |
开启/关闭变声能力
public abstract void enableVoiceChange(boolean enableVoiceChange)
开启/关闭变声能力。
参数
参数 | 类型 | 描述 |
---|---|---|
enableVoiceChange | boolean | 开启/关闭变声 |
设置变声类型
public abstract void setVoiceChangeType(BdRTCVoiceChangeType voiceChangeType)
设置变声类型。
参数
参数 | 类型 | 描述 |
---|---|---|
voiceChangeType | BdRTCVoiceChangeType | 变声类型 |
BdRTCVoiceChangeType 类型 | 描述 |
---|---|
AUDIO_EFFECT_ORIGIN | 原声 |
AUDIO_EFFECT_LUOLI | 萝莉 |
AUDIO_EFFECT_DASHU | 大叔 |
AUDIO_EFFECT_ZHENGTAI | 正太 |
AUDIO_EFFECT_FEIZAI | 肥仔 |
AUDIO_EFFECT_KTV | KTV |
AUDIO_EFFECT_FOZU | 佛祖 |
AUDIO_EFFECT_SINGER_FINE | K歌 |
播放本地音频文件
public abstract IRtcAudioManager getBRTCAudioManager();
获取音频控制器
包括混音、播放本地音频文件(支持MP3,AAC等Android系统解码器可解码的音频文件格式,并推送到远端)。
IRtcAudioManager 定义
接口 | 描述 |
---|---|
void enableAudioMix(boolean isEnable) | 是否启用音频混音,原BaiduRtcRoom混音接口,移到该音频管理接口下 |
int setExternalMixAudio(ByteBuffer music, int length) | 原BaiduRtcRoom外部音频混音接口,移到该音频管理接口下 |
int setExternalMixAudio(String filePath, boolean pushRemote, int cycle, long startTime); | 本地音频文件混音推流 |
filePath: 本地音频文件地址 | |
pushRemote: 是否推流到远端 值: true:推流,同时本地播放; false:不推流,只本地播放; |
|
cycle: 播放次数 值: 0:不播放; 1:播放1次; -1(负数):循环播放; |
|
startTime: 开始播放位置,默认是0 | |
void pauseExternalMixAudio() | 暂停外部混音(停止播放,停止推流) |
void resumeExternalMixAudio() | 继续外部混音(从之前pause的位置继续) |
外部编码
开启外部编码
public abstract void enableExternalVideoEncode(boolean isEnable);
开启外部编码
enable=true
视频外部编码, 开启外部编码需要同步设置编码的宽高和码率, 参考cfg.VideoResolution = "1280x720-1500kbps
发送外部编码数据
public abstract void sendExternalEncodedImage(RtcEncodedImage image);
视频裸流发送接口, 客户自定义视频捕获,视频编码环节后, 调用本接口发送编码后的数据.
public static class RtcEncodedImage { // 编码后的H264数据 public final ByteBuffer buffer; // 编码视频宽, 像素 public final int encodedWidth; // 编码视频高, 像素 public final int encodedHeight; // 视频采集时间, 单位纳秒, 参考System.nanoTime() public final long captureTimeNs; // 编码视频帧类型, 关键帧VideoFrameKey和非关键帧VideoFrameDelta public final RtcEncodedImage.FrameType frameType; // 用于区分不同外置编码器 public final int index; }
转推配置相关接口
配置媒体转推参数
public abstract boolean configLiveServerWithUrl(String url,
boolean isMix,
boolean isRecording,
String mixTemplate,
RtcLiveTransferMode transferMode);;
server端推流参数配置。
该接口用于配置Server推流的参数,聊天室模式:在同一个RTC房间的所有参与者在混流后,直接转推到一个指定的直播房间;主播转推模式:主播推向不同的直播房间
参数
参数 | 类型 | 描述 |
---|---|---|
url | String | rtmp推流地址 |
isMix | boolean | 是否做混流处理 |
isRecording | boolean | 是否录制 |
mixTemplate | String | 混流模板 |
transferMode | RtcLiveTransferMode | 转推模式: 聊天室模式, 主播转推模式 |
混流模板名称 | 说明 |
---|---|
side_by_side_primary_360p_4_3 | 主次平铺, 分辨率 480x360 (固定码率、帧率) |
side_by_side_primary_360p_4_3-xx-xx | 主次平铺, 分辨率 480x360 (自定义码率、帧率) 下面模板也可以设置 |
side_by_side_primary_360p_16_9 | 主次平铺, 分辨率640x360 |
side_by_side_primary_480p_4_3 | 主次平铺, 分辨率640x480 |
side_by_side_primary_480p_16_9 | 主次平铺, 分辨率854x480 |
side_by_side_primary_540p_16_9 | 主次平铺, 分辨率960x540 |
side_by_side_primary_720p_4_3 | 主次平铺, 分辨率960x720 |
side_by_side_primary_720p_16_9 | 主次平铺, 分辨率1280x720 |
side_by_side_equal_360p_4_3 | 平铺模式(大小相等), 分辨率480x360 |
side_by_side_equal_360p_16_9 | 平铺模式(大小相等), 分辨率640x360 |
side_by_side_equal_480p_4_3 | 平铺模式(大小相等), 分辨率640x480 |
side_by_side_equal_480p_16_9 | 平铺模式(大小相等), 分辨率854x480 |
side_by_side_equal_540p_16_9 | 平铺模式(大小相等), 分辨率960x540 |
side_by_side_equal_720p_4_3 | 平铺模式(大小相等), 分辨率960x720 |
side_by_side_equal_720p_16_9 | 平铺模式(大小相等), 分辨率1280x720 |
picture_in_picture_bottom_360p_4_3 | 画中画模式, 分辨率480x360 |
picture_in_picture_bottom_360p_16_9 | 画中画模式, 分辨率640x360 |
picture_in_picture_bottom_480p_4_3 | 画中画模式, 分辨率640x480 |
picture_in_picture_bottom_480p_16_9 | 画中画模式, 分辨率854x480 |
picture_in_picture_bottom_540p_16_9 | 画中画模式, 分辨率960x540 |
picture_in_picture_bottom_720p_4_3 | 画中画模式, 分辨率960x720 |
picture_in_picture_bottom_720p_16_9 | 画中画模式, 分辨率1280x720 |
side_by_side_primary_480p_9_16 | 主次平铺, 分辨率480x854(竖屏) |
side_by_side_primary_540p_9_16 | 主次平铺, 分辨率540*960(竖屏) |
side_by_side_primary_544p_9_16 | 主次平铺, 分辨率544*960(竖屏) |
side_by_side_primary_720p_9_16 | 主次平铺, 分辨率720*1280(竖屏) |
side_by_side_primary_1080p_9_16 | 主次平铺, 分辨率1080*1920(竖屏) |
side_by_side_equal_480p_9_16 | 平铺模式, 分辨率480x854(竖屏) |
side_by_side_equal_540p_9_16 | 平铺模式, 分辨率540*960(竖屏) |
side_by_side_equal_544p_9_16 | 平铺模式,分辨率544*960(竖屏) |
side_by_side_equal_720p_9_16 | 平铺模式,分辨率720*1280(竖屏) |
side_by_side_equal_1080p_9_16 | 平铺模式,分辨率1080*1920(竖屏) |
picture_in_picture_bottom_480p_9_16 | 画中画模式, 分辨率480x854(竖屏) |
picture_in_picture_bottom_540p_9_16 | 画中画模式,分辨率540*960(竖屏) |
picture_in_picture_bottom_544p_9_16 | 画中画模式,分辨率544*960(竖屏) |
picture_in_picture_bottom_720p_9_16 | 画中画模式,分辨率720*1280(竖屏) |
picture_in_picture_bottom_1080p_9_16 | 画中画模式,分辨率1080*1920(竖屏) |
返回
true 设置成功, false 失败。
通知相关接口
房间事件更新回调
public abstract void onRoomEventUpdate(int roomEvents, long data, String extraInfo);
房间用户状态信息通知。
包含本端登录、远端用户进出房间、房间管理、房间消息、房间通信质量等相关状态回调事件。
参数
参数 | 类型 | 描述 |
---|---|---|
roomEvents | int | 房间事件信息 |
data | long | 一般为 userID / feedID,特殊情况另做说明 |
extraInfo | String | 额外信息说明 |
BaiduRtcRoomDelegate 房间事件定义
事件 | 值 | 含义 | 备注 |
---|---|---|---|
RTC_ROOM_EVENT_LOGIN_OK | 100 | 登录房间成功 | 手动发布/订阅相关的调用需要在接收到房间登录成功回调之后。 |
RTC_ROOM_EVENT_LOGIN_TIMEOUT | 101 | 登录房间超时 | 不可恢复错误,可进行重连。 |
RTC_ROOM_EVENT_LOGIN_ERROR | 102 | 登录房间出错 | 不可恢复错误,可确认鉴权信息无误后进行重连。 |
RTC_ROOM_EVENT_CONNECTION_LOST | 103 | 与信令服务器连接断开 | 不可恢复错误,可进行重连。 |
RTC_ROOM_EVENT_REMOTE_COMING | 104 | 开始订阅远端流 | 无 |
RTC_ROOM_EVENT_REMOTE_LEAVING | 105 | 远端视频正在离开 | 无 |
RTC_ROOM_EVENT_REMOTE_RENDERING | 106 | 远端视频流到达 | 无 |
RTC_ROOM_EVENT_REMOTE_GONE | 107 | 远端视频流断开 | 无 |
RTC_ROOM_EVENT_REMOTE_AUDIO_ARRIVED | 108 | 远端音频流到达 | 无 |
RTC_ROOM_EVENT_REMOTE_AUDIO_REMOVED | 109 | 远端音频流断开 | 无 |
RTC_ROOM_EVENTS_DISBAND_ROOM | 112 | 解散房间 | 无 |
RTC_ROOM_EVENTS_SOMEBODY_SHUTUPED | 113 | 禁言 | 无 |
RTC_ROOM_EVENTS_SOMEBODY_DISSHUTUPED | 114 | 解禁 | 无 |
RTC_ROOM_EVENTS_SOMEBODY_KICKOFFED | 115 | 踢人 | 无 |
RTC_ROOM_EVENTS_LIVE_PUBLISH_SUCCESS | 116 | 转推成功 | 无 |
RTC_ROOM_EVENTS_LIVE_PUBLISH_FAIL | 117 | 转推失败 | 无 |
RTC_ROOM_EVENTS_LIVE_INTRERRUPT | 118 | 转推中断 | 无 |
RTC_ROOM_EVENT_REMOTE_ADDED_STREAM | 123 | 信令用户加入一条流 | 无 |
RTC_ROOM_EVENT_REMOTE_REMOVED_STREAM | 124 | 信令用户移除一条流 | 无 |
RTC_ROOM_EVENT_SHARE_SCREEN_START | 125 | 屏幕分享启动 | 回调后读取data判断,data = RTC_ROOM_STATE_SUCCESS 表示成功,非0 失败,extra_info 失败原因 |
RTC_ROOM_EVENT_SHARE_SCREEN_STOP | 126 | 屏幕分享停止 | 回调后读取data判断,data = RTC_ROOM_STATE_SUCCESS 表示成功,非0 失败,extra_info 失败原因 |
RTC_ROOM_EVENT_AVAILABLE_SEND_BITRATE | 200 | 当前发送端可用上行带宽 | 无 |
RTC_ROOM_EVENT_ON_USER_JOINED_ROOM | 300 | 用户进入房间 | 无 |
RTC_ROOM_EVENT_ON_USER_LEAVING_ROOM | 301 | 用户离开房间 | 无 |
RTC_ROOM_EVENT_ON_USER_MESSAGE | 302 | 消息 | 无 |
RTC_ROOM_EVENT_ON_USER_ATTRIBUTE | 303 | 用户属性 | 无 |
RTC_ROOM_CAPTURE_SCREEN_ON_STOP | 50000 | 屏幕共享关闭,常见于此App在共享中时,其他App启动屏幕共享,系统回馈onStop,或者手动关闭 | 无 |
重连策略
SDK 内部暂不提供重连接口,重连逻辑可在用户业务层实现,推荐重连策略:
- 重连逻辑可通过调用登出房间后再调用登录房间实现;接口调用间隔时间建议2S以上;
- 通信错误大多与网络连接异常引起,可在重连逻辑内可判断网络连接状态;
- 重连间隔1S以上,可设置最大重连次数小于10次;
实现源码可参考Rtc Sdk Demo;
连接状态更新回调
public abstract void onPeerConnectStateUpdate(boolean uplink, int state, String extinfo);
server连接状态通知。
当与server端连接状态变化时,通知业务层做后续处理。
uplink
标记上行和下行state
代表不同状态extinfo
根据不同state
表示不同含义
参数
参数 | 类型 | 描述 |
---|---|---|
connecStates | int | 连接状态码 |
BaiduRtcRoomDelegate.RTC_STATE_ICE_CONNECTED | 2004 | ice链接成功 |
BaiduRtcRoomDelegate.RTC_STATE_ICE_DISCONNECTED | 2005 | ice链接断开 |
BaiduRtcRoomDelegate.RTC_STATE_STREAM_DOWN | 2003 | ice失败 |
BaiduRtcRoomDelegate.RTC_STATE_STREAM_CLOSED | 2008 | 流关闭 |
BaiduRtcRoomDelegate.RTC_STATE_STREAM_UP | 2000 | 推流成功、拉流成功 |
BaiduRtcRoomDelegate.RTC_STATE_SENDING_MEDIA_OK | 2001 | 远端流到来 |
BaiduRtcRoomDelegate.RTC_STATE_SENDING_MEDIA_FAILED | 2002 | 远端流离开 |
BaiduRtcRoomDelegate连接状态事件定义
事件 | 值 | 含义 | 备注 |
---|---|---|---|
RTC_STATE_STREAM_UP | 2000 | 媒体流建立 | 无 |
RTC_STATE_SENDING_MEDIA_OK | 2001 | 媒体流发送成功 | 无 |
RTC_STATE_SENDING_MEDIA_FAILED | 2002 | 媒体流发送失败 | 媒体服务器一定时间内未曾接收到媒体流,可检测网络连接后进行重连。 |
RTC_STATE_STREAM_DOWN | 2003 | 媒体流断开 | 媒体服务器指示媒体流断开,可检测网络连接后进行重连。 |
媒体流信息更新回调
public abstract void onStreamInfoUpdate(String [] streamId);
媒体流信息通知。
当有远端或本地流信息到来时,通知业务层做后续处理。
参数
参数 | 类型 | 描述 |
---|---|---|
streamId | string数组 | 流信息ID |
回调事件
媒体流ID。
错误信息更新回调
public abstract void onErrorInfoUpdate(int errorInfo);
错误信息通知。
RTC通信过程中,错误信息的反馈。
参数
参数 | 类型 | 描述 |
---|---|---|
errorInfo | int | 错误信息 |
BaiduRtcRoomDelegate 错误事件定义
事件 | 值 | 含义 | 备注 |
---|---|---|---|
RTC_ROOM_SERVER_KEEPALIVE_TIMEOUT_ERROR | 402 | 信令心跳超时 | 需检查连接网络状态 |
RTC_ROOM_SERVER_SIGNAL_ERROR | 403 | 信令错误 | 检查信令调用 |
RTC_ROOM_USERID_ALREADY_EXIST_ERROR | 436 | 房间内已存该用户ID | 不可恢复错误,可修改userId后进行重连。 也可以使用强制登录接口进行强制登录。 |
RTC_ROOM_PEER_CONNECTION_ERROR | 10000 | 媒体通道连接错误 | 不可恢复错误,可进行重连。 |
房间数据接收回调
public abstract void onRoomDataMessage(ByteBuffer data);
数据接收。
该callback返回当前RTC Engine收到的数据消息。
参数
参数 | 类型 | 描述 |
---|---|---|
data | ByteBuffer | 引擎返回的数据消息 |
用户音量提示回调
public abstract void onAudioVolumeIndication(RtcRoomAudioLevel[] audioLevels);
该callback通过enableAudioVolumeIndication接口开启或停止,启动后,按照设置的时间间隔返回房间用户音量信息。
参数
参数 | 类型 | 描述 |
---|---|---|
audioLevels | RtcRoomAudioLevel[] | 房间用户音量信息 |
其他接口
获取SDK版本
public static String version()
SDK 版本号获取。
获取当前SDK版本号
返回
返回当前SDK版本号
开启/关闭调试信息输出
public static void setVerbose(boolean bOnVerbose)
是否打开调试信息。
建议在初始化 SDK 前调用。建议在调试阶段打开此开关,打开此开关后,将打开日志信息,方便调试。
参数
参数 | 类型 | 描述 |
---|---|---|
bOnVerbose | boolean | 是否打开调试信息,true 打开,false 不打开。默认为 false |
查询某成员媒体统计信息
public abstract HUDStatistics queryEngineStatisticsInfo(long userId);
查询RTC引擎统计信息。
用于获取RTC Engine 的一些运行状态信息,如cpu, video codec, fps等信息。
返回
RTC Engine状态统计信息
开启/关闭质量数据上报
public abstract void enableStatsToServer(boolean isEnable, String qualityMonitorEnv)
RTC质量监控数据上报。
预置接口,监控信息上报开关 当打开开关时,上报帧率、码率、分辨率、丢包率等监控信息到服务端,console可查。
参数
参数 | 类型 | 描述 |
---|---|---|
isEnable | boolean | 是否打开RTC质量监控数据上报,true 打开,false不打开。默认为 false |
qualityMonitorEnv | String | 线上环境:"online" 沙盒:"qa"。 默认值为 "online" |
屏幕分享相关
目前支持两种屏幕分享模式:多进程模式、多流模式。
多进程模式:是在业务侧启动一个进程,创建一个新的BRTC实例,作为屏幕分享的特定用户加入房间,此进程用户只发送屏幕流,不订阅其他用户,此模式下支持服务端录制。
多流模式:是在已创建的通讯链路中,增加、删除一路视频流用于发送、停止屏幕流,此模式下不支持服务端录制。
屏幕分享参数
新增屏幕分享参数结构,用于配置屏幕分享音频、视频开启状态及详细参数信息,参考RtcParameterSettings中定义。
多进程模式屏幕分享API
屏幕进程初始化
public static synchronized BaiduRtcRoom initWithAppID(Context context,
String appId,
String tokenStr,
String cpuType,
boolean isEnableSoLaterLoad,
boolean initialAudioManager);
屏幕分享独立进程下的,SDK初始化。
初始化SDK并创建RTC房间实例 初始化 SDK 时调用,初始化 SDK 失败会导致 SDK 功能异常。
参数
参数 | 类型 | 描述 |
---|---|---|
context | Context | Android上下文环境 |
appId | String | 百度为App签发的 App ID, 用于识别应用, 全局唯一,详见创建应用。 |
token | String | 百度RTC服务端鉴权使用的密钥,可缺省,使用应用鉴权可使得服务更加安全。 详见应用鉴权。 |
cpuType | String | 设置空字符串”“ |
isEnableSoLaterLoad | boolean | 设置false |
initialAudioManager | boolean | 设置false,表示是否默认初始化AudioManager,由于屏幕分享不采集音频,由推流主进程用户发送音频,则此处不需要初始化 |
返回
BaiduRtcRoom 实例对象:成功; null:失败;
多流模式屏幕分享API
启动屏幕分享
public abstract boolean startShareScreen();
当使用多流模式的屏幕分享时,可使用此接口启动屏幕分享。 若使用多进程的模式,则可直接配置RtcParameterSettings的参数:HasScreen、screenIntentData、videoEncodeParams配置后,登录房间即可。
停止屏幕分享
public abstract boolean stopShareScreen();
当使用多流模式的屏幕分享时,可使用此接口停止屏幕分享。 若使用多进程的模式,则可直接登出房间。
获取远端加入的用户的流信息
public abstract ArrayList<CommonDefine.StreamInfo> getComingStreams(long userId);
当使用多流模式的屏幕分享时,可使用此接口获取加入的用户有哪几路流,进而调用setRemoteDisplay关联不同流与RTCVideoView的关系。 一般在 BaiduRtcRoomDelegate.RTC_ROOM_EVENT_REMOTE_COMING事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 远端加入的用户ID |
获取远端操作的用户的流信息
public abstract ArrayList<CommonDefine.StreamInfo> getOperatingStreams(long userId);
当使用多流模式的屏幕分享时,可使用此接口获取操作的流信息,进而添加或移除流的对应View。 一般在 BaiduRtcRoomDelegate.RTC_ROOM_EVENT_REMOTE_ADDED_STREAM及BaiduRtcRoomDelegate.RTC_ROOM_EVENT_REMOTE_REMOVED_STREAM事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 远端加入的用户ID |
两种模式通用API
更新屏幕分享参数
public abstract void updateScreenShareParams(BRTCScreenShareParams parameters);
屏幕分享中,可更新屏幕分享参数,可用于多流和多进程两种模式。
通话前测速相关
Lastmile初始化
Lastmile初始化, 初始化Lastmile并创建网络测速实例。
public static synchronized BaiduRtcLastmileImp initProbeTest(String appId,
String tokenStr,
int expectedUplinkBitrate,
int expectedDownlinkBitrate,
BaiduRtcLastmileDelegate delegate);
初始化网络测速时调用,初始化网络测速失败会导致网络测速功能异常。
参数
参数 | 类型 | 描述 |
---|---|---|
appId | String | 百度为App签发的 App ID, 用于识别应用, 全局唯一,详见创建应用。 |
tokenStr | String | 百度RTC服务端鉴权使用的密钥,可缺省,使用应用鉴权可使得服务更加安全。 详见应用鉴权。 |
expectedUplinkBitrate | int | 用户期望的最高发送码率,单位为 bps,范围为 100000~5000000。 |
expectedDownlinkBitrate | int | 用户期望的最高接收码率,单位为 bps,范围为 100000~5000000 。 |
delegate | BaiduRtcLastmileDelegate | 遵循 BaiduRtcLastmileDelegate 协议的代理对象 。 |
返回
BaiduRtcLastmileImp 实例对象:成功; null:失败;
Lastmile结束
public abstract void stopProbeTest();
结束网络探测, 可以在网络探测回调函数onLastmileProbeResult()中调用, 也可以手动触发结束。
BaiduRtcLastmileDelegate代理对象
public abstract void onLastmileProbeResult(LastmileProbeResult result);
参数
参数 | 类型 | 描述 |
---|---|---|
result | LastmileProbeResult | 开始通话前网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。 |
LastmileProbeResult对象参数
参数
参数 | 类型 | 描述 |
---|---|---|
state | short | 网络探测状态, 参考RtcLastmileState。 |
rtt | int | 网络探测往返平均延时, 单位(ms)。 |
quality | int | 探测网络质量, 参考RtcLastmileQuality。 |
uplinkReport | LastmileProbeOneWayResult | 上行网络探测质量。 |
downlinkReport | LastmileProbeOneWayResult | 下行网络探测质量。 |
LastmileProbeOneWayResult对象参数
参数
参数 | 类型 | 描述 |
---|---|---|
lossRate | int | 探测的网络丢包率。 |
jitter | int | 探测的网络抖动, 单位(ms)。 |
bandwidth | int | 探测的网络带宽, 单位(Kbps)。 |
RtcLastmileState 状态定义
状态 | 值 | 含义 |
---|---|---|
PROBE_RESULT_COMPLETE | 1 | 本次质量探测是完整的 |
PROBE_RESULT_INCOMPLETE | 2 | 本次质量探测未进行带宽预测,因此结果不完整 |
PROBE_RESULT_UNAVAILABLE | 3 | 未进行质量探测。一个可能的原因是网络连接中断 |
RtcLastmileQuality 质量定义
状态 | 值 | 含义 |
---|---|---|
QUALITY_UNKNOWN | 0 | 质量未知 |
QUALITY_EXCELLENT | 1 | 质量极好 |
QUALITY_GOOD | 2 | 用户主观感觉和极好差不多,但码率可能略低于极好 |
QUALITY_POOR | 3 | 用户主观感受有瑕疵但不影响沟通 |
QUALITY_BAD | 4 | 勉强能沟通但不顺畅 |
QUALITY_VBAD | 5 | 网络质量非常差,基本不能沟通 |
QUALITY_DOWN | 6 | 完全无法沟通 |
QUALITY_DETECTING | 7 | SDK 正在探测网络质量 |