API
API调用流程
初始化相关接口
createBaiduRtcRoomClient
BaiduRtcRoomClient* createBaiduRtcRoomClient();
介绍
创建 BaiduRtcRoomClient。
用户使用该 sdk 开发的入口,首先需要创建 BaiduRtcRoomClient, 通过该 api 初始化 sdk,发布流,订阅流等其他可提供的 api 操作。
参数
无
返回
BaiduRtcRoomClient 对象
BaiduRtcRoomClient::setAppID
void setAppID(const char *AppID);
介绍
设置AppID。
设置应用的AppID, 需要从百度智能云申请得到。
参数
参数 | 类型 | 描述 |
---|---|---|
AppID | char* | 应用的AppID |
返回
无
BaiduRtcRoomClient::setMediaServerURL
void setMediaServerURL(const char * MediaServerURL);
介绍
设置BRTC服务器的URL。
设置BRTC服务器的URL, 默认值是wss://rtc.exp.bcelive.com:8989/janus。
参数
参数 | 类型 | 描述 |
---|---|---|
MediaServerURL | char* | BRTC服务器连接地址 |
返回
无
BaiduRtcRoomClient::setCER
void setCER(const char *cerFile);
介绍
设置用于BRTC连接的根证书。
ssl证书文件,用于RTC信令服务器的根证书, 已经随SDK提供。
参数
参数 | 类型 | 描述 |
---|---|---|
cerFile | char* | 证书文件路径 |
返回
无
BaiduRtcRoomClient::Destory
void Destory() ;
介绍
销毁本对象。
销毁对象,释放对象的内存,断开和服务器连接,释放网络资源。
参数
无
返回
无
房间相关接口
BaiduRtcRoomClient::loginRoom
bool BaiduRtcRoomClient::loginRoom(const char* roomName, const char* userId, const char* displayName, const char* token);
介绍
房间登录。
登录房间成功后,用户可以发布流,或订阅流,并能通过IRtcMessageListener接口获取房间状态信息。
参数
参数 | 类型 | 描述 |
---|---|---|
roomName | char* | 房间名,长度不超过255字节 |
userId | char* | 用户id, 数字字符串,每个房间的用户id必须唯一 |
displayName | char* | 用户显示名 |
token | char* | 用于鉴权的token串 |
返回
true 成功, false 失败
BaiduRtcRoomClient::logoutRoom
bool BaiduRtcRoomClient::logoutRoom()
介绍
房间登出。
关闭媒体通道,关闭信令通道,释放内存资源,及销毁其他申请的资源。
参数
无
返回
true 成功, false
发布/订阅流相关接口
BaiduRtcRoomClient::startPublish
void BaiduRtcRoomClient::startPublish()()
介绍
发布流。
用户发布流。
参数
无
返回
无
BaiduRtcRoomClient::stopPublish
void BaiduRtcRoomClient::stopPublish()
介绍
停止发布流。
停止手动发布流。
参数
无
返回
无
BaiduRtcRoomClient::subscribeStreaming
void BaiduRtcRoomClient::subscribeStreaming(const char * feedId, IAudioFrameObserver *afo, IVideoFrameObserver *vfo, IDataFrameObserver *dfo) = 0;
介绍
订阅流。
用于订阅同一房间的其他用户的流。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | const char * | 用户要订阅的其他用户的流id列表 |
afo | IAudioFrameObserver | 音频回调接口, 也可以填写NULL,表示使用Client对象的音频回调接口 |
vfo | IVideoFrameObserver | 视频回调接口, 也可以填写NULL,表示使用Client对象的音频回调接口 |
dfo | IDataFrameObserver | Data回调接口, 也可以填写NULL,表示使用Client对象的音频回调接口 |
返回
无
BaiduRtcRoomClient::stopSubscribeStreaming
void BaiduRtcRoomClient::stopSubscribeStreaming(const char * feedId)
介绍
停止订阅流。
停止订阅feedId的码流。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | const char * | 用户要停止订阅的流id |
返回
无
音视频参数设置
BaiduRtcRoomClient::setParamSettings
void setParamSettings(RtcParameterSettings* paramSettings,RtcParameterSettings::RtcParamSettingType paramType)
介绍
设置视频编码等参数。
该接口用于设置音视频编码的参数。
参数
参数 | 类型 | 描述 |
---|---|---|
paramSettings | RtcParameterSettings | 音视频参数集 |
paramType | RtcParamSettingType | 设置的参数类型 |
RtcParameterSettings成员 | 类型 | 描述 |
---|---|---|
HasMultiNetwork | bool | 是否启用多卡, 默认false |
HasVideo | bool | 是否启用视频, 默认true |
HasAudio | bool | 是否启用音频, 默认true |
HasData | bool | 是否启用数据通道, 默认false |
AudioINFrequency | int | 音频输入采样率 |
AudioINChannel | int | 音频输入通道数 |
AudioOUTFrequency | int | 音频输出采样率 |
AudioOUTChannel | int | 音频输出通道数 |
VideoWidth | int | 输入视频的宽度 |
VideoHeight | int | 输入视频的高度 |
VideoFps | int | 输入视频的帧率 |
VideoMaxkbps | int | 视频发送的最大带宽值,默认1500Kbps |
VideoMinkbps | int | 视频发送的最小带宽值 |
ImageINType | RtcImageType | 视频输入的数据类型, 默认自动识别 |
ImageOUTType | RtcImageType | 视频输出的数据类型, 目前仅支持H264 |
ConnectionTimeoutMs | int | 连接超时时长, 默认5秒 |
ReadTimeoutMs | int | 读数据超时, 默认5秒 |
AutoPublish | bool | 是否自动发布流, 默认true |
AutoSubscribe | bool | 是否自动拉流, 默认true |
AsPublisher | bool | 是否作为发布者, 默认true |
AsListener | bool | 是否作为接收者, 默认true |
RtcParamSettingType枚举值 | 类型 | 描述 |
---|---|---|
RTC_PARAM_SETTINGS_ALL | enum | 更新全部参数 |
RTC_VIDEO_PARAM_SETTINGS_BITRATE | enum | 只更新视频最大编码码率 |
RtcImageType枚举值 | 类型 | 描述 |
---|---|---|
RTC_IMAGE_TYPE_NONE | enum | 未指定流类型 |
RTC_IMAGE_TYPE_JPEG | enum | JPEG图片流 |
RTC_IMAGE_TYPE_H264 | enum | H264的NAL视频格式 |
RTC_IMAGE_TYPE_I420P | enum | I420P视频流 |
RTC_IMAGE_TYPE_RGB | enum | RGB视频流 |
返回
无
BaiduRtcRoomClient::setFeedId
void setFeedId(const char * feedId)
介绍
设置拉流的种子id。
设置拉取的音视频流的种子id。
参数
参数 | 类型 | 描述 |
---|---|---|
feedId | char* | 用户要订阅的音视频流id |
返回
无
BaiduRtcRoomClient::registerVideoFrameObserver
void BaiduRtcRoomClient::registerVideoFrameObserver(IVideoFrameObserver* iVfo[], int iVfoNum)
介绍
注册视频数据帧到达Observer。
当使用外部渲染时,需要注册视频数据监测接口,有视频数据到来时,可通知用户去做渲染或其他处理。接口详细信息可查看头文件:BaiduExternalVideoRendererInterface.h
参数
参数 | 类型 | 描述 |
---|---|---|
iVfo | IVideoFrameObserver* | 数据帧到达Observer接口数组,多个接口可多路流,一个接口listening一路流 |
iVfoNum | int | Observer 接口数 |
返回
无
BaiduRtcRoomClient::registerAudioFrameObserver
void BaiduRtcRoomClient::registerAudioFrameObserver(IAudioFrameObserver* iAfo[], int iAfoNum)
介绍
注册音频数据帧到达Observer。
用于接收远端的音频数据,PCM格式。接口详细信息可查看头文件:BaiduExternalVideoRendererInterface.h
参数
参数 | 类型 | 描述 |
---|---|---|
iAfo | IAudioFrameObserver* | 数据帧到达Observer接口数组,多个接口可多路流,一个接口listening一路流 |
iAfoNum | int | Observer 接口数 |
返回
无
BaiduRtcRoomClient::sendImage
void BaiduRtcRoomClient::sendImage(const char *data, int len)
介绍
发送视频数据。
发送视频数据, 数据类型可以是none,jpeg,h264,yuv,需要通过setParamSettings指定,默认是none即自动识别
参数
参数 | 类型 | 描述 |
---|---|---|
data | const char * | 视频数据内存地址 |
len | int | 视频数据大小 |
返回
无
BaiduRtcRoomClient::sendAudio
void BaiduRtcRoomClient::sendAudio(const char *data, int len)
介绍
发送音频数据。
发送音频数据, 数据类型为PCM数据,需要通过setParamSettings指定输入音频的采样和通道参数
参数
参数 | 类型 | 描述 |
---|---|---|
data | const char * | 音频数据内存地址 |
len | int | 音频数据大小 |
返回
无
消息接口
BaiduRtcRoomClient::sendMessageToUser
void BaiduRtcRoomClient::sendMessageToUser(const char *msg, const char * id)
介绍
发送消息。
可通过该接口发送自定义消息给聊天室中的用户, 当id为"0"时, 表示广播消息。
参数
参数 | 类型 | 描述 |
---|---|---|
msg | const char* | 消息体, 建议使用json串 |
id | const char* | 接收消息的用户id |
返回
无
BaiduRtcRoomClient::registerRtcMessageListener
void BaiduRtcRoomClient::registerRtcMessageListener(IRtcMessageListener* msgListener)
介绍
消息监听接口。
用户可以实现参数定义的接口,并通过该接口注册,当sdk 启动后,可以收到来自sdk的消息,并做相应的处理。接口详细信息可查看头文件:BaiduRtcCommonDefine.h
参数
参数 | 类型 | 描述 |
---|---|---|
msgListener | IRtcMessageListener* | rtc sdk 消息上报接口 |
RtcMessage成员 | 类型 | 描述 |
---|---|---|
msgType | RtcMessageType | 消息类型 |
data | union | 联合类型 |
feedId | int64_t | 消息id号 |
errorCode | int64_t | 错误码 |
extra_info | const char* | 消息额外信息 |
RtcMessageType枚举值 | 对应值 | 描述 |
---|---|---|
RTC_MESSAGE_ROOM_EVENT_LOGIN_OK | 100 | 用户登录成功 |
RTC_MESSAGE_ROOM_EVENT_LOGIN_TIMEOUT | 101 | 用户登录超时 |
RTC_MESSAGE_ROOM_EVENT_LOGIN_ERROR | 102 | 用户登录失败 |
RTC_MESSAGE_ROOM_EVENT_CONNECTION_LOST | 103 | 连接丢失 |
RTC_MESSAGE_ROOM_EVENT_REMOTE_COMING | 104 | 远端视频出现 |
RTC_MESSAGE_ROOM_EVENT_REMOTE_LEAVING | 105 | 远端视频流离开 |
RTC_MESSAGE_ROOM_EVENT_REMOTE_RENDERING | 106 | 远端开始渲染 |
RTC_MESSAGE_ROOM_EVENT_REMOTE_GONE | 107 | 远端结束渲染 |
RTC_MESSAGE_ROOM_EVENT_SERVER_ERROR | 108 | 服务器错误,错误码为errorCode, 错误详情为extra_info |
RTC_ROOM_EVENT_AVAILABLE_SEND_BITRATE | 200 | 可用带宽事件,data 为带宽值 |
RTC_ROOM_EVENT_ON_USER_JOINED_ROOM | 300 | 用户进入房间事件 |
RTC_ROOM_EVENT_ON_USER_LEAVING_ROOM | 301 | 用户离开房间事件 |
RTC_ROOM_EVENT_ON_USER_MESSAGE | 302 | 用户自定义消息事件,feedId 为发送方的id, extra_info为消息内容 |
RTC_ROOM_EVENT_ON_USER_ATTRIBUTE | 303 | 用户属性变更事件,feedId为变更方的id, extra_info为属性内容 |
RTC_MESSAGE_STATE_STREAM_UP | 2000 | 音视频流建立事件 |
RTC_MESSAGE_STATE_SENDING_MEDIA_OK | 2001 | 音视频媒体发送成功事件 |
RTC_MESSAGE_STATE_SENDING_MEDIA_FAILED | 2002 | 音视频媒体发送失败事件 |
RTC_MESSAGE_STATE_STREAM_DOWN | 2003 | 音视频流断开事件 |
RTC_STATE_STREAM_SLOW_LINK_NACKS | 2100 | 网络状态事件 |
RTC_STATE_SIGNAL_DELAY_ECHO | 2101 | 信令延迟反馈 |
RTC_MESSAGE_SOURCE_VIDEO_INFO | 3000 | 发送端的网络带宽 |
返回
无
BaiduRtcRoomClient::setUserAttribute
void BaiduRtcRoomClient::setUserAttribute(const char * a)
介绍
设置用户属性。
给用户设置属性,可以把用户状态保存起来, 并通知房间中的其他用户。
参数
参数 | 类型 | 描述 |
---|---|---|
a | const char * | 设置当前用户的属性值 |
返回
无
BaiduRtcRoomClient::getUserAttribute
void BaiduRtcRoomClient::getUserAttribute(const char * id)
介绍
获取用户属性。
获取用户属性,属性值通过事件RTC_ROOM_EVENT_ON_USER_ATTRIBUTE回调。
参数
参数 | 类型 | 描述 |
---|---|---|
id | const char * | 用户id |
返回
返回的属性值通过事件RTC_ROOM_EVENT_ON_USER_ATTRIBUTE回调得到。
BaiduRtcRoomClient::setUE4
void BaiduRtcRoomClient::setUE4(const char *ue4)
介绍
设置UE4直连。
设置UE4的地址进行直接把UE4的渲染数据推到BRTC。
参数
参数 | 类型 | 描述 |
---|---|---|
ue4 | const char * | UE4的PixelStreaming的ip:port |
返回
无
BaiduRtcRoomClient::setCandidateIP
void BaiduRtcRoomClient::setCandidateIP(const char *candidateIP)
介绍
设置RTP候选地址。
设置RTP候选地址,和setMediaServerIP配合使用可以通过nginx UDP代理转发RTP数据。
参数
参数 | 类型 | 描述 |
---|---|---|
candidateIP | const char * | 推流端RTP的候选地址 |
返回
无
BaiduRtcRoomClient::setMediaServerIP
void BaiduRtcRoomClient::setMediaServerIP(const char *mediaserverIP)
介绍
设置固定接收RTP的服务器IP地址。
设置固定接收RTP的服务器IP地址,和setCandidateIP配合使用可以通过nginx UDP代理转发RTP数据。
参数
参数 | 类型 | 描述 |
---|---|---|
mediaserverIP | const char * | 百度RTC的RTP媒体服务器列表中的IP |
返回
无
其他接口
getBaiduRtcSdkVersion
const char* getBaiduRtcSdkVersion()
介绍
获取SDK版本号。
获取百度 RTC SDK 版本号。 参数
无
返回
获得版本号的字符串
enableBaiduRtcLog
void enableBaiduRtcLog(bool isEnable)
介绍
日志功能。
日志功能开关。
参数
参数 | 类型 | 描述 |
---|---|---|
isEnable | bool | 若为 true, 开启日志功能, 开启日志功能后,会把日志保存到本地文件中;若为false 关闭日志功能。 |
返回
无