百家云 C++ SDK 使用 m_pBrtc 对象来管理一个本地用户在房间内的行为,在进入房间之前需要先创建并初始化一个 m_pBrtc 对象。相关函数接口在 c++-sdk 2.5.5 及以上版本支持。
调用 getBRTCShareInstance 即可创建 BRTC 实例对象,请确保在调用其他 API 前先调用该方法创建并初始化。注意 不要用 delete 销毁该 BRTC 实例对象,应该调用 destroyBRTCShareInstance 来销毁实例,同时确保在同一个线程里调用 getBRTCShareInstance 和 destroyBRTCShareInstance。
class BRTCCore : public BRTCCallback, public BRTCAudioFrameCallback { public: // interface BRTCCallback void onEnterRoom(int result) override; void onExitRoom(uint32_t reason) override; void onUserAudioAvailable(const char* userId, bool available) override; void onUserVideoAvailable(const char* userId, bool available) override; void onStatistics(const BRTCStatistics& statistics) override; void onError(BRTCAVError errCode, const char* errMsg, void* extraInfo) override; //... // interface BRTCAudioFrameCallback void onCapturedRawAudioFrame(BRTCAudioFrame* frame) override; void onLocalProcessedAudioFrame(BRTCAudioFrame* frame) override; void onCustomAudioRenderingFrame(BRTCAudioFrame* frame) override; private: BRTC* m_pBrtc = nullptr; } BRTCCore::BRTCCore() { m_pBrtc = getBRTCShareInstance(); m_pBrtc->setCallback(this); m_pBrtc->setAudioFrameCallback(this); BRTCAudioFrameCallbackFormat audio_frame_callback_format; audio_frame_callback_format.channel = 1; audio_frame_callback_format.sampleRate = 48000; audio_frame_callback_format.samplesPerCall = 480; m_pBrtc->setCustomAudioRenderingFrameCallbackFormat(&audio_frame_callback_format); } BRTCCore::~BRTCCore() { destroyBRTCShareInstance(); m_pBrtc = nullptr; } void BRTCCore::enterRoom() { BRTCParams params; params.appID = "klskd0sd8sdfooi7we"; params.roomID = "123456"; params.sign = "9sdw9sssq"; BRTCUser user; user.userId = "111111"; params.user = user; m_pBrtc->enterRoom(params); }
通过设置事件回调接口 BRTCCallback ,您可以监听 SDK 在运行期间所发生的错误信息、警告信息、以及各种音视频事件,根据这些回调决定业务的后续动作。
class BRTCCore : public BRTCCallback, public BRTCAudioFrameCallback { public: // interface BRTCCallback void onEnterRoom(int result) override; void onExitRoom(uint32_t reason) override; void onUserAudioAvailable(const char* userId, bool available) override; void onUserVideoAvailable(const char* userId, bool available) override; void onStatistics(const BRTCStatistics& statistics) override; void onError(BRTCAVError errCode, const char* errMsg, void* extraInfo) override; //... private: BRTC* m_pBrtc = nullptr; } BRTCCore::BRTCCore() { m_pBrtc = getBRTCShareInstance(); m_pBrtc->setCallback(this); }
在调用 enterRoom 接口时需要填写输入关键参数 BRTCParams。
BRTCUser结构体
准备好参数后,就可以调用 enterRoom 接口函数进入房间了。
void BRTCCore::enterRoom() { BRTCParams params; params.appID = "klskd0sd8sdfooi7we"; params.roomID = "123456"; params.sign = "9sdw9sssq"; BRTCUser user; user.userId = "111111"; params.user = user; m_pBrtc->enterRoom(params); }
进入房间事件回调
void BRTCCore::onEnterRoom(int result) { LOG(INFO) << "onEnterRoom, result[" << result << "]"; //添加进入房间回调的处理逻辑 }
调用 exitRoom 接口即可退出当前的房间,SDK 会在退房结束后通过 onExitRoom(int reason) 回调事件通知您。
//调用接口主动退出房间 m_pBrtc->exitRoom(); void BRTCCore::onExitRoom(uint32_t reason) { LOG(INFO) << "reason[" << reason << "]"; //添加退出房间回调的处理逻辑 }
加入和离开房间
百家云 C++ SDK 使用 m_pBrtc 对象来管理一个本地用户在房间内的行为,在进入房间之前需要先创建并初始化一个 m_pBrtc 对象。
相关函数接口在 c++-sdk 2.5.5 及以上版本支持。
创建 BRTC 实例对象
调用 getBRTCShareInstance 即可创建 BRTC 实例对象,请确保在调用其他 API 前先调用该方法创建并初始化。
注意 不要用 delete 销毁该 BRTC 实例对象,应该调用 destroyBRTCShareInstance 来销毁实例,同时确保在同一个线程里调用 getBRTCShareInstance 和 destroyBRTCShareInstance。
监听 SDK 的事件
通过设置事件回调接口 BRTCCallback ,您可以监听 SDK 在运行期间所发生的错误信息、警告信息、以及各种音视频事件,根据这些回调决定业务的后续动作。
进房间参数
在调用 enterRoom 接口时需要填写输入关键参数 BRTCParams。
BRTCUser结构体
进入房间
准备好参数后,就可以调用 enterRoom 接口函数进入房间了。
进入房间事件回调
退出房间
调用 exitRoom 接口即可退出当前的房间,SDK 会在退房结束后通过 onExitRoom(int reason) 回调事件通知您。