加入和退出音视频房间
更新时间: 2023/10/25 06:21:15
本文介绍如何通过 NERoom SDK 加入或退出音视频房间、设置画布以及订阅远端视频流。
功能介绍
NERoom SDK 支持通过 joinRtcChannel 加入音视频房间,您可以进行实时音视频通话。
注意事项
- 您需要先调用 joinRoom 方法加入 NERoom 的房间。
- 加入或退出房间后,房间内其他成员会收到 onMembersJoinRtcChannel 或 onMembersLeaveRtcChannel 回调。
加入音视频房间
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
- 调用 joinRtcChannel 方法加入音视频房间。调用此方法时,房间内其他成员会收到 onMembersJoinRtcChannel 回调。
示例代码
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
roomContext.rtcController.joinRtcChannel { code, string in
if code == 0 {
print("Successfully join rtc channel.")
} else {
print("Failed to join rtc channel. Reason: \(string ?? "")")
}
}
设置本端主流画布
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 setupLocalVideoCanvas 方法设置本端主流画布。
示例代码
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let canvas = NERoomVideoView()
canvas.container = UIView(frame: xxx)
roomComtext.rtcController.setupLocalVideoCanvas(canvas: canvas) { code, string in
if code == 0 {
print("Successfully set up local video canvas.")
} else {
print("Failed to set up local video canvas. Reason: \(string ?? "")")
}
}
设置远端主流画布
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 setupRemoteVideoCanvas 方法设置远端主流画布。
示例代码
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let canvas = NERoomVideoView()
canvas.container = UIView(frame: xxx)
roomComtext.rtcController.setupRemoteVideoCanvas(canvas: canvas, userUuid: "成员ID") { code, string in
if code == 0 {
print("Successfully set up remote video canvas.")
} else {
print("Failed to set up remote video canvas. Reason: \(string ?? "")")
}
}
设置远端辅流画布
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 setupRemoteSubStreamVideoCanvas 方法设置远端辅流画布。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID。
示例代码
// 设置远端辅流画布 可观看到成员的屏幕共享画面
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let canvas = NERoomVideoView()
canvas.container = UIView(frame: xxx)
roomComtext.rtcController.setupRemoteSubStreamVideoCanvas(canvas: canvas, userUuid: "成员ID") { code, string in
if code == 0 {
print("Successfully set up remote subStream video canvas.")
} else {
print("Failed to set up remote subStream video canvas. Reason: \(string ?? "")")
}
}
订阅远端视频主流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 subscribeRemoteVideo 方法订阅远端视频主流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID,并将NERoomRemoteVideoStreamType
参数设置为 high 或者 low 开启订阅该远端用户的视频大流或者小流。
示例代码
// 只有订阅远端视频 才能看到房间成员画面
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let code = roomComtext.rtcController.subscribeRemoteVideo(userUuid: "成员ID", streamType: .high)
if code == 0 {
print("Success")
}
取消订阅远端视频主流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 unsubscribeRemoteVideo 方法取消订阅远端视频主流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID。
示例代码
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let code = roomComtext.rtcController.unsubscribeRemoteVideo(userUuid: "成员ID")
if code == 0 {
print("Success")
}
订阅远端视频辅流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 subscribeRemoteSubStreamVideo 方法订阅远端视频辅流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID。
示例代码
// 只有订阅成员的远端辅流,才能通过设置远端辅流画布看到成员的屏幕共享画面
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let code = roomComtext.rtcController.subscribeRemoteSubStreamVideo(userUuid: "成员ID")
if code == 0 {
print("Success")
}
取消订阅远端辅流
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 unsubscribeRemoteSubStreamVideo 方法取消订阅远端视频辅流。调用此方法时,您需要将
userUuid
设置为指定订阅的用户 ID。
示例代码
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let code = roomComtext.rtcController.unsubscribeRemoteSubStreamVideo(userUuid: "成员ID")
if code == 0 {
print("Success")
}
退出音视频房间
配置步骤
- 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将
roomUuid
设置为您所加入房间的 ID。 - 调用 leaveRtcChannel 方法退出音视频房间。调用此方法时,房间内其他成员会收到 onMembersLeaveRtcChannel 回调。
示例代码
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
roomContext.rtcController.leaveRtcChannel { code, string in
if code == 0 {
print("Successfully leave rtc channel.")
} else {
print("Failed to leave rtc channel. Reason: \(string ?? "")")
}
}
API 参考
方法 | 功能描述 |
---|---|
joinRoom | 加入 NERoom 的房间。 |
getRoomContext | 获取房间上下文。 |
joinRtcChannel | 加入音视频房间。 |
setupLocalVideoCanvas | 设置本地画布。 |
setupRemoteVideoCanvas | 设置远端主流画布。 |
setupRemoteSubStreamVideoCanvas | 设置远端辅流画布。 |
subscribeRemoteVideo | 订阅远端视频。 |
unsubscribeRemoteVideo | 取消订阅远端视频。 |
subscribeRemoteSubStreamVideo | 订阅远端视频辅流。 |
unsubscribeRemoteSubStreamVideo | 取消订阅远端视频辅流。 |
leaveRtcChannel | 离开音视频房间。 |
onMembersJoinRtcChannel | 成员加入音视频房间回调。 |
onMembersLeaveRtcChannel | 成员离开音视频房间回调。 |
此文档是否对你有帮助?