加入和退出音视频房间

更新时间: 2025/09/04 17:27:25

本文介绍如何通过 NERoom SDK 加入或退出音视频房间、设置画布以及订阅远端视频流。

功能介绍

NERoom SDK 支持通过 joinRtcChannel 加入音视频房间,您可以进行实时音视频通话。

注意事项

  1. 您需要先调用 joinRoom 方法加入 NERoom 的房间。
  2. 加入或退出房间后,房间内其他成员会收到 onMemberJoinRtcChannelonMemberLeaveRtcChannel 回调。

加入音视频房间

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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 ?? "")")
    }
}

设置本端主流画布

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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 ?? "")")
    }
}

设置远端主流画布

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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 ?? "")")
    }
}

设置远端辅流画布

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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 ?? "")")
    }
}

订阅远端视频主流

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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")
}

取消订阅远端视频主流

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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")
}

订阅远端视频辅流

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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")
}

取消订阅远端辅流

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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")
}

退出音视频房间

配置步骤

  1. 调用 getRoomContext 方法获取房间上下文。调用此方法时,您需要将 roomUuid 设置为您所加入房间的 ID。
  2. 调用 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 成员离开音视频房间回调
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 加入音视频房间
  • 配置步骤
  • 示例代码
  • 设置本端主流画布
  • 配置步骤
  • 示例代码
  • 设置远端主流画布
  • 配置步骤
  • 示例代码
  • 设置远端辅流画布
  • 配置步骤
  • 示例代码
  • 订阅远端视频主流
  • 配置步骤
  • 示例代码
  • 取消订阅远端视频主流
  • 配置步骤
  • 示例代码
  • 订阅远端视频辅流
  • 配置步骤
  • 示例代码
  • 取消订阅远端辅流
  • 配置步骤
  • 示例代码
  • 退出音视频房间
  • 配置步骤
  • 示例代码
  • API 参考