通过阅读本文,您可以了解到通讯模式和互动模式的区别以及从通讯模式升级到互动模式后,发布端和订阅端的操作说明。

背景信息

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

通讯模式与互动模式的区别

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

  • 频道内最大支持人数不同,通信模式目前默认最多是支持50*50(即50个人同时推拉流)路流,互动模式默认最多支持1万人在线(麦上主播人数不建议超过16人,观众订阅流的总数不建议超过8000路)。
  • 通信模式没有用户角色的区分,互动模式下增加了用户角色的设置功能,每位加入频道的用户都具备用户角色,分别为:
    • 互动角色(AliRtcChannelProfileInteractiveLive):允许推流,适用于频道中的主播与连麦用户。
    • 观看角色(AliRtcClientRolelive):只能订阅拉流观看,不能推流,适用于普通观众用户。
    同时,所有观众角色只能接受到互动角色的加入频道、推流、停止推流、离开频道等状态通知,不会收到其余观众用户的信令消息。
说明
  • 同一个频道里同时只能使用一种频道模式,频道模式由最早加入频道的用户设置,后续加入的用户也需要使用对应的频道模式,否则加入频道失败。例如,最早一个用户使用互动模式进入频道成功后,后续用户如果再使用通信模式加入频道将会失败。当频道内所有用户都离开2分钟后,该频道的频道模式会被重置,将由之后首个加入频道的用户设置的频道模式重新确定。
  • 由于前期SDK版本不支持频道模式设置,默认以通信模式加入频道。为避免出现上述因频道模式不匹配而加入失败,建议业务侧升级使用互动模式后,强制升级用户SDK版本,均升级完毕之后再启用,保证同一频道内用户频道模式统一。

通信模式升级为互动模式

从通信模式升级为互动模式时,发布端和订阅端需要进行以下操作:

发布端
  • 主播在加入频道之前,先调用setChannelProfile接口设置频道模式为互动模式。
  • 主播可以在加入频道前调用setClientRole接口,将用户角色设置为互动角色。主播入会之后自动推流,并且可以调整用户角色信息,当主播加入频道成功后保持自动推流。
  • 主播也可以关闭自动推流模式,在加入频道后,切换角色为互动角色。当主播切换成功后会收到onUpdateRoleNotify回调通知,收到回调通知后可以配置需要推流媒体型,调用publish接口开始推流。
说明
  • 如果在加入频道成功前设置用户角色,默认初始角色即为设置角色,不会接收到角色变更回调。加入频道成功后再设置用户角色,设置为不同角色成功时会有回调通知。同时业务侧需要记录一下当前的角色参数值,重复设置当前角色不会收到回调。建议业务侧将角色切换和推拉流的逻辑区分开。
  • 用户必须确保在加入频道成功的前提下,进行切换角色操作和推流动作,否则无法切换和推流成功。
订阅端
  • 用户在加入频道之前,先调用setChannelProfile接口设置频道模式为互动模式。
  • 用户可以在加入频道前调用setClientRole接口,将用户角色设置为观看角色,关闭自动推流,保持自动订阅。
  • 当连麦观众加入频道成功后,如果业务场景需要连麦,将设置用户角色为互动角色,设置成功后会收到onUpdateRoleNotify回调通知,收到回调通知后可以配置需要推流媒体型,调用publish接口开始推流;当连麦观众下麦时,关闭推流媒体并停止推流,将用户角色设置回观众角色与普通观众一样,保持订阅拉流即可。
  • 对于普通观众,只需保持观看角色,订阅观看推流媒体,无需其他操作。