实时音视频RTC

    API

    API调用流程

    image.png

    初始化相关接口

    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成员 类型 描述
    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 音视频流断开事件

    返回

    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 关闭日志功能。

    返回

    上一篇
    集成SDK
    下一篇
    macOS SDK