跳到主要内容

同房间连麦

设置角色切换事件回调监听

设置角色切换事件回调

方法

Dart
RCRTCEngine.onLiveRoleSwitched

返回值

参数描述
role切换后的角色
code接口结果码
errMsg失败原因

示例代码

Dart
engine.onLiveRoleSwitched = (RCRTCRole role, int code, String? errMsg) {
if (code == 0) {
// 切换成功
print('角色切换成功: ${role == RCRTCRole.live_broadcaster ? "主播" : "观众"}');
} else {
// 切换失败
print('角色切换失败: $errMsg');
}
};

设置远端用户角色切换事件回调

方法

Dart
RCRTCEngine.onRemoteLiveRoleSwitched

返回值

参数描述
roomId房间 ID
userId远端用户 ID
role切换后的角色

示例代码

Dart
engine.onRemoteLiveRoleSwitched = (String roomId, String userId, RCRTCRole role) {
// roomId 房间 ID
// userId 远端用户 ID
// role 切换后的角色
print('用户 $userId 在房间 $roomId 中切换角色为: ${role == RCRTCRole.live_broadcaster ? "主播" : "观众"}');
};

观众上麦

观众上麦本质上是切换身份变成当前房间的主播,然后以主播身份继续直播相关操作。

切换为主播

当观众需要上麦,跟房间内的其他主播互动时,调用 switchLiveRole 方法,参数传 RCRTCRole.live_broadcaster 切换身份为主播。

方法

Dart
RCRTCEngine.switchLiveRole();

参数说明

参数类型必填说明
roleRCRTCRole切换的目标角色

示例代码

Dart
// 切换角色的回调
engine.onLiveRoleSwitched = (RCRTCRole role, int code, String? errMsg) {
if (code == 0) {
// 切换成功
} else {
// 切换失败
}
};
// 调用切换角色
engine.switchLiveRole(RCRTCRole.live_broadcaster);

观众下麦

主播下麦本质上是切换身份变成当前房间的观众,然后以观众身份继续观看直播等相关操作。

切换为观众

当身份为主播时,调用 switchLiveRole 方法,参数传 RCRTCRole.live_audience 切换身份为观众。

方法

Dart
RCRTCEngine.switchLiveRole();

参数说明

参数类型必填说明
roleRCRTCRole切换的目标角色

示例代码

Dart
// 切换角色的回调
engine.onLiveRoleSwitched = (RCRTCRole role, int code, String? errMsg) {
if (code == 0) {
// 切换成功
} else {
// 切换失败
}
};
// 调用切换角色
engine.switchLiveRole(RCRTCRole.live_audience);
提示

如果当前主播用户已通过跨房间连麦加入了其他房间,仍可成功切换为观众身份。此时 SDK 内部会帮其退出所有副房间,但不会结束本次连麦。如果需要结束连麦,请在切换角色前调用 leaveSubRoom 方法 disband 参数传 true 即可。

订阅资源

直播用户切换身份后,默认会退订所有资源,请按需重新订阅。

  • 观众切换为主播成功后,可以用切换身份之前保存的远端发布资源信息来订阅远端资源。参见主播订阅资源
  • 主播切换为观众成功后,可以在远端发布合流资源的回调中订阅合流,远端主播发布合流资源的回调会在切换成功后被触发。也可以用之前保存的远端发布资源信息订阅远端主播的分流,详见以下文档:

房间内事件

当房间内的用户使用 switchLiveRole 方法上下麦时,同房间内的其他主播可以通过 onRemoteLiveRoleSwitched 方法监听到远端用户切换身份。

如果用户订阅了一个主播的音视频流,当这个主播切为观众身份时,SDK 内部会主动取消订阅不存在的音视频流,您可以在此回调方法中,更新当前页面视图等操作。

方法

Dart
RCRTCEngine.onRemoteLiveRoleSwitched

返回值

参数描述
roomId房间 ID
userId远端用户 ID
role切换后的角色

示例代码

Dart
// 远端用户切换角色的回调
engine.onRemoteLiveRoleSwitched = (String roomId, String userId, RCRTCRole role) {
// roomId 房间 ID
// userId 远端用户 ID
// role 切换后的角色
print('用户 $userId 在房间 $roomId 中切换角色为: ${role == RCRTCRole.live_broadcaster ? "主播" : "观众"}');
};