BRTC 是 BRTC SDK 的入口类,它为 App 提供了快速搭建音视频通信的 API。BRTCListener 包含了大部分来自 SDK 内部的事件通知,方便调用者根据回调信息做出相应的处理。调用 BRTC 的接口最好在同一个线程进行,不建议在不同的线程同时调用。
以下函数按照字母A-Z升序排列
sharedInstance
创建 BRTC 实例(单例模式)
BRTC sharedInstance(Context context)
参数
返回
详情
destroySharedInstance
销毁 BRTC 实例对象
void destroySharedInstance()
setListener
设置回调接口
void setListener(BRTCListener listener)
enterRoom
加入房间
void enterRoom(BRTCDef.BRTCParams param)
必须加入房间才能发布或订阅音视频流。“发布”是指将自己的音、视频推送到服务器;“订阅”是指从服务器拉取房间里其他用户的音视频流。调用接口后,您会收到来自 BRTCListener 中的 onEnterRoom(result) 回调:
如果加入成功,result 会是一个正数(result > 0),表示加入房间的时间消耗,单位是毫秒(ms)
如果加入失败,result 会是一个负数(result < 0),表示进房失败的错误码
不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。
exitRoom
离开房间
void exitRoom()
switchRole
切换角色
void switchRole(BRTCDef.BRTCRoleType role)
调用本接口可以实现用户在“主播”和“观众”两种角色之间来回切换。
由于视频直播和语音聊天室需要支持多达10万名观众同时观看,所以设定了“只有主播才能发布自己的音视频”的规则。因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成“主播”。
在 BRTC SDK 中,默认以主播角色进入房间,即进房间就会开启音视频采集并发布流。您可以通过进房参数 BRTCParams 来改变默认角色。
注意 以主播身份进房发布流后,调用此接口切换到观众,将会停止发布音视频流 以观众身份进房后,调用此接口切换到主播,SDK并不会自动发布音视频流,需要您再调用 startLocalAudio, muteLocalAudio, muteLocalVideo 等接口来启动音频或视频推流。
注意
setDefaultStreamRecvMode
设置默认的订阅模式
void setDefaultStreamRecvMode(boolean autoRecvAudio, boolean audoRecvVideo)
默认情况下,SDK在感知到有远端用户推流时,会自动拉取其音视频流,但默认不播放声音、显示视频,但会占用下行带宽,并进行解码。目的是当需要播放远端用户声音和画面时,可以立刻播放,达到“秒开”的效果。但这会需要额外的带宽和计算资源。
您可以根据使用场景,设置不自动拉流解码,在需要播放的时候再订阅远端音视频流,缺点是播放耗时要长一些。
注意:需要在进入房间(enterRoom)前调用该接口,设置才能生效。
setGSensorMode
设置重力感应的适配模式
void setGSensorMode(BRTCDef.BRTCGSensorMode mode)
您可以通过本接口实现如下这种友好的交互体验:
当用户将手机或 Pad 上下颠倒时,由于摄像头的采集方向没有变,所以房间中其他用户所看到的画面会变成上下颠倒的,
在这种情况下,您可以通过调用该接口让 SDK 根据设备陀螺仪的朝向自动调整本地画面和编码器输出画面的旋转方向,以使远端观众可以看到正常朝向的画面。
startLocalPreview
开启本地视频的预览画面
void startLocalPreview(boolean frontCamera, BRTCVideoView view)
注意 目前尚不支持在进入房间前调用此方法,建议您在收到 BRTCListener 的 onEnterRoom 回调中来调用 如果当前正在屏幕共享,且设置的流类型是 BRTCVideoStreamTypeBig,调用此接口后,将会停止屏幕共享,恢复显示摄像头画面
stopLocalPreview
停止本地视频采集及预览
void stopLocalPreview()
muteLocalVideo
暂停/恢复推送本地的视频数据
void muteLocalVideo(boolean mute)
该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己的画面。调用此接口,并不会操作物理摄像头设备,比较适合频繁开关视频的场景。
注意:如果您还调用了 startScreenCapture 接口启动了屏幕共享,并设置了 streamType 是 BRTCVideoStreamTypeSub,此时摄像头和屏幕共享将会是两个独立的视频流在发布。在这种情况下,调用此接口,只作用于摄像头流。如果您需要暂定/恢复屏幕共享,建议您试用 pauseScreenCapture 和 resumeScreenCapture 接口。
startScreenCapture
streamType
BRTCVideoStreamTypeSub
pauseScreenCapture
resumeScreenCapture
setVideoMuteImage
设置本地画面被暂停期间的替代图片
void setVideoMuteImage(Bitmap image, int fps)
当您调用 muteLocalVideo(true) 暂停本地画面时,您可以通过调用本接口设置一张替代图片,设置后,房间中的其他用户会看到这张替代图片。
setWatermark
为视频画面添加水印
void setWatermark(Bitmap image, int streamType, float x, float y, float width)
如果当前视频的编码分辨率是 640 x 360,参数设置为:x = 0.1,y = 0.1,width = 0.2,那么水印的左上坐标点就是(640 × 0.1,360 × 0.1)即(64,36),水印的宽度是 640 × 0.2 = 128px,水印的高度会根据水印图片的宽高比由 SDK 自动算出。
startRemoteView
开始拉取并显示指定用户的远端画面
void startRemoteView(String userId, BRTCDef.BRTCVideoStreamType type, BRTCVideoView view)
stopRemoteView
停止显示远端视频画面,同时不再拉取该远端用户的视频数据流
void stopRemoteView(String userId, BRTCDef.BRTCVideoStreamType type)
调用此接口后,SDK 会清理关联到该远端用户的相关视频显示资源
调用此接口后,无论在手动订阅模式还是自动订阅模式下,都会停止接收该远端用户的视频流。区别是: 在手动订阅模式下,会释放掉该用户视频流相关的全部资源。如果需要再次恢复显示,需要重新发起订阅。 在自动订阅模式下,不需要重新订阅,再次恢复显示,画面显示速度更快。
调用此接口后,无论在手动订阅模式还是自动订阅模式下,都会停止接收该远端用户的视频流。区别是:
muteRemoteVideoStream
暂停/恢复接收指定的远端视频流
从 SDK 2.1 版本开始,此接口标记为废除。请使用下方带有流类型的版本:muteRemoteVideoStream。如果继续使用该接口,则默认操作的是流类型为 BRTCVideoStreamTypeBig 的视频画面。
void muteRemoteVideoStream(String userId, boolean mute)
void muteRemoteVideoStream(String userId, BRTCDef.BRTCVideoStreamType type, boolean mute)
muteAllRemoteVideoStreams
暂停/恢复接收所有远端视频流
void muteAllRemoteVideoStreams(boolean mute)
setVideoEncoderParam
设置视频编码器相关参数
void setVideoEncoderParam(BRTCDef.BRTCVideoEncParam param)
setVideoEncoderRotation
设置视频编码器输出的画面方向
void setVideoEncoderRotation(BRTCDef.BRTCVideoRotation rotation)
该设置不影响本地画面的预览方向,但会影响房间中其他用户所观看到(以及云端录制文件)的画面方向。
在这种情况下,您可以通过调用该接口将 SDK 编码出的画面方向旋转180度,如此一来,房间中其他用户所看到的画面可保持正常的方向。
如果您希望实现上述这种友好的交互体验,我们更推荐您直接调用 setGSensorMode 实现更加智能的方向适配,无需您手动调用本接口。
setVideoFallbackEnable设置弱网条件下流是否开启自适应回退机制
void setVideoFallbackEnable(boolean enable)
setNetworkQosParam
设置网络流控相关参数
void setNetworkQosParam(BRTCDef.BRTCNetworkQosParam param)
setLocalRenderParams
设置本地画面的渲染参数
void setLocalRenderParams(BRTCDef.BRTCRenderParams renderParams)
可设置的参数包括有:画面的旋转角度、填充模式以及镜像模式等。
setRemoteRenderParams
设置远端用户画面的渲染参数
void setRemoteRenderParams(String userId, BRTCVideoStreamType type, BRTCDef.BRTCRenderParams renderParams)
与设置本地画面渲染参数相同,针对远端用户也可以设置画面的旋转角度、填充模式以及镜像模式等。
setVideoEncoderMirror
设置编码器输出的画面镜像模式
void setVideoEncoderMirror(boolean mirror)
enableEncSmallVideoStream
开启大小画面双路编码模式
int enableEncSmallVideoStream(boolean enable, BRTCDef.BRTCVideoEncParam smallVideoEncParam)
考虑到同时编码两个规格的视频画面,需要更多的计算资源,在硬件设备较差的系统上请谨慎开启此功能
setRemoteVideoStreamType
切换指定远端用户的大小画面
int setRemoteVideoStreamType(String userId, BRTCVideoStreamType type)
setSystemVolumeType
设置系统音量类型
void setSystemVolumeType(BRTCDef.BRTCSystemVolumeType type)
通常 Android 系统存在多种系统声音类型,BRTC SDK 目前支持在【通话】与【媒体】两种系统音量类型下切换。默认是 BRTCSystemVolumeTypeAuto 自动模式。
【通话音量】通常比较适合需要上麦的场景。在这种模式下, 可以最大程度利用硬件设备的回声消除等能力来保障语音效果
snapshotVideo
视频画面截图
void snapshotVideo(String userId, BRTCVideoStreamType type, BRTCListener.BRTCSnapshotListener listener)
startLocalAudio
开启本地音频的采集和上行
void startLocalAudio(BRTCDef.BRTCAudioQuality quality)
stopLocalAudio
关闭本地音频的采集和上行
void stopLocalAudio()
muteLocalAudio
静音/取消静音本地的音频
void muteLocalAudio(boolean mute)
muteRemoteAudio
静音/取消静音指定的远端用户的声音
void muteRemoteAudio(String userId, boolean mute)
setAudioRoute
设置本地音频路由
void setAudioRoute(int route)
手机有两个扬声器:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。
设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。
设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。
muteAllRemoteAudio
静音/取消静音所有用户的声音
void muteAllRemoteAudio(boolean mute)
mute 设置为 true 时,会停止播放所有远端用户的音频流
mute 设置为 false 时,会恢复播放所有远端用户的音频流
注意:当设置 mute 为 false 时,如果自动针对所有远端用户发起拉流。因此,在手动订阅模式下,建议谨慎使用此接口。
setRemoteAudioVolume
设定某一个远端用户的声音播放音量
void setRemoteAudioVolume(String userId, int volume)
setAudioCaptureVolume
调节麦克风采集音量
void setAudioCaptureVolume(int volume)
getAudioCaptureVolume
获取麦克风采集音量
int getAudioCaptureVolume()
音量大小,范围是 0 ~ 100
setAudioPlayoutVolume
调节播放音量大小
void setAudioPlayoutVolume(int volume)
getAudioPlayoutVolume
获取播放音量大小
int getAudioPlayoutVolume()
enableAudioVolumeEvaluation
启用音量大小提示
void enableAudioVolumeEvaluation(int intervalMs)
开启后会在 onUserVoiceVolume 中获取到 SDK 对音量大小值的评估。
setAudioFrameListener
设置音频帧监听器
void setAudioFrameListener(BRTCListener.BRTCAudioFrameListener listener)
getDeviceManager
获取设备管理类 BRTCDeviceManager
BRTCDeviceManager getDeviceManager()
getAudioEffectManager
获取音效管理类 BRTCAudioEffectManager
BRTCAudioEffectManager getAudioEffectManager()
getBeautyManager
获取美颜特效类 BRTCBeautyManager
BRTCBeautyManager getBeautyManager()
getMediaPlayerManager
获取媒体播放管理器类 BRTCMediaPlayerManager
BRTCMediaPlayerManager getMediaPlayerManager()
开始屏幕分享
// 从 SDK 2.1 版本开始以下方法标记为废弃: void startScreenCapture(BRTCDef.BRTCVideoEncParam encParams, BRTCDef.BRTCScreenShareParams shareParams) // SDK 2.1 开始新增以下方法: void startScreenCapture(int streamType, BRTCVideoView view, BRTCVideoEncParam encParams, BRTCScreenShareParams shareParams)
stopScreenCapture
停止屏幕采集
void stopScreenCapture()
暂停屏幕分享
void pauseScreenCapture()
调用暂停屏幕共享后,不会停止屏幕共享内容采集,只是会发送黑帧数据。
恢复屏幕分享
void resumeScreenCapture()
sendCustomCmdMsg
自定义消息发送
boolean sendCustomCmdMsg(int cmdID, byte[] data, boolean reliable, boolean ordered )
该接口可以借助音视频数据通道向当前房间里的其他用户广播您自定义的数据。但因为复用了音视频数据通道,请务必严格控制自定义消息的发送频率和消息体的大小,否则会影响音视频数据的质量控制逻辑,造成不确定性的问题
sendSEIMsg
将小数据量的自定义数据嵌入视频帧中
boolean sendSEIMsg(byte[] data, int repeatCount)
getSDKVersion
获取 SDK 版本信息
String getSDKVersion()
setLogLevel
设置日志输出级别
void setLogLevel(BRTCDef.BRTCLogLevel level)
setConsoleEnabled
启用或禁用控制台日志打印(在 Android Studio 中,控制台可以理解为是 logcat 面板)
void setConsoleEnabled(boolean enabled)
setLogDirPath
修改日志保存路径
void setLogDirPath(String path)
setLogListener
设置日志回调
void setLogListener(final BRTCLogListener logListener)
当您希望将 SDK 日志和您的业务日志输出记录到一起时,可以通过此方法设置一个 BRTCLogListener 对象,并实现如下方法:
/** * 日志打印时的回调 * * @param log 日志内容 * @param level 日志等。参见 BRTC_LOG_LEVEL * @param module 暂无具体意义,目前为固定值 'BRTCSDK' */ void onLog(String log, int level, String module)
callExperimentalAPI
调用实验性 API 接口
void callExperimentalAPI(String jsonStr)
SDK 内部存在一些只针对特殊用户、特殊场景下的参数、方法。这些内容通常情况下,不适用于大多数普通用户,因此不会作为标准接口提供出来。如果在 BRTC SDK 标准接口中未能找到您需要的功能,您可以与我们联系来确认是否在试验性接口中可以开启或者设置。
Android
BRTC 是 BRTC SDK 的入口类,它为 App 提供了快速搭建音视频通信的 API。
BRTCListener 包含了大部分来自 SDK 内部的事件通知,方便调用者根据回调信息做出相应的处理。
调用 BRTC 的接口最好在同一个线程进行,不建议在不同的线程同时调用。
以下函数按照字母A-Z升序排列
详细信息
sharedInstance
创建 BRTC 实例(单例模式)
参数
返回
详情
destroySharedInstance
销毁 BRTC 实例对象
详情
setListener
设置回调接口
参数
详情
enterRoom
加入房间
参数
详情
必须加入房间才能发布或订阅音视频流。“发布”是指将自己的音、视频推送到服务器;“订阅”是指从服务器拉取房间里其他用户的音视频流。调用接口后,您会收到来自 BRTCListener 中的 onEnterRoom(result) 回调:
如果加入成功,result 会是一个正数(result > 0),表示加入房间的时间消耗,单位是毫秒(ms)
如果加入失败,result 会是一个负数(result < 0),表示进房失败的错误码
不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。
exitRoom
离开房间
详情
switchRole
切换角色
详情
调用本接口可以实现用户在“主播”和“观众”两种角色之间来回切换。
由于视频直播和语音聊天室需要支持多达10万名观众同时观看,所以设定了“只有主播才能发布自己的音视频”的规则。因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成“主播”。
在 BRTC SDK 中,默认以主播角色进入房间,即进房间就会开启音视频采集并发布流。您可以通过进房参数 BRTCParams 来改变默认角色。
参数
setDefaultStreamRecvMode
设置默认的订阅模式
详情
默认情况下,SDK在感知到有远端用户推流时,会自动拉取其音视频流,但默认不播放声音、显示视频,但会占用下行带宽,并进行解码。目的是当需要播放远端用户声音和画面时,可以立刻播放,达到“秒开”的效果。但这会需要额外的带宽和计算资源。
您可以根据使用场景,设置不自动拉流解码,在需要播放的时候再订阅远端音视频流,缺点是播放耗时要长一些。
注意:需要在进入房间(enterRoom)前调用该接口,设置才能生效。
参数
setGSensorMode
设置重力感应的适配模式
参数
详情
您可以通过本接口实现如下这种友好的交互体验:
当用户将手机或 Pad 上下颠倒时,由于摄像头的采集方向没有变,所以房间中其他用户所看到的画面会变成上下颠倒的,
在这种情况下,您可以通过调用该接口让 SDK 根据设备陀螺仪的朝向自动调整本地画面和编码器输出画面的旋转方向,以使远端观众可以看到正常朝向的画面。
startLocalPreview
开启本地视频的预览画面
参数
详情
stopLocalPreview
停止本地视频采集及预览
muteLocalVideo
暂停/恢复推送本地的视频数据
参数
详情
该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己的画面。调用此接口,并不会操作物理摄像头设备,比较适合频繁开关视频的场景。
setVideoMuteImage
设置本地画面被暂停期间的替代图片
参数
详情
当您调用 muteLocalVideo(true) 暂停本地画面时,您可以通过调用本接口设置一张替代图片,设置后,房间中的其他用户会看到这张替代图片。
setWatermark
为视频画面添加水印
参数
详情
如果当前视频的编码分辨率是 640 x 360,参数设置为:x = 0.1,y = 0.1,width = 0.2,那么水印的左上坐标点就是(640 × 0.1,360 × 0.1)即(64,36),水印的宽度是 640 × 0.2 = 128px,水印的高度会根据水印图片的宽高比由 SDK 自动算出。
startRemoteView
开始拉取并显示指定用户的远端画面
参数
高清大画面:BRTCVideoStreamTypeBig
低清小画面:BRTCVideoStreamTypeSmall
辅流(屏幕分享):BRTCVideoStreamTypeSub
详情
stopRemoteView
停止显示远端视频画面,同时不再拉取该远端用户的视频数据流
参数
高清大画面:BRTCVideoStreamTypeBig
低清小画面:BRTCVideoStreamTypeSmall
辅流(屏幕分享):BRTCVideoStreamTypeSub
详情
调用此接口后,SDK 会清理关联到该远端用户的相关视频显示资源
muteRemoteVideoStream
暂停/恢复接收指定的远端视频流
muteRemoteVideoStream
暂停/恢复接收指定的远端视频流
参数
高清大画面:BRTCVideoStreamTypeBig
低清小画面:BRTCVideoStreamTypeSmall
辅流(屏幕分享):BRTCVideoStreamTypeSub
详情
muteAllRemoteVideoStreams
暂停/恢复接收所有远端视频流
参数
详情
setVideoEncoderParam
设置视频编码器相关参数
参数
详情
setVideoEncoderRotation
设置视频编码器输出的画面方向
参数
详情
该设置不影响本地画面的预览方向,但会影响房间中其他用户所观看到(以及云端录制文件)的画面方向。
当用户将手机或 Pad 上下颠倒时,由于摄像头的采集方向没有变,所以房间中其他用户所看到的画面会变成上下颠倒的,
在这种情况下,您可以通过调用该接口将 SDK 编码出的画面方向旋转180度,如此一来,房间中其他用户所看到的画面可保持正常的方向。
如果您希望实现上述这种友好的交互体验,我们更推荐您直接调用 setGSensorMode 实现更加智能的方向适配,无需您手动调用本接口。
setVideoFallbackEnable
设置弱网条件下流是否开启自适应回退机制
参数
详情
setNetworkQosParam
设置网络流控相关参数
参数
详情
setLocalRenderParams
设置本地画面的渲染参数
参数
详情
可设置的参数包括有:画面的旋转角度、填充模式以及镜像模式等。
setRemoteRenderParams
设置远端用户画面的渲染参数
参数
高清大画面:BRTCVideoStreamTypeBig
低清小画面:BRTCVideoStreamTypeSmall
辅流(屏幕分享):BRTCVideoStreamTypeSub
详情
与设置本地画面渲染参数相同,针对远端用户也可以设置画面的旋转角度、填充模式以及镜像模式等。
setVideoEncoderMirror
设置编码器输出的画面镜像模式
参数
详情
enableEncSmallVideoStream
开启大小画面双路编码模式
参数
返回
详情
setRemoteVideoStreamType
切换指定远端用户的大小画面
参数
详情
setSystemVolumeType
设置系统音量类型
参数
详情
通常 Android 系统存在多种系统声音类型,BRTC SDK 目前支持在【通话】与【媒体】两种系统音量类型下切换。默认是 BRTCSystemVolumeTypeAuto 自动模式。
【通话音量】通常比较适合需要上麦的场景。在这种模式下, 可以最大程度利用硬件设备的回声消除等能力来保障语音效果
snapshotVideo
视频画面截图
参数
详情
startLocalAudio
开启本地音频的采集和上行
参数
详情
stopLocalAudio
关闭本地音频的采集和上行
详情
muteLocalAudio
静音/取消静音本地的音频
参数
详情
muteRemoteAudio
静音/取消静音指定的远端用户的声音
参数
详情
setAudioRoute
设置本地音频路由
参数
详情
手机有两个扬声器:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。
设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。
设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。
muteAllRemoteAudio
静音/取消静音所有用户的声音
参数
详情
mute 设置为 true 时,会停止播放所有远端用户的音频流
mute 设置为 false 时,会恢复播放所有远端用户的音频流
setRemoteAudioVolume
设定某一个远端用户的声音播放音量
参数
详情
setAudioCaptureVolume
调节麦克风采集音量
参数
getAudioCaptureVolume
获取麦克风采集音量
返回
音量大小,范围是 0 ~ 100
setAudioPlayoutVolume
调节播放音量大小
参数
详情
getAudioPlayoutVolume
获取播放音量大小
返回
音量大小,范围是 0 ~ 100
enableAudioVolumeEvaluation
启用音量大小提示
参数
设置小于等于 0 则会关闭回调,建议值:300ms
详情
开启后会在 onUserVoiceVolume 中获取到 SDK 对音量大小值的评估。
setAudioFrameListener
设置音频帧监听器
参数
详情
getDeviceManager
获取设备管理类 BRTCDeviceManager
getAudioEffectManager
获取音效管理类 BRTCAudioEffectManager
getBeautyManager
获取美颜特效类 BRTCBeautyManager
getMediaPlayerManager
获取媒体播放管理器类 BRTCMediaPlayerManager
startScreenCapture
开始屏幕分享
参数
详情
stopScreenCapture
停止屏幕采集
pauseScreenCapture
暂停屏幕分享
resumeScreenCapture
恢复屏幕分享
sendCustomCmdMsg
自定义消息发送
参数
详情
sendSEIMsg
将小数据量的自定义数据嵌入视频帧中
参数
返回
详情
getSDKVersion
获取 SDK 版本信息
setLogLevel
设置日志输出级别
参数
setConsoleEnabled
启用或禁用控制台日志打印(在 Android Studio 中,控制台可以理解为是 logcat 面板)
参数
setLogDirPath
修改日志保存路径
参数
详情
setLogListener
设置日志回调
参数
当您希望将 SDK 日志和您的业务日志输出记录到一起时,可以通过此方法设置一个 BRTCLogListener 对象,并实现如下方法:
callExperimentalAPI
调用实验性 API 接口
参数
详情
SDK 内部存在一些只针对特殊用户、特殊场景下的参数、方法。这些内容通常情况下,不适用于大多数普通用户,因此不会作为标准接口提供出来。如果在 BRTC SDK 标准接口中未能找到您需要的功能,您可以与我们联系来确认是否在试验性接口中可以开启或者设置。