您可以通过阅读本文,了解互动模式说明。

背景信息

针对部分业务场景中,单一频道存在较多用户人数,但主要时间内只有一名主播推流,少量观众需要与主播连麦互动的情况,RTC SDK加入了新的频道模式(互动模式AliRtcInteractiveLive)。

通讯模式与互动模式

通讯模式与互动模式的不同,主要体现在以下两点:

  • 频道内最大支持人数不同,通信模式目前默认最多是支持50*50(即50个人同时推拉流),互动模式可以支持最多2*4000(即2个人同时推拉流,其余都是只拉流)。
  • 通信模式没有用户角色的区分,互动模式下增加了用户角色的设置功能,每位加入频道的用户都具备用户角色,分别为:
    • 互动角色(AliRtcChannelProfileInteractiveLive):允许推流,适用于频道中的主播与连麦用户。
    • 观看角色(AliRtcClientRolelive):只能订阅拉流观看,不能推流,适用于普通观众用户。
    同时,所有观众角色只能接受到互动角色的加入频道,推流,停止推流,离开频道等状态通知,不会收到其余观众用户的信令消息。
说明

同一个频道里同时只能使用一种频道模式,频道模式由最早加入频道的用户设置,后续加入的用户也需要使用对应的频道模式,否则加入频道失败。例如,最早一个用户使用互动模式进入频道成功后,后续用户如果再使用通信模式加入频道将会失败。当频道内所有用户都离开2分钟后,该频道的频道模式会被重置,将由之后首个加入频道的用户设置的频道模式重新确定。

由于前期SDK版本不支持频道模式设置,默认以通信模式加入频道。为避免出现上述因频道模式不匹配而加入失败问题,建议业务侧升级使用互动模式后,强制升级用户SDK版本,均升级完毕之后再启用,保证同一频道内用户频道模式的统一。

互动模式升级说明

从通信模式升级为互动模式时,推流端和订阅端需要作出以下接入改变:

推流端
  • 主播在加入频道之前,先调用setChannelProfile接口设置频道模式为互动模式。
  • 主播可以在加入频道前调用setClientRole接口,将用户角色设置为互动角色。主播入会之后自动推流,并且可以调整用户角色信息,当主播加入频道成功后保持自动推流。
  • 主播也可以关闭自动推流模式,在加入频道后,切换角色为互动角色。当主播切换成功后会收到onUpdateRoleNotify回调通知,收到回调通知后可以配置需要推流媒体型,调用publish接口开始推流。
说明

如果在加入频道成功前设置用户角色,默认初始角色即为设置角色,不会接收到角色变更回调。加入频道成功后再设置用户角色,设置为不同角色成功时会有回调通知。同时业务侧需要记录一下当前的角色参数值,重复设置当前角色不会收到回调。建议业务侧将角色切换和推拉流的逻辑区分开。

用户必须确保在加入频道成功的前提下,进行切换角色操作和推流动作,否则无法切换和推流成功。

订阅端
  • 用户在加入频道之前,先调用setChannelProfile接口设置频道模式为互动模式。
  • 用户可以在加入频道前调用setClientRole接口,将用户角色设置为观看角色,关闭自动推流,保持自动订阅。
  • 当连麦观众,在加入频道成功后,如果业务场景需要连麦,将设置用户角色为互动角色,设置成功后会收到onUpdateRoleNotify回调通知,收到回调通知后可以配置需要推流媒体型,调用publish接口开始推流。

    当连麦观众下麦时,关闭推流媒体并停止推流,将用户角色设置回观众角色与普通观众一样,保持订阅拉流即可。

  • 对于普通观众,只需保持观看角色,订阅观看推流媒体,无需其他操作。订阅操作可参考官网相关文档说明。