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:仅设置最高视频码率;
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接口手动订阅媒体流。 |
boolean | enableAutoReconnect | true | 【含义】自动重连接 【说明】房间登录成功后,由于网络原因导致链接断开自动重连接。 |
boolean | disableBluetooth | false | 【含义】禁止监听蓝牙设备监听 【说明】房间登录后监听蓝牙设备链接和断开通知。 |
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配置。 |
其中 AudioCodec 属性定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
String | RtcParameterSettings.VideoCodecId.OPUS | "opus" | 【含义】opus编码 |
String | RtcParameterSettings.VideoCodecId.PCMA | "pcma" | 【含义】pcma编码 |
String | RtcParameterSettings.VideoCodecId.PCMU | "pcmu" | 【含义】pcmu编码 【备注】PCMU格式对比opus cpu消耗更低 |
String | RtcParameterSettings.VideoCodecId.G722 | "g722" | 【含义】g722编码 |
String | RtcParameterSettings.VideoCodecId.AMRWB | "amr-wb" | 【含义】arm-wb编码 【备注】需要集成全功能SDK |
其中 VideoCodec 属性定义如下:
类型 | 属性 | 默认值 | 描述 |
---|---|---|---|
String | RtcParameterSettings.VideoCodecId.H263 | "h263" | 【含义】H263编码 【备注】需要集成全功能SDK |
String | RtcParameterSettings.VideoCodecId.H264 | "h264" | 【含义】H264编码 |
String | RtcParameterSettings.VideoCodecId.H265 | "h265" | 【含义】H265编码 |
String | RtcParameterSettings.VideoCodecId.JPEG | "jpeg" | 【含义】jpeg编码 【备注】需要集成全功能SDK |
设置音频编码配置
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 setBaiduRtcEventHandler(IRtcEventHandler handler);
代理设置。
设置RTC Room 代理对象。使用 RTC Room 功能,初始化相关组件时需要设置代理对象,代理对象用户事件回调。未设置代理对象,或对象设置错误,可能导致无法收到相关回调。
参数
参数 | 类型 | 描述 |
---|---|---|
handler | IRtcEventHandler | 遵循 IRtcEventHandler 协议的代理对象 |
返回
true 成功,false 失败
开启/关闭引擎统计信息
public abstract void setEngineStateStatistics(boolean bOnStatistics);
引擎统计信息开关。
当打开开关时 onEngineStatisticsInfo 函数会每隔2秒返回引擎的统计信息,并且可通过queryEngineStatisticsInfo主动函数查询到引擎统计信息
参数
参数 | 类型 | 描述 |
---|---|---|
bOnStatistics | bool | 是否打开RTC引擎统计信息, bOnStatistics = true,打开开关,bOnStatistics = false, 关闭引擎统计信息 |
房间相关接口
登录房间
public abstract boolean loginRtcRoomWithRoomName(String roomName, long userId, String displayName);
登录房间。
登录成功后同一个房间的的成员能够互相看到和听到。
参数
参数 | 类型 | 描述 |
---|---|---|
roomName | String | 房间名,长度不可超过 255 byte |
userId | long | 用户ID,每个房间的用户ID必须唯一 |
displayName | String | 用户显示名 |
返回
true 成功,false 失败
注意
如果失败,会通过错误信息更新回调返回错误信息。
强制登录房间
public static class LoginOptions {
/** 强制登录标志 */
public boolean isCompulsive = true;
/** 更新token */
public String tokenStr;
/** 角色 , 仅仅在V4 场景使用 */
public @Constants.RoleType int roleType = Constants.RoleType.RoleAnchor;
}
public abstract boolean loginRtcRoomWithRoomName(String roomName, long userId, String displayName,
Constants.LoginOptions options);
强制登录房间。
options.isCompulsive = true;
登录房间成功,在同一个房间的人能进行相互音视频聊天。开启强制登录,若房间内之前存在同一userID用户,将被踢出,建议在断网重连或者初次登录失败时调用。
参数
参数 | 类型 | 描述 |
---|---|---|
roomName | String | 房间名,长度不可超过 255 byte, 不可包括特殊字符及中文 |
userId | int | 用户ID,每个房间的用户 ID 必须唯一 |
displayName | String | 用户显示名 |
options | Constants.LoginOptions | options.isCompulsive = true; 强制登录; options.isCompulsive = true; 正常登录 默认正常登录 |
返回
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(推流地址通过该接口设置)配合使用。
调用时机:接收到房间登录成功事件IRtcEventHandler#onLoginSuccess
之后;
注意 该接口仅直播场景使用。与stopPublish接口配对使用。
开始视频推流
public abstract void startVideoPublish();
开始视频推流,仅仅作用于 RtcParameterSettings.enablePruneSignal = true
停止直播推流
public abstract void stopPublish();
停止直播推流。
停止发布流,结束直播。
注意 该接口仅直播场景使用。与startPublish接口配对使用。
停止视频推流
public abstract void stopVideoPublish();
注意:停止视频推流,仅仅作用于 RtcParameterSettings.enablePruneSignal = true
角色转换
主播角色Constants#RoleType#RoleAnchor
支持推流和拉流
观众角色Constants#RoleType#RoleAudience
仅仅支持拉流
public abstract void switchRole(@Constants.RoleType int roleType);
注意:仅仅作用于 RtcParameterSettings.enablePruneSignal = true
,角色转换后会有 IRtcEventHandler#onSwitchRole
事件回调
订阅某成员媒体流
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 |
发送数据 (1/2)
public abstract void sendDataMessage(String data, boolean reliable);
发送Data数据。
Data 数据通道保证顺序性和完整性。 使用数据通道能够同时传输音视频之外的相关数据。
参数
参数 | 类型 | 描述 |
---|---|---|
data | String | 要发送的数据 |
reliable | boolean | 是否可靠传输 |
注意 发送Data 数据, 需要先打开datachannel 功能: RtcParameterSettings cfg = RtcParameterSettings.getDefaultSettings(); cfg.HasData = true; mVideoRoom.setParamSettings(cfg,RtcParameterSettings.RtcParamSettingType.RTC_PARAM_SETTINGS_ALL);
发送数据 (2/2)
public abstract void sendDataMessage2(String data, long uid, boolean reliable);
发送Data数据。
Data 数据通道保证顺序性和完整性。 使用数据通道能够同时传输音视频之外的相关数据。 注意 uid用于发送给指定用户消息,当开启enablePruneSignal = true; 情况下有效;
发送SEI消息
public abstract void sendSEIMsg(byte[] data, int repeatCount);
发送SEI消息。
Data 待发送的数据,最大支持 1KB(1000字节)的数据大小。
注意 发送频率不宜过多,防止影响正常音视频通讯
视频相关接口
开启本地预览
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_BALANCED:保留视频全部内容,不裁剪,填充整个视图,画面可能变形。 |
setMirror(boolean mirror) | 设置显示镜像 |
clearImage() | 清屏,显示区域置黑。 |
设置远端渲染窗口 (1/2)
public abstract void setRemoteDisplay(RTCVideoView remoteVideoView, long feedId)
设置指定远端用户显示窗口。
可适用于1 v 1、1 v N等多种场景,支持RTCVideoView与User的动态绑定与更新,若不调用removeRemoteDisplay(long userId)主动释放VideoView(可缺省调用),则Videoview在远端用户离开或本端登出房间时自动释放。
调用时机: 本端登录房间前或远端用登入房间并获取到对应的feedId均可,推荐在 IRtcEventHandler#onStreamChangedState
事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
remoteVideoView | RTCVideoView | 远端画面显示窗口, 用于显示远端用户传输过来的视频数据 |
feedId | long | 远端成员ID |
设置远端渲染窗口 (2/2)
public abstract void setRemoteDisplay(RTCVideoView remoteVideoView, long feedId, String viewMediaTarget);
设置指定远端用户指定流的显示窗口。
可适用于1 v 1、1 v N等多种场景,支持RTCVideoView与User的指定流绑定,主要扩展一个用户同时推多路视频流时,viewMediaTarget指定具体用户的哪路流,常用于多流模式的屏幕分享,指定具体是用户的哪一路视频流。
调用时机:推荐在 IRtcEventHandler#onStreamChangedState
事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
remoteVideoView | RTCVideoView | 远端画面显示窗口, 用于显示远端用户传输过来的视频数据 |
feedId | long | 远端成员ID |
viewMediaTarget | String | 远端成员ID推的哪一路流,可使用RtcParameterSettings.RtcMediaTarget做类型匹配 |
移除远端用户渲染窗口 (1/2)
public abstract void removeRemoteDisplay(long userId)
移除远端用户渲染窗口。
移除并释放远端用户所对应的渲染窗口,可通过setRemoteDisplay(RTCVideoView, long)接口再次设置渲染窗口。若不主动调用该接口释放渲染,则相应的渲染视图将在远端用户退出或本端登出房间时释放。
注意
仅与setRemoteDisplay(RTCVideoView remoteVideoView, long feedId)配对使用,可缺省调用。
窗口视图不见时,通过该接口释放渲染视图可优化系统资源占用。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
移除远端用户渲染窗口 (2/2)
public abstract void removeRemoteDisplay(long userId, String viewMediaTarget);
移除远端用户渲染窗口。
移除并释放远端用户所对应的渲染窗口,可通过setRemoteDisplay(RTCVideoView, long)接口再次设置渲染窗口。若不主动调用该接口释放渲染,则相应的渲染视图将在远端用户退出或本端登出房间时释放。
参数
参数 | 类型 | 描述 |
---|---|---|
userId | long | 用户ID |
viewMediaTarget | String | 视图类型 一般使用 RtcParameterSettings.RtcMediaTarget.TARGET_VIDEO_DEFAULT |
开启/关闭本地视频外部采集/编码
public abstract int setExternalVideoSource(boolean enable,
boolean useTexture,
Constants.ExternalVideoSourceType sourceType);
使能视频外部采集/外部编码。
参数
参数 | 类型 | 描述 |
---|---|---|
isEnable | boolean | true:外部采集;false:内部采集 |
useTexture | boolean | true:使用纹理;false:不使用纹理 |
sourceType | Constants.ExternalVideoSourceType | ExternalVideoSourceType.VIDEO_FRAME:视频裸数据; ExternalVideoSourceType.ENCODED_VIDEO_FRAME:视频编码数据 |
public abstract int sendExternalVideoFrame(RTCVideoFrame frame);
发送外部采集视频数据
public abstract int sendExternalEncodedImage(Constants.RtcEncodedImage image);
发送外部编码视频数据
参数
参数 | 类型 | 描述 |
---|---|---|
encodedWidth | int | 视频宽 |
encodedHeight | int | 视频高 |
captureTimeNs | long | 视频采集时间戳 |
frameType | RtcEncodedImage.FrameType | FrameType.VideoFrameKey 关键帧,其他非关键帧 |
trackId | int | 外部编码多路流唯一标识 |
设置某成员外部渲染器
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 Constants.VideoDimension 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 | 时间 |
白板
初始化
// Constant.Settings 白板配置
public static class Settings {
public String loadUrl;
public String channelName;
public String appId;
public String token;
public boolean debug = false;
/** 标记观众 */
public boolean isAudience = false;
public long uid;
}
// 创建白板对象
public static RtcWhiteBoard RtcWhiteBoard.init(Context context, RtcWhiteBoardHandler handler, Constant.Settings settings)
获取白板View
View getView();
- 注意 初始化后可以通过该接口后获取到白板view
加载白板
void load();
- 注意 初始化后可以通过该接口加载白板
设置画笔
// 设置画笔类型, 支持自由绘画,剪头绘画、直线、矩形、菱形、椭圆、文本、激光笔
void selectToolType(@Constant.ToolType int type);
// 设置画笔颜色
void selectBrushColor(@Constant.ColorType int color);
清除白板
void clear();
- 注意 加载后可以清除
销毁版本
void destroy();
- 注意 销毁对象
本地录制相关接口
获取录制功能入口
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 setEnableSpeakerphone(boolean enable)
设置音频输出设备,扬声器/听筒。
参数
参数 | 类型 | 描述 |
---|---|---|
soundMod | boolean | 音频输出方式:扬声器/听筒 |
设置自定义音频采集
// 设置外部音频采集
public abstract void enableExternalAudioRecord(boolean isEnable);
// 获取外部音频采集状态
public abstract boolean isExternalAudioRecord();
// 获取外部音频采集回调, 用于输入音频数据 【1/2】 每次输入音频长度为对应音频采样率10ms (48k采样率每次输入960)
public abstract int pushExternalAudioFrame(byte[] data, long timestamp, int sampleRate, int channels);
// 获取外部音频采集回调, 用于输入音频数据 【2/2】 每次输入音频长度为对应音频采样率10ms (48k采样率每次输入960)
public abstract int pushExternalAudioFrame(ByteBuffer data, long timestamp, int sampleRate, int channels);
开启自定义音频采集(外部音频采集)
设置自定义音频渲染
// 设置外部音频渲染
public abstract void enableExternalAudioRender(boolean isEnable);
// 获取外部音频渲染状态
public abstract boolean isExternalAudioRender();
// 设置远端音频渲染回调, obs.onPlaybackAudioFrame(RTCAudioSamples sample);
public abstract void registerAudioFrameObserver(Constants.IAudioFrameObserve obs);
开启自定义音频渲染(外部音频渲染)
设置本地音频数据回调
// 设置本地音频渲染回调, obs.onRecordAudioFrame(RTCAudioSamples sample);
public abstract void registerAudioFrameObserver(Constants.IAudioFrameObserve obs);
设置本端音频数据回调。
在 登录房间前设置,进入通信后通过该接口回调本端PCM音频数据。
开启默认音频自动增益
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的位置继续) |
动态加载SO
RTCLoadManager SO加载管理帮助类
设置cpu类型
public void setDefaultCpuType(String cpuType);
参数
参数 | 类型 | 描述 |
---|---|---|
cpuType | String | cpu类型,armeabi-v7a、arm64-v8a |
注册回调
public void registerCallback(LoadListener callback);
参数
参数 | 类型 | 描述 |
---|---|---|
callback | LoadListener | 加载回调接口 |
检查当前是否已经加载
public void queryLibsDownloaded(Context context, LibsStateListener libsStateListener);
参数
参数 | 类型 | 描述 |
---|---|---|
context | Context | 上下文 |
libsStateListener | LibsStateListener | 状态回调 |
演示代码
// so 外部提前加载 需必须
final RTCLoadManager loadManager = RTCLoadManager.getInstance(this);
loadManager.setDefaultCpuType("arm64-v8a");
loadManager.registerCallback(mLoadListener);
loadManager.queryLibsDownloaded(this,
new RTCLoadManager.LibsStateListener() {
@Override
public void onLibsHasDownloaded(boolean hasDownload) {
Log.i(TAG, "onLibsHasDownloaded :" + hasDownload);
if (!hasDownload) {
Log.i(TAG, "loadLibraries :" + RTCLoadManager.getDefaultDownloadUrl());
loadManager.loadLibraries("arm64-v8a", null);
}
}
});
外部编码
开启外部编码
public abstract void enableExternalVideoEncode(boolean isEnable);
开启外部编码
enable=true
视频外部编码, 开启外部编码需要同步设置编码的宽高和码率, 参考cfg.VideoResolution = "1280x720-1500kbps
发送外部编码数据
public abstract void sendExternalEncodedImage(RtcEncodedImage image);
视频裸流发送接口, 客户自定义视频捕获,视频编码环节后, 调用本接口发送编码后的数据.
public static class RtcEncodedImage { // 编码后的H264/H265数据 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 trackId; }
转推配置相关接口
配置媒体转推参数
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 void onLoginSuccess(long roomId, long uid, int elapsed);
房间用户登录成功通知。
参数
参数 | 类型 | 描述 |
---|---|---|
roomId | long | 房间ID |
uid | long | 用户id |
elapsed | int | 登录耗时 毫秒 |
链接状态变更
public void onConnectionStateChanged(int state, int reason);
链接状态发生变化
事件 | 值 | 含义 | 备注 |
---|---|---|---|
CONNECTION_STATE_CONNECTED | 3 | 链接成功 | 无 |
CONNECTION_STATE_DISCONNECTED | 1 | 链接断开 | 无 |
CONNECTION_STATE_CONNECTING | 2 | 链接中 | 无 |
CONNECTION_STATE_RECONNECTING | 4 | 重连接 | 无 |
远端用户加入
public void onRemoteUserJoinRoom(long uid, String name);
远端用户加入房间
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 用户uid |
name | String | 用户昵称 |
远端用户离开
public void onRemoteUserLeaveRoom(long uid, String name);
远端用户离开房间
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 用户uid |
name | String | 用户昵称 |
电话状态变更
/** 状态变更 state {@link TelephonyManager#CALL_STATE_IDLE } */
public void onPhoneState(int state);
电话状体发生变化
远端视频首帧渲染
public void onFirstVideoFrame(long uid, int width, int height);
视频首帧渲染
远端用户视频流状态变更
public void onRemoteUserVideoAvailable(long uid, String name, boolean available);
远端视频可用/不可用,不清楚远端用户是否推流视频,可以根据这个判断;
远端用户音频流状态变更
public void onRemoteUserAudioAvailable(long uid, String name, boolean available);
远端音频可用/不可用,不清楚远端用户是否推流音频,可以根据这个判断;
用户被禁言
public void onUserShutUp(long uid);
用户被禁言
用户被解除禁言
public void onUserDisShutUp(long uid);
用户被解除禁言
房间被解散
public void onRoomDisbanded();
房间被解散
被踢出房间
public void onUserKickOff(long uid);
用户被踢出房间
网络状态变更
public void onNetworkChanged(boolean isAvailable);
网络变化状态通知
发送码率回调
public void onSendBitrateEstimation(int rate, String info);
发送码率预估回调
推流音视频状态变更
public void onSendMediaState(int type, int state);
音视频推流状态变更
参数
参数 | 类型 | 描述 |
---|---|---|
type | int | Constants.MediaType.MEDIA_VIDEO_TYPE = 1 视频类型 Constants.MediaType.MEDIA_AUDIO_TYPE = 2 音频类型 |
state | int | Constants.SEND_MEDIA_OK_STATE = 1 发送成功 Constants.SEND_MEDIA_FAIL_STATE = 2 发送失败 Constants.SEND_MEDIA_SUSPEND_STATE = 3 发送中断 |
媒体链路状态变更
public void onMediaStateChanged(boolean uplink, int state);
媒体链路状态发生变更
参数
参数 | 类型 | 描述 |
---|---|---|
uplink | boolean | true: 上行, false: 下行 |
state | int | Constants.MediaState.MEDIA_DISCONNECTED_STATE = 2 断开 Constants.MediaState.MEDIA_CONNECTED_STATE = 3 建联成功 |
远端流变更
public void onStreamChangedState(long uid, String name, int opt, ArrayList<Constants.RtcStream> list);
远端流状态发生变更
参数
参数 | 类型 | 描述 |
---|---|---|
uid | long | 用户uid |
name | String | 用户昵称 |
opt | int | Constants.ON_STREAM_CHANGE_COMING = 1 远端流到达 Constants.ON_STREAM_CHANGE_LAVING = 2 远端流离开 |
list | ArrayList<> | 流信息 |
屏幕分享状态变更
public void onScreenCaptureStateChanged(int state, int code);
屏幕分享状态变更
外部渲染视频大小变更
public void onVideoSizeChanged(long uid, int width, int height);
外部渲染场景视频大小发生变化
收到用户消息/广播
public void onUserMessage(long uid, String message);
收到用户消息、或者广播消息
收到用户SEI消息
public void onRecvSEI(long uid, byte [] msg);
收到用户SEI消息
收到用户属性
public void onUserAttribute(long uid, String message);
收到用户属性
stopRealy状态
public void onStopMediaRelayState(int state);
stopRealy状态变更
startRealy状态
public void onStartMediaRelayState(int state);
startRealy状态变更
直播推流状态变更
public void onLivePublishState(Constants.RtcLiveTransferMode mode, String url, int state);
直播推流状态变更
错误信息更新回调
public void onError(int error, String msg, Bundle bundle);
SDK内部出错;
public void onWarning(int code, String msg, Bundle bundle);
SDK内部出警告;
事件 | 值 | 含义 | 备注 |
---|---|---|---|
ERR_LOGIN_ROOM_PARAMS | 500 | 登录参数错 | Appid/Token等参数错误,不能重连接 |
ERR_CHANNEL_IO_EXCEPTION | 501 | 信令通道网络异常断开 | 不可恢复错误,可进行重连。 |
ERR_CHANNEL_DISCARD_BY_REMOTE | 502 | 信令通道被远端异常关闭 | 不可恢复错误,可进行重连。 |
ERR_AUDIO_DEVICE_RECORD | 503 | 音频采集器异常 | 不可恢复错误,可进行重连。 |
ERR_JOIN_ROOM_PARAMS | 504 | 登录房间异常 | 不可恢复错误,可进行重连。 |
ERR_SET_EXTERNAL_SURFACE | 505 | 设置外部渲染异常 | 不可恢复错误 |
ERR_RECONNECT_OVER_MAX_COUNT | 506 | 重连接超限50次 | 不可恢复错误, 需要登出再次登录 |
ERR_INTERNAL | 507 | SDK内部未知错误 | 不可恢复错误,不能重连接 |
ERR_SO_LATER_DOWNLOADING_FAIL | 508 | SDK下载SO失败 | 不可恢复错误,不能重连接 |
ERR_MEDIA_SESSION_DESCRIPTION | 509 | SDK内部异常 | 不可恢复错误,能重连接 |
ERR_PUBLISH_VIDEO_FAILED | 510 | 推流视频失败 | 不可恢复错误,能重连接 |
ERR_PUBLISH_AUDIO_FAILED | 511 | 推流音频失败 | 不可恢复错误,能重连接 |
WARNING_SUBSCRIBE_FAILED | 600 | 订阅异常 | 不可恢复错误,能重连接 |
WARNING_PUBLISH_VIDEO_FAILED | 601 | 推流视频失败 | 不可恢复错误,能重连接 |
WARNING_PUBLISH_AUDIO_FAILED | 602 | 推流音频失败 | 不可恢复错误,能重连接 |
WARNING_REPEAT_SUBSCRIBE | 603 | 重复订阅 | 不可恢复错误,能重连接 |
房间数据接收回调
public abstract void onRoomDataMessage(ByteBuffer data);
数据接收。
该callback返回当前RTC Engine收到的数据消息。
参数
参数 | 类型 | 描述 |
---|---|---|
data | ByteBuffer | 引擎返回的数据消息 |
用户音量提示回调
public abstract void onAudioVolumeIndication(Constants.RtcRoomAudioLevel[] audioLevels);
该callback通过enableAudioVolumeIndication接口开启或停止,启动后,按照设置的时间间隔返回房间用户音量信息。
参数
参数 | 类型 | 描述 |
---|---|---|
audioLevels | RtcRoomAudioLevel[] | 房间用户音量信息 |
统计
public void onEngineStatisticsInfo(boolean uplink, List<HUDStatistics> statistics);
该回调中获取到所有媒体流统计信息
其他接口
获取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" |
屏幕分享相关
目前支持两种屏幕分享模式:多进程模式、多流模式。
多进程模式:是在业务侧启动一个进程,创建一个新的BRTC实例,作为屏幕分享的特定用户加入房间,此进程用户只发送屏幕流,不订阅其他用户,此模式下支持服务端录制。
多流模式:是在已创建的通讯链路中,增加、删除一路视频流用于发送、停止屏幕流,此模式下不支持服务端录制。
屏幕分享参数
新增屏幕分享参数结构,用于配置屏幕分享音频、视频开启状态及详细参数信息,参考RtcParameterSettings中定义。
多进程模式屏幕分享API
屏幕进程初始化
public static synchronized BaiduRtcRoom initWithConfig(Constants.BaiduRtcRoomConfig config)
屏幕分享独立进程下的,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 void onStreamChangedState(long uid, String name, int opt, ArrayList<Constants.RtcStream> list);
当使用多流模式的屏幕分享时,可使用此接口获取加入的用户有哪几路流,进而调用setRemoteDisplay关联不同流与RTCVideoView的关系。
一般在Constants#ON_STREAM_CHANGE_COMING
事件回调处调用。
参数
参数 | 类型 | 描述 |
---|---|---|
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 正在探测网络质量 |