音视频通信 RTC(Real-Time Communication)是阿里云覆盖全球的实时音视频开发平台,依托核心音视频编解码、信道传输、网络调度技术,提供高可用、高品质、超低延时的音视频通信服务,让用户快速搭建多端实时应用,适用于在线教育、视频会议、互动娱乐、音视频社交等场景。
产品链接:https://www.aliyun.com/product/rtc
您可以通过阅读本文,了解互动模式说明。
背景信息
针对部分业务场景中,单一频道存在较多用户人数,但主要时间内只有一名主播推流,少量观众需要与主播连麦互动的情况,RTC SDK 加入了新的频道模式(互动模式 AliRtcInteractiveLive)。
通讯模式与互动模式
通讯模式与互动模式的不同,主要体现在以下两点:
- 频道内最大支持人数不同,通信模式目前默认最多是支持 50*50(即 50 个人同时推拉流),互动模式可以支持最多 2*4000(即 2 个人同时推拉流,其余都是只拉流)。
- 通信模式没有用户角色的区分,互动模式下增加了用户角色的设置功能,每位加入频道的用户都具备用户角色,分别为:
- 互动角色(AliRtcChannelProfileInteractiveLive):允许推流,适用于频道中的主播与连麦用户。
- 观看角色(AliRtcClientRolelive):只能订阅拉流观看,不能推流,适用于普通观众用户。
- 同时,所有观众角色只能接受到互动角色的加入频道,推流,停止推流,离开频道等状态通知,不会收到其余观众用户的信令消息。
说明
同一个频道里同时只能使用一种频道模式,频道模式由最早加入频道的用户设置,后续加入的用户也需要使用对应的频道模式,否则加入频道失败。例如,最早一个用户使用互动模式进入频道成功后,后续用户如果再使用通信模式加入频道将会失败。当频道内所有用户都离开 2 分钟后,该频道的频道模式会被重置,将由之后首个加入频道的用户设置的频道模式重新确定。
由于前期 SDK 版本不支持频道模式设置,默认以通信模式加入频道。为避免出现上述因频道模式不匹配而加入失败问题,建议业务侧升级使用互动模式后,强制升级用户 SDK 版本,均升级完毕之后再启用,保证同一频道内用户频道模式的统一。
互动模式升级说明
从通信模式升级为互动模式时,推流端和订阅端需要作出以下接入改变:
推流端
- 主播在加入频道之前,先调用 setChannelProfile 接口设置频道模式为互动模式。
- 主播可以在加入频道前调用 setClientRole 接口,将用户角色设置为互动角色。主播入会之后自动推流,并且可以调整用户角色信息,当主播加入频道成功后保持自动推流。
- 主播也可以关闭自动推流模式,在加入频道后,切换角色为互动角色。当主播切换成功后会收到 onUpdateRoleNotify 回调通知,收到回调通知后可以配置需要推流媒体型,调用 publish 接口开始推流。
说明
如果在加入频道成功前设置用户角色,默认初始角色即为设置角色,不会接收到角色变更回调。加入频道成功后再设置用户角色,设置为不同角色成功时会有回调通知。同时业务侧需要记录一下当前的角色参数值,重复设置当前角色不会收到回调。建议业务侧将角色切换和推拉流的逻辑区分开。
用户必须确保在加入频道成功的前提下,进行切换角色操作和推流动作,否则无法切换和推流成功。
订阅端
- 用户在加入频道之前,先调用 setChannelProfile 接口设置频道模式为互动模式。
- 用户可以在加入频道前调用 setClientRole 接口,将用户角色设置为观看角色,关闭自动推流,保持自动订阅。
- 当连麦观众,在加入频道成功后,如果业务场景需要连麦,将设置用户角色为互动角色,设置成功后会收到 onUpdateRoleNotify 回调通知,收到回调通知后可以配置需要推流媒体型,调用 publish 接口开始推流。
当连麦观众下麦时,关闭推流媒体并停止推流,将用户角色设置回观众角色与普通观众一样,保持订阅拉流即可。 - 对于普通观众,只需保持观看角色,订阅观看推流媒体,无需其他操作。订阅操作可参考官网相关文档说明。
「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。