多人音视频
流程
- 发起者发起创建多人房间
- 发起者进入房间后邀请成员 发起者(邀请者)向多个被邀请者发送消息1
- 被邀请者同意或拒绝,向邀请者返回消息2。
- 发起者取消呼叫,发送消息6,被邀请者收到消息后做相应的ui操作
- 邀请者收到被邀请者同意的消息后,首先检查本地被邀请者是否已经通过其他端进入音视频房间来决定被邀请者是否可以进入房间,然后检查==当前房间开启视频人数==和==邀请者发出的可开启视频的通知的人数==总数有没超过阈值来决定被邀请者是否可以开启视频,结果通过消息3返回给被邀请者,同时开启45s的定时器,定时器结束前如果邀请者收到了被邀请者进入房间的通知,则取消定时器,否者定时器到期后将被邀请者从==邀请者发出的可开启视频的通知的人数==中删除;被邀请者收到消息后,如果准许进入,被邀请者根据消息3中的video字段判断是否以视频模式进入多人音视频房间。
- 已在房间中的成员收到新成员进入音视频房间的通知后向新成员发送消息5,同步自己的音视频状态
- 成员打开视频前需要检查当前成员中视频个数,如果已经达到限制不允许打开,如果可以打开,则需要发送消息4通知其他成员。关闭视频时也需要通知消息4
特殊情况说明
- 多个人员同时呼叫同一个人员A群视频 A确认接听或取消后,A接听发送消息2,接听的发起者走5,其他发起者显示拒绝接收邀请,A拒绝,所有的发起者都结束对A的邀请状态
- 人员A手机和电脑都登录,视频群聊邀请正在用手机进行视频群聊的人员A时 正在通话的一端收到消息1后,不做操作,另一端的设备显示邀请界面,接听后,正在通话的一端收到系统通知后,则将当前通话结束,另一端正常通话。若拒绝,则对正在通话的A不会造成影响。
- 正在群视频的成员在其他端再次去邀请成员会话会导致当前的音视频会话结束
备注
- 相比原先的步骤,增加了3、5两步,原因是SDK当前不支持同一账号多端同时进入一个房间,增加了5、6两步,原因是PC SDK当前对超过4路的音视频通话支持的不完全,后期会持续优化到9路。
- 由于缺少全局统筹成员,所有成员的视频打开权限是自我判断的,有可能导致在临界值时多人同时操作导致限制失效的问题。暂时不考虑此种情况,在界面交互式为防止异常,提示不要写死限制多少成员数,只需单纯说明视频成员过多。
- 如果需要改成强限制,一种方便的模式是以发起者为管理员,所有成员的视频权限由发起者管理。需要有一个打开视频的请求,在发起者同意后才能打开。弊端:发起者异常时所有成员无法视频操作。
消息通知
所有消息都使用自定义系统通知,参数用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关闭 |
消息1:(Team自定义系统通知)邀请消息 示例:
{"teamId":"t1234", "roomName":"uuid", "teamName":"小李,奥哥", "members":["uid1", "uid2","uid3"], "id":2002, "creatorId":"15583"}
消息2:(Team自定义系统通知)同意/拒绝邀请消息 示例:
{"teamId":"t1234", "roomName":"uuid","opt" : int, "id" : 2100,"pc":true,}
消息3:(P2P自定义系统通知)确认进入
{"teamId":"t1234", "roomName":"uuid","opt" : int, "id" : 2101, "video":true}
消息4:(Team自定义系统通知)本人音视频模式切换通知 示例:
{"teamId":"t1234", "roomName":"uuid","video":true, "id" : 2102}
消息5:(P2P自定义系统通知)单点通知音视频模式切换 示例:
{"teamId":"t1234", "roomName":"uuid","video":true, "id" : 2103}
消息6: (Team自定义系统通知)取消群视频呼叫消息 示例:
{"teamId":"t1234", "roomName":"uuid","video":true, "id" : 2104}
本篇文档内容是否对您有帮助?


此文档对你是否有帮助
×


×