加入和退出音视频房间
更新时间: 2025/09/04 17:27:25
本文介绍如何通过 NERoom SDK 加入或退出音视频房间、设置画布以及订阅远端视频流。
功能介绍
NERoom SDK 支持通过 joinRtcChannel
加入音视频房间,您可以进行实时音视频通话。
注意事项
- 您需要先调用
joinRoom
方法加入 NERoom 的房间。 - 加入或退出房间后,房间内其他成员会收到
onMemberJoinRtcChannel
或onMemberLeaveRtcChannel
回调。
加入音视频房间
配置步骤
- 调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。 - 调用
joinRtcChannel
方法加入音视频房间。调用此方法时,房间内其他成员会收到onMembersJoinRtcChannel
回调。
示例代码
swiftlet 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
方法设置本端主流画布。
示例代码
swiftlet 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。 - 调用
setupRemoteVideoSubStreamCanvas
方法设置远端辅流画布。调用此方法时,您需要将userUuid
设置为指定订阅的用户 ID。
示例代码
swift// 设置远端辅流画布 可观看到成员的屏幕共享画面
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let canvas = NERoomVideoView()
canvas.container = UIView(frame: xxx)
roomComtext.rtcController.setupRemoteVideoSubStreamCanvas(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 开启订阅该远端用户的视频大流或者小流。
示例代码
swift// 只有订阅远端视频 才能看到房间成员画面
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。 - 调用
subscribeRemoteVideoSubStream
方法订阅远端视频辅流。调用此方法时,您需要将userUuid
设置为指定订阅的用户 ID。
示例代码
swift// 只有订阅成员的远端辅流,才能通过设置远端辅流画布看到成员的屏幕共享画面
let roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let code = roomComtext.rtcController.subscribeRemoteVideoSubStream(userUuid: "成员ID")
if code == 0 {
print("Success")
}
取消订阅远端辅流
配置步骤
- 调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将roomUuid
设置为您所加入房间的 ID。 - 调用
unsubscribeRemoteVideoSubStream
方法取消订阅远端视频辅流。调用此方法时,您需要将userUuid
设置为指定订阅的用户 ID。
示例代码
swiftlet roomContext = NERoomKit.shared().roomService.getRoomContext(roomUuid: "房间ID")
guard let roomContext = roomContext else {
return
}
let code = roomComtext.rtcController.unsubscribeRemoteVideoSubStream(userUuid: "成员ID")
if code == 0 {
print("Success")
}
退出音视频房间
配置步骤
- 调用
getRoomContext
方法获取房间上下文。调用此方法时,您需要将roomUuid
设置为您所加入房间的 ID。 - 调用
leaveRtcChannel
方法退出音视频房间。调用此方法时,房间内其他成员会收到 ·onMemberLeaveRtcChannel· 回调。
示例代码
swiftlet 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 |
设置远端主流画布 |
setupRemoteVideoSubStreamCanvas |
设置远端辅流画布 |
subscribeRemoteVideo |
订阅远端视频 |
unsubscribeRemoteVideo |
取消订阅远端视频 |
subscribeRemoteVideoSubStream |
订阅远端视频辅流 |
unsubscribeRemoteVideoSubStream |
取消订阅远端视频辅流 |
leaveRtcChannel |
离开音视频房间 |
onMemberJoinRtcChannel |
成员加入音视频房间回调 |
onMemberLeaveRtcChannel |
成员离开音视频房间回调 |
此文档是否对你有帮助?