群视频源码导读说明

群视频相关类说明

MultiVideoInviteForm类

file:multi_video_invite.h

收到群视频通知时的窗口展示

对象方法(部分)说明

成员函数介绍

发送群聊接听通知
void SendMultiVchatNotify(bool accept);
参数说明
参数 类型 说明
accept bool 是否接听群聊邀请通话
设置邀请界面头像信息
void CheckHeadIcon();
跳转到会话页面
void JumpSession();
邀请超时控制
void InviteTimeOut();
成员信息更改回调处理
void OnUserInfoChange(const std::list<nim::UserNameCard>& uinfos);
参数说明
参数 类型 说明
uinfos std::list 用户信息list集合

MultiVideoInviteForm类

file:multi_video_form.h

群视频聊天界面展示

####对象方法(部分)说明

多人群聊人员进入通知
void OnPeopleJoin(std::string uid);
参数说明
参数 类型 说明
uid std::string 成员uid
多人群聊人员退出
void OnPeopleLeave(std::string uid);
参数说明
参数 类型 说明
uid std::string 成员uid
设置成员uid的bitmap控件信息
void OnSetShowBitmap(std::string uid, bool video,bool refuse=false);
参数说明
参数 类型 说明
uid std::string 成员uid
video bool 是否是视频模式
refuse bool 是否拒绝了邀请
成员音量信息
void OnVChatVolumeCallback(std::map<std::string, int32_t> map_volume);
参数说明
参数 类型 说明
map_volume std::map uid对应的vol音量信息
更新成员的音量信息
void RefreshMemberAudioStatus();
获取音量值的等级
int32_t GetVolumeStep(uint32_t volume);
参数说明
参数 类型 说明
volume uint32_t 音量
返回说明

音量等级

获取已经邀请的成员的视频状态
std::map<std::string,bool> GetInvitedMember();
返回值说明

uid 对应的视频状态

设置邀请成员视频状态
void SetInvitedMember(std::string uid,bool video);
参数说明
参数 类型 说明
uid std::string 成员uid
video bool 是否是视频模式
得到视频人数
int GetVideoCount();
返回值说明

返回当前群聊的开启视频的人数,当前房间的视频人数+允许视频通话的人数(还未进房间)

获取正在群聊的成员集合
std::set<std::string> GetTalkingMember()
返回值说明

已经进入音视频房间的成员信息

设置邀请的成员集
void SetInvitingMember(std::set<std::string> inviting_members);
参数说明
参数 类型 说明
inviting_members std::set 邀请的成员uid集合
初始音量,采集,置顶相关UI设置
void InitVolumnSetting();
获取音视频房间名
std::string  GetRoomName();
返回值说明

音视频房间名

缓存成员的视频信息
void SetCacheMemberVideo(std::string uid, bool video);
ps.防止对方的音视频模式通知消息(消息kMsgMultiVchatP2PChangeMode)先于该成员进入房间的通知上报,故需要缓存 
参数说明
参数 类型 说明
uid std::string 成员uid
video bool true:视频 false:音频
显示结束通话页面
void EnterEndCallPage(MultiEndCallEnum end_reason);
参数说明
参数 类型 说明
end_reason MultiEndCallEnum 结束原因
直接关闭窗口
void DirectQuit();
自动关闭窗口
void OnAutoCloseWnd();
关闭视频设备
void FreeVideo();
关闭音频设备
void FreeAudio();
初始化摄像头控件
void InitCbCameraSetting();
初始化音视频设置操作
void InitSetting();
检查视频输入设备
int CheckVideoInputDevice();
关闭窗口前所做的操作
void BeforeClose();
给uid or tid发送音视频切换通知
void EnterEndCallPage(MultiEndCallEnum end_reason);
参数说明
参数 类型 说明
uid std::string 成员uid or tid
team bool true:群透传消息 false:p2p消息
bitmap渲染窗口分配
void AdjustVideoBitmap(std::string uid, bool remove, bool video, VchatMemberStatus status);
参数说明
参数 类型 说明
uid std::string 成员uid
remove bool remove true:增加,false:移除,ps.目前窗口中未移除,用文字提示
video bool true:视频 false:音频
status VchatMemberStatus uid的通话状态
检查视频群聊的人数
int  CheckVChatMembers();
返回值说明

正在群聊的人数

限制信息弹框提示
void AdjustVideoBitmap(std::string uid, bool remove, bool video, VchatMemberStatus status);
参数说明
参数 类型 说明
video bool true:代表视频受限提示 false:代表群聊人数受限提示
切换操作
void ExChangeBitmapControl(int bitmap_i_index, int bitmap_j_index);
参数说明
参数 类型 说明
bitmap_i_index int 二维数组索引号
bitmap_j_index int 二维数组索引号
置顶操作
void SetTopMast(bool forever);
参数说明
参数 类型 说明
forever bool true:置顶 false:不置顶
调整窗口大小
void AdjustWindowSize();
刷新正在群聊的人员记录
void RefreshTalkingMembers(std::string uid, bool remove);
参数说明
参数 类型 说明
uid std::string uid 成员uid
remove bool remove true:移除 false 增加记录
启动摄像头设备
void StartCameraDevice();
启动呼叫倒计时
void StartCallTimer(VideoUidsInfo& uid_info);
参数说明
参数 类型 说明
uid_info VideoUidsInfo 成员相关信息
关闭uid的呼叫定时器
void StartCallTimer(VideoUidsInfo& uid_info);
参数说明
参数 类型 说明
uid std::string 成员uid
关闭聊天
void EndVChat();
ps 45s后无人进入那么就关闭会话
调整群视频创建者的视频渲染位置
void AdjustCreatorVideoBitmap(std::string uid);
参数说明
参数 类型 说明
uid std::string 成员uid
成员信息更改回调处理
void OnUserInfoChange(const std::list<nim::UserNameCard>& uinfos);
参数说明
参数 类型 说明
uinfos std::list 用户信息list集合

成员变量(部分)说明

    std::string room_name_; //房间名
    std::string session_id_;
    uint64_t channel_id_; //音视频channel_id
    bool  creator_;//是否是群视频发起者
    std::string creator_id_;//群视频创建者id
    bool    camera_is_open_;  //摄像头是否主动关闭
    bool current_video_mode_; //当前是否是视频模式
    nbase::WeakCallbackFlag paint_video_timer_; //刷新视频定时器
    nbase::WeakCallbackFlag start_call_timer_; //呼叫定时器
    VideoUidsInfo video_uids[2][4]; //群视频小窗口中的人员信息
    VideoUidsInfo big_wnd_info_; //群视频大窗口中的人员信息
    nbase::NLock data_lock_; //video_uids修改时用到的lock
    nbase::NLock invited_members_lock_; //invited_members_修改时用到的lock
    std::map<std::string, bool> invited_members_; //已经邀请的成员信息
    std::set<std::string> talking_members_; //正在聊天的成员信息
    std::map<std::string, bool> cache_members_info_;//缓存提前到达的消息通知
    std::set<std::string> members_info_error_;//查询uid的name时未查询到时的成员
    Ring      voip_ring_; //响铃
    VchatMemberStatus current_status_;//当前的聊天状态