初始化SDK
SRTC::StatusCode ret = SRTC::RTCEngine_Init(&_irtc);
if((ret |= SRTC::StatusCode::OK) || !_irtc)
{
return false;
}
设置消息回调
_irtc->setEventHandler(this);
加入频道
//如果需要修改配置信息请在,通过getSetting,进行参数设置
std::string token = "";
_irtc->joinChannel(token);
//触发 IRTCEngineEvent.onJoinRoom 事件之后才是真正的入会成功
开关摄像头
SRTC::IRTCLocalCameraTrack* _camStream = nullptr;
const char* track_key = "camera";
SRTC::StatusCode ret = _irtc->getCameraTrack(track_key,&_camStream);
if((ret != SRTC::StatusCode::OK) || !_camStream )
{
return ret;
}
_camStream->addPlayView(callbackView);
_camStream->startCapture();
_irtc->publish(_camStream);
SRTC::IRTCLocalCameraTrack* _camStream = nullptr;
const char* track_key = "camera";
SRTC::StatusCode ret = _irtc->getCameraTrack(track_key,&_camStream);
if((ret != SRTC::StatusCode::OK) || !_camStream )
{
retrun ret;
}
_camStream->stopCapture();
_camStream->removeAllPlayView();
_irtc->unpublish(_camStream);
开关麦克风
SRTC::IRTCLocalMicTrack* _micStream = nullptr;
const char* track_key = "mic";
SRTC::StatusCode ret = _irtc->getAudioTrack(track_key,&_micStream);
if((ret != SRTC::StatusCode::OK) || !_micStream )
{
return ret;
}
_micStream->startCapture();
_irtc->publish(_micStream);
SRTC::IRTCLocalMicTrack* _micStream = nullptr;
const char* track_key = "mic";
SRTC::StatusCode ret = _irtc->getAudioTrack(track_key,&_micStream);
if((ret != SRTC::StatusCode::OK) || !_micStream )
{
return ret;
}
_micStream->stopCapture();
_irtc->unpublish(_micStream);
开关桌面共享
SRTC::IRTCLocalScreenTrack* _screenStream = nullptr;
const char* track_key = "screen";
SRTC::StatusCode ret = _irtc->getScreenTrack(track_key,&_screenStream);
if((ret != SRTC::StatusCode::OK) || !_screenStream )
{
return ret;
}
_screenStream->startCapture();
_irtc->publish(_screenStream);
SRTC::IRTCLocalScreenTrack* _screenStream = nullptr;
const char* track_key = "screen";
SRTC::StatusCode ret = _irtc->getScreenTrack(track_key,&_screenStream);
if((ret != SRTC::StatusCode::OK) || !_screenStream )
{
return ret;
}
_screenStream->stopCapture();
_irtc->unpublish(_screenStream);
开关扬声器
SRTC::IRTCRemoteAudioTrack* _speakerStream = nullptr;
SRTC::StatusCode ret = _irtc->getRemoteAudioTrack("","",&_speakerStream);
if((ret != SRTC::StatusCode::OK) || !_speakerStream )
{
return ret;
}
_speakerStream->startPlay();
SRTC::IRTCRemoteAudioTrack* _speakerStream = nullptr;
SRTC::StatusCode ret = _irtc->getRemoteAudioTrack("","",&_speakerStream);
if((ret != SRTC::StatusCode::OK) || !_speakerStream )
{
return ret;
}
_speakerStream->stopPlay();
显示关闭远端视频流
SRTC::IRTCRemoteVideoTrack* _remoteStream = nullptr;
std::string uid = "";//用户uid
std::string stream_track_id = "";//用户stream_tracks 对应的流id
SRTC::StatusCode ret = _irtc->getRemoteVideoTrack(uid,stream_track_id,&_remoteStream);
if((ret != SRTC::StatusCode::OK) || !_remoteStream )
{
return ret;
}
_remoteStream->addPlayView(hwnd);
_irtc->subscribe(_remoteStream);
SRTC::IRTCRemoteVideoTrack* _remoteStream = nullptr;
std::string uid = "";//用户uid
std::string stream_track_id = "";//用户stream_tracks 对应的流id
SRTC::StatusCode ret = _irtc->getRemoteVideoTrack(uid,stream_track_id,&_remoteStream);
if((ret != SRTC::StatusCode::OK) || !_remoteStream )
{
return ret;
}
_remoteStream->removeAllPlayView();
_irtc->unsubscribe(_remoteStream);
开关本地录制
std::string mid = sdkInfo.meeting_id().toStdString();
SMeeting::IMEETRecord* _rc;
_imeet->getLocalRecord(mid, &_rc);
//录制指定窗口
HWND hwnd = (HWND)this->widID();
_rc->setRecordHwnd(hwnd, 0, 0, 0, 0);
//录制画面配置
//_rc->setRecordLayoutMemberView(dt.c_str(),dt.size());
_rc->startRecord();
std::string mid = sdkInfo.meeting_id().toStdString();
SMeeting::IMEETRecord* _rc;
_imeet->getLocalRecord(mid, &_rc);
_rc->stopRecord();
退出频道
_irtc->leaveChannel();