API
所有文档
menu

实时音视频 RTC

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 正在探测网络质量
上一篇
概述
下一篇
Web SDK