视频会议

7.1 创建视频会议

创建CMeetingManager对象
添加获取会议列表回调函数指针

对象所属类需要实现IMeetingManagerListener接口
m_pMeetingManager = new CMeetingManager(m_pUserManager, this);
CMeetingManager::addChatroomGetListListener(this);

7.2 回调函数说明

/**
* 有新用户加入会议
* @param meetingID 会议ID
* @param userID 新加入者ID
*/
virtual void onJoined(string meetID, string userID) = 0;

/**
* 有人离开会议
* @param meetingID 会议ID
* @param userID 离开者ID
*/
virtual void onLeft(string meetingID, string userID) = 0;

/**
* 一些异常情况引起的出错,请在收到该回调后主动断开会议
* @param meetingID 会议ID
* @param error 错误信息
*/
virtual void onMeetingError(string meetingID, string error) = 0;


/**
* 聊天室成员数变化
* @param number 变化后的会议人数
*/
virtual void onMembersUpdated(int number) = 0;

/**
* 自己被踢出聊天室
*/
virtual void onSelfKicked() = 0;

/**
* 自己被踢出聊天室
*/
virtual void onSelfMuted(int seconds) = 0;

/**
* 收到消息
* @param message
*/
virtual void onReceivedMessage(CIMMessage* pMessage) = 0;

/**
* 收到私信消息
* @param message
*/
virtual void onReceivePrivateMessage(CIMMessage* pMessage) = 0;
virtual int getRealtimeData(string strUserId, uint8_t* data, int len) = 0;
/**
* 收到视频数据
* @param upId
* @param w 宽度
* @param h 高度
* @param videoData 数据
* @param videoDataLen 数据长度
*/
virtual int getVideoRaw(string strUserId, int w, int h, uint8_t* videoData, int videoDataLen) = 0;

7.3 获取会议列表说明

无AEC使用方法

 * 获取会议列表
*/
void getMeetingList()
{
XHMeetingManager::getMeetingList("", CHATROOM_LIST_TYPE_MEETING);
}
调用该方法后会相应chatroomQueryAllListOK回调函数
/*
* 保存会议
*/
string strInfo = "{\"id\":\"";
strInfo += strMeetingId;
strInfo += "\",\"creator\":\"";
strInfo += m_pUserManager->m_ServiceParam.m_strUserId;
strInfo += "\",\"name\":\"";
strInfo += strName.GetBuffer(0);
strInfo += "\"}";
m_pMeetingManager->saveToList(m_pUserManager->m_ServiceParam.m_strUserId, CHATROOM_LIST_TYPE_MEETING, strMeetingId, strInfo);

AEC使用方法

/**
* 获取会议列表
*/
void getMeetingList()
{
list<ChatroomInfo> listData;
CInterfaceUrls::demoRequestMeetingList(listData, m_pUserManager);
chatroomQueryAllListOK(listData);
}
/*
* 保存会议
*/
string strInfo = "{\"id\":\"";
strInfo += strMeetingId;
strInfo += "\",\"creator\":\"";
strInfo += m_pUserManager->m_ServiceParam.m_strUserId;
strInfo += "\",\"name\":\"";
strInfo += strName.GetBuffer(0);
strInfo += "\"}";
CInterfaceUrls::demoSaveToList(m_pUserManager->m_ServiceParam.m_strUserId, CHATROOM_LIST_TYPE_MEETING, strMeetingId, strInfo);

7.4 XHMeetingManager API 说明

/**
* 添加获取会议列表回调函数
* @param pChatroomGetListListener
*/
static void addChatroomGetListListener(IChatroomGetListListener* pChatroomGetListListener);
/**
* 获取会议列表
* @param strUserId用户ID
* @param listType 列表类型
*/
static void getMeetingList(string strUserId, int listType);

/**
* 设置媒体类型
* @param mediaTypeEnum 音视频同时存在,还是只开启其中一项。
*/
void setRtcMediaType(int mediaTypeEnum);

/**
* 创建会议
* @param strName 名
* @param chatroomType chatroom类型
* @param channelType channel类型
* @return meeting id
*/
string createMeeting(string strName, int chatroomType, int channelType);
/**
* 加入会议
* @param strMeetingID 会议ID
*/
bool joinMeeting(string strMeetingID);

/**
* 离开会议
* @param strMeetingID 会议ID
*/
bool leaveMeeting(string strMeetingID);

/**
* 切换成大图
* @param strUserID 切换成大图的用户ID
*/
bool changeToBig(string strUserID);

/**
* 切换成小图
* @param userID 切换成小图的用户ID
*/
bool changeToSmall(string strUserID);

/**
* 动态开关音频,直播过程中可随时开关音频,直播结束后状态自动重置。
*/
void setAudioEnable(bool bEnable);

/**
* 动态开关视频,直播过程中可随时开关视频,直播结束后状态自动重置。
*/
void setVideoEnable(bool bEnable);

/**
* 发送会议消息
* @param message 发送的消息内容
* @param callback 结果回调
* @return 返回发送的消息对象
*/
CIMMessage* sendMessage(string strMessage);

/**
* 发送会议私密消息
* 私密消息只有目标用户可以收到
* @param toID 目标用户ID
* @param message 发送的消息内容
* @return 返回发送的消息对象
*/
CIMMessage* sendPrivateMessage(string toID, string strMessage);

/**
* 对会议中的某人禁言
* @param meetingID 会议ID
* @param memberID 被禁言者ID
* @param muteSeconds 禁言时间
* @param callback 结果回调
*/
bool muteMember(string meetingID, string memberID, int muteSeconds);

/**
* 解除会议中某人的禁言
* @param meetingID 会议ID
* @param memberID 被禁言者ID
*/
bool unMuteMember(string meetingID, string memberID);

/**
* 从会议室踢出用户
* @param meetingID 会议ID
* @param memberID 被踢者ID
*/
bool kickMember(string meetingID, string memberID);

/**
* 保存到列表
* @param userId
* @param type
* @param meetingId
* @param data
*/
bool saveToList(string userId, int type, string meetingId, string data);

/**
* 从列表删除
* @param userId 用户ID
* @param type 类型
* @param meetingId 会议室ID
*/
void deleteFromList(string userId, int type, string meetingId);

/**
* 推送RTMP流
* @param rtmpurl 推送地址
*/
void pushRtmp(string rtmpurl);

/**
* 停止推送RTMP流
*/
void stopPushRtmp();

/**
* 插入音频数据
* @param audioData
* @param dataLen
*/
void insertAudioRaw(uint8_t* audioData, int dataLen);
/**
* 插入视频数据
* @param videoData
* @param dataLen
* @param isBig
*/
void insertVideoRaw(uint8_t* videoData, int dataLen, int isBig);
/**
* 裁剪视频数据
*/
int cropVideoRawNV12(int w, int h, uint8_t* videoData, int dataLen, int yuvProcessPlan, int rotation, int needMirror, uint8_t* outVideoDataBig, uint8_t* outVideoDataSmall);
/**
* 查询音频数据
*/
void querySoundData(uint8_t** pData, int* nLength);