首页 > 短视频制作技巧 > 云信小课堂 如何管理音视频的通话状态?
2023
01-02

云信小课堂 如何管理音视频的通话状态?

  用户在实际使用云信音视频通线 服务中,常常会遇到弱网,掉线等情况,对于这类情况,云信 SDK 提供了自动重连的相关策略,业务层不需要单独处理重连,只需要监听并做好相应的 UI 逻辑。所以如何感知当前通话状态,做好提示以优化用户体验,并联动管理自身的业务逻辑,如计费等,是业务上必须要考虑的问题。

  当通话过程中遇到弱网抖动等因素,导致掉线或者无法加入房间,业务层需要通过一些提示信息优化用户体验,所以做好状态监听和获取尤其重要。

  以安卓为例,目前云信音视频 2.0 SDK 提供了 5 种通话链接状态,分别为:

  为了帮助大家更好的理解 SDK 内部状态的变化逻辑,本文绘制了一份本地通话状态图可供参考。

  其中,绿色线条是需要业务层手动调用,黑色线条为 SDK 内部处理,业务层不需要额外关注。

  对于音视频通话场景,如果房间内成员遇到弱网抖动等因素,也需要让其他成员感知并做好提示。下图梳理了常规流程和异常流程下的回调逻辑参考。

  绝大部分的音视频通话业务,尤其涉及到计费等相关的,都需要由业务服务器维护当前的通话状态。但是实际业务生产过程中,可能会遇到比较多的用户主动杀进程,或者 APP 崩溃等情况,此时是无法依赖客户端上报来实现状态维护。云信音视频通线 提供了通话状态相关的服务器抄送,可以实现相应的状态管理的补充。

  在云信后台配置准备接收消息抄送的服务器公网地址,用户进出房间的通知会抄送到这台服务器。

  业务服务器通过用户进入房间抄送中携带的 uid、channelName、timestamp 判断用户的身份以及加入的房间和时间,等待双方均已加入房间后,计费开始。

  如果在计费过程中,发现用户余额不足,则可以调用删除房间接口销毁房间,将通话双方踢出房间。

  如果用户余额充足,在通话结束后通过用户离开房间抄送中携带的 uid、channelName、timestamp 判断用户的身份以及加入的房间和时间来结束计费。对于一对一场景来说,只需要有一方成员退出,计费即停止。

  出于逻辑健壮性考虑,客户端可以增加额外的业务心跳逻辑,每隔 1 分钟上报一次,如果扣钱方异常或者离开房间没有上报,就不再扣费。

  为了保障抄送在网络链路异常等情况的稳定性,云信提供了高保障的抄送策略,详情可以咨询商务经理。

  主叫被叫弱网,请求超时。此时 RTC 的超时时间是 40 秒左右,超时时间过后,服务器会抄送对应的离开房间信息,其中包含 reason 为超时离开。


本文》有 0 条评论

留下一个回复