多人音视频

流程

  1. 发起者发起创建多人房间
  2. 发起者进入房间后邀请成员 发起者(邀请者)向多个被邀请者发送消息1
  3. 被邀请者同意或拒绝,向邀请者返回消息2。
  4. 发起者取消呼叫,发送消息6,被邀请者收到消息后做相应的ui操作
  5. 邀请者收到被邀请者同意的消息后,首先检查本地被邀请者是否已经通过其他端进入音视频房间来决定被邀请者是否可以进入房间,然后检查==当前房间开启视频人数==和==邀请者发出的可开启视频的通知的人数==总数有没超过阈值来决定被邀请者是否可以开启视频,结果通过消息3返回给被邀请者,同时开启45s的定时器,定时器结束前如果邀请者收到了被邀请者进入房间的通知,则取消定时器,否者定时器到期后将被邀请者从==邀请者发出的可开启视频的通知的人数==中删除;被邀请者收到消息后,如果准许进入,被邀请者根据消息3中的video字段判断是否以视频模式进入多人音视频房间。
  6. 已在房间中的成员收到新成员进入音视频房间的通知后向新成员发送消息5,同步自己的音视频状态
  7. 成员打开视频前需要检查当前成员中视频个数,如果已经达到限制不允许打开,如果可以打开,则需要发送消息4通知其他成员。关闭视频时也需要通知消息4

特殊情况说明

  1. 多个人员同时呼叫同一个人员A群视频 A确认接听或取消后,A接听发送消息2,接听的发起者走5,其他发起者显示拒绝接收邀请,A拒绝,所有的发起者都结束对A的邀请状态
  2. 人员A手机和电脑都登录,视频群聊邀请正在用手机进行视频群聊的人员A时 正在通话的一端收到消息1后,不做操作,另一端的设备显示邀请界面,接听后,正在通话的一端收到系统通知后,则将当前通话结束,另一端正常通话。若拒绝,则对正在通话的A不会造成影响。
  3. 正在群视频的成员在其他端再次去邀请成员会话会导致当前的音视频会话结束

备注

消息通知

所有消息都使用自定义系统通知,参数用json封装,通过消息中的attach字段传递,开发者收到attach字段后通过解析id字段判断是否为音视频通知,通过解析content字段来解析具体的信令内容 {"id":100, "content":{}}

content字段信令格式

在扩展字段中用json传递,所有内容放到一个key下面。

键常量值 值类型 说明
teamId string 多人会议基于的群id
channelId int64 多人会议音视频房间id
teamName string 多人会议音视频房间名
id int 类型,2001语音,2002视频, 2100消息2, 2101消息3, 2102消息4, 2103消息5 2104 消息6
members StrArray 成员列表,在邀请时带上已在房间中的成员列表
creatorId string 创建者ID
opt int 操作结果, 1成功 2失败/拒绝 3失败,其他端已进入
video bool 是否打开视频, true打开,false关闭