|
麻烦确认几个问题:
1、创建会议的模式是
BVCU_CONF_MODE_SPEAK_DISCUSSIONGROUP
| BVCU_CONF_MODE_JOIN_FREE | BVCU_CONF_MODE_APPLY_AUTOAGREE
| BVCU_CONF_MODE_START_STOPADMIN
| BVCU_CONF_MODE_RECORD_STOPADMIN
这种模式下无需申请发言;
2、创建语音会议的流程:创建会议 -> 安全帽加入会议(客户端已自动加入)-> 开启会议 -> 安全帽和客户端加入语音会议 -> 开始语音对讲;
3、安全帽加入会议传参:
int CMLibBVCU::JoinMeeting(const QString &id, BVCU_Conf_Participator_Info *infos, int count)
{
if (m_session) {
BVCU_Command cmdInfo;
memset(&cmdInfo, 0, sizeof(cmdInfo));
cmdInfo.iSize = sizeof(cmdInfo);
cmdInfo.iMethod = BVCU_METHOD_CONTROL;
cmdInfo.iSubMethod = BVCU_SUBMETHOD_CONF_PARTICIPATOR_ADD;
cmdInfo.OnEvent = cmd_OnEvent;
cmdInfo.stMsgContent.pData = infos;
cmdInfo.stMsgContent.iDataCount = count;
strcpy_s(cmdInfo.szTargetID, sizeof (cmdInfo.szTargetID), id.toStdString().c_str()); // 会议id
return BVCU_SendCmd(m_session, &cmdInfo);
}
return BVCU_RESULT_E_FAILED;
}
BVCU_Conf_Participator_Info 中的szID 填安全帽 id,iAllowedMediaDir = BVCU_MEDIADIR_TALKONLY 是否正确?加入语音会议的子命令是 BVCU_SUBMETHOD_CONF_PARTICIPATOR_JOIN 是否正确?BVCU_Conf_Participator_Info 传的参数和加入会议是否一样?
int CMLibBVCU::ApplyForJoinSpeakMeeting(const QString &id, BVCU_Conf_Participator_Info *infos, int count)
{
if (m_session) {
BVCU_Command cmdInfo;
memset(&cmdInfo, 0, sizeof(cmdInfo));
cmdInfo.iSize = sizeof(cmdInfo);
cmdInfo.iMethod = BVCU_METHOD_CONTROL;
cmdInfo.iSubMethod = BVCU_SUBMETHOD_CONF_PARTICIPATOR_JOIN;
cmdInfo.OnEvent = cmd_OnEvent;
strcpy_s(cmdInfo.szTargetID, sizeof (cmdInfo.szTargetID), id.toStdString().c_str()); // 会议 id
cmdInfo.stMsgContent.pData = infos;
cmdInfo.stMsgContent.iDataCount = count;
return BVCU_SendCmd(m_session, &cmdInfo);
}
return BVCU_RESULT_E_FAILED;
}
现在按照上述流程和参数,安全帽加入会议成功(见下面的代码),但加入语音会议失败 -65511,麻烦帮忙分析一下是哪里有问题,谢谢!
case BVCU_SUBMETHOD_CONF_PARTICIPATOR_ADD_CMD:
qDebug() << __func__ << "join meeting " << pEvent->iResult; // 为 0
{
BVCU_Conf_Participator_AddResult *result = (BVCU_Conf_Participator_AddResult*)pEvent->stContent.pData;
if (result) {
int m = result->iResultBits[0];
int n = m & ((unsigned int)1 << (31-(0&31)));
qDebug() << __func__ << "join meeting 0x" << QString::number(n, 16); // 也为0, 按头文件里的说明最高位应为1 才表示对应的安全帽加入成功,当前测试只有一个安全帽
}
m_OnMeetingEvent(hSession, "", BVCU_SUBMETHOD_CONF_PARTICIPATOR_ADD_CMD, pEvent->iResult, result);
}
break;
|
|