ByteRTCRoom class
- Inheritance
-
- Object
- NativeClass
- ByteRTCRoom
Constructors
-
ByteRTCRoom([NativeClassOptions? options])
-
Methods
-
destroy()
→ FutureOr<void>
-
@detail api
@author shenpengliang
@brief 退出并销毁调用 createRTCRoom:{@link #ByteRTCEngine#createRTCRoom} 所创建的房间实例。
override
-
getCallId()
→ FutureOr<NSString>
-
@detail api
@valid since 3.60.
@brief 获取通话 ID。
该方法需要在加入房间后调用。当创建一个房间开启音视频通话后,系统会为该房间生成一个对应的通话 ID,标识此房间的通话。
@return 通话 ID。
-
getRangeAudio()
→ FutureOr<ByteRTCRangeAudio>
-
@detail api
@author luomingkang
@brief 获取范围语音接口实例。
@return 方法调用结果:
- ByteRTCRangeAudio:成功,返回一个 ByteRTCRangeAudio{@link #ByteRTCRangeAudio} 实例。
- NULL:失败,当前 SDK 不支持范围语音功能。
@note 首次调用该方法须在创建房间后、加入房间前。范围语音相关 API 和调用时序详见范围语音。
-
getRoomId()
→ FutureOr<NSString>
-
@valid since 3.53
@detail api
@author gechangwu
@brief 获取房间 ID。
@return 房间 ID。
-
getSpatialAudio()
→ FutureOr<ByteRTCSpatialAudio>
-
@detail api
@author wangjunzheng
@brief 获取空间音频接口实例。
@return 方法调用结果:
- ByteRTCSpatialAudio:成功,返回一个 ByteRTCSpatialAudio{@link #ByteRTCSpatialAudio} 实例。
- NULL:失败,当前 SDK 不支持空间音频功能。
@note
- 首次调用该方法须在创建房间后、加入房间前。 空间音频相关 API 和调用时序详见空间音频。
- 只有在使用支持真双声道播放的设备时,才能开启空间音频效果;
- 机型性能不足可能会导致音频卡顿,使用低端机时,不建议开启空间音频效果;
- SDK 最多支持 30 个用户同时开启空间音频功能。
-
joinRoom(NSString token, ByteRTCUserInfo userInfo, BOOL userVisibility, ByteRTCRoomConfig roomConfig)
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 加入 RTC 房间。
调用 createRTCRoom:{@link #ByteRTCEngine#createRTCRoom} 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
@param token 动态密钥,用于对进房用户进行鉴权验证。
进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token。Token 有效期及生成方式参看使用 Token 完成鉴权。
使用不同 AppID 的 App 是不能互通的。
请务必保证生成 Token 使用的 AppID 和创建引擎时使用的 AppID 相同,否则会导致加入房间失败。
@param userInfo 用户信息。参看 ByteRTCUserInfo{@link #ByteRTCUserInfo}。
@param userVisibility 用户可见性。建议在进房时将用户可见性都设置为 false,并在用户需要发送音视频流时再通过 setUserVisibility:{@link #ByteRTCRoom#setUserVisibility} 设置为 true。从而避免因房间内用户达到数量上限所导致的进房失败。默认情况下,一个 RTC 房间最多同时容纳 50 名可见用户,其中最多 30 人可同时上麦,更多信息参看用户和媒体流上限。
@param roomConfig 房间参数配置,设置房间模式以及是否自动发布或订阅流。具体配置模式参看 ByteRTCRoomConfig{@link #ByteRTCRoomConfig}。
@return 方法调用结果。
- 0: 成功。触发以下回调:
- 本端收到房间状态通知 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调。
- 本端收到本地流发布状态通知 rtcRoom:onVideoPublishStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onVideoPublishStateChanged:info:state:reason}、rtcRoom:onAudioPublishStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onAudioPublishStateChanged:info:state:reason}。
- 本端收到流订阅状态通知 rtcRoom:onVideoSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onVideoSubscribeStateChanged:info:state:reason}、rtcRoom:onAudioSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onAudioSubscribeStateChanged:info:state:reason}。
- 本端收到房间内已发布流的通知 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish}、rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish}。
- 如果本端用户为可见用户,房间内其他用户收到 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined} 回调通知。
- -1: 参数无效
- -2: 已经在房间内。接口调用成功后,只要收到返回值为 0 ,且未调用 leaveRoom{@link #ByteRTCRoom#leaveRoom} 成功,则再次调用进房接口时,无论填写的房间 ID 和用户 ID 是否重复,均触发此返回值。
调用失败时,具体失败原因会通过 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调告知。
@note
- 同一个 AppID 的同一个房间内,每个用户的用户 ID 必须是唯一的。如果两个用户的用户 ID 相同,则后加入房间的用户会将先加入房间的用户踢出房间,并且先加入房间的用户会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知,错误类型为重复登录 ByteRTCErrorCodeDuplicateLogin。
- 本地用户调用此方法加入房间成功后,会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知。若本地用户同时为可见用户,加入房间时远端用户会收到 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined} 回调通知。
- 房间内不可见用户的容量远远大于可见用户,而且用户默认可见,因此对于不参与互动的用户,你需要调用 setUserVisibility:{@link #ByteRTCRoom#setUserVisibility} 更改为不可见用户。从而避免因房间内用户达到数量上限所导致的进房失败。默认情况下,一个 RTC 房间最多同时容纳 50 名可见用户,其中最多 30 人可同时上麦,更多信息参看用户和媒体流上限。
- 用户加入房间成功后,在本地网络状况不佳的情况下,SDK 可能会与服务器失去连接,并触发 rtcEngine:onConnectionStateChanged:{@link #ByteRTCEngineDelegate#rtcEngine:onConnectionStateChanged} 回调。此时 SDK 会自动重试,直到成功重连。重连成功后,本地会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo}。
-
joinRTSRoom(NSString token, ByteRTCUserInfo userInfo)
→ FutureOr<int>
-
@detail api
@brief 加入 RTS 房间。
调用 createRTSRoom:{@link #ByteRTCEngine#createRTSRoom} 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
@param token 动态密钥,用于对进房用户进行鉴权验证。
进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token。Token 有效期及生成方式参看使用 Token 完成鉴权。
使用不同 AppID 的 App 是不能互通的。
请务必保证生成 Token 使用的 AppID 和创建引擎时使用的 AppID 相同,否则会导致加入房间失败。
@param userInfo 用户信息。参看 ByteRTCUserInfo{@link #ByteRTCUserInfo}。
@return 方法调用结果。
- 0: 成功。触发以下回调:
- 本端收到房间状态通知 rtsRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onRoomStateChanged:withUid:state:extraInfo} 回调。
- -1: 参数无效
- -2: 已经在房间内。接口调用成功后,只要收到返回值为 0 ,且未调用 leaveRoom{@link #ByteRTCRoom#leaveRoom} 成功,则再次调用进房接口时,无论填写的房间 ID 和用户 ID 是否重复,均触发此返回值。
调用失败时,具体失败原因会通过 rtsRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onRoomStateChanged:withUid:state:extraInfo} 回调告知。
@note
- 同一个 AppID 的同一个房间内,每个用户的用户 ID 必须是唯一的。如果两个用户的用户 ID 相同,则后加入房间的用户会将先加入房间的用户踢出房间,并且先加入房间的用户会收到 rtsRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知,错误类型为重复登录 ByteRTCErrorCodeDuplicateLogin。
- 本地用户调用此方法加入房间成功后,会收到 rtsRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知。若本地用户同时为可见用户,加入房间时远端用户会收到 rtsRoom:onUserJoined:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onUserJoined} 回调通知。
- 用户加入房间成功后,在本地网络状况不佳的情况下,SDK 可能会与服务器失去连接,并触发 rtcEngine:onConnectionStateChanged:{@link #ByteRTCEngineDelegate#rtcEngine:onConnectionStateChanged} 回调。此时 SDK 会自动重试,直到成功重连。重连成功后,本地会收到 rtsRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onRoomStateChanged:withUid:state:extraInfo}。
-
leaveRoom()
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 离开 RTC 房间。
调用此方法结束通话过程,并释放所有通话相关的资源。
@return
- 0: 调用成功。如果用户是房间内可见用户,触发以下回调:
- 远端用户收到 rtcRoom:onUserLeave:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onUserLeave:reason} 回调通知。
- 正在发布的流会被取消发布。远端用户收到 rtcRoom:onVideoPublishStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onVideoPublishStateChanged:info:state:reason}、rtcRoom:onAudioPublishStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onAudioPublishStateChanged:info:state:reason} 回调通知。
- < 0: 调用失败,参看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 加入房间后,必须调用此方法结束通话,否则无法开始下一次通话。
- 此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,本地会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知。你必须在收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调后,再销毁房间或引擎,或调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 再次加入房间。
- 调用 setUserVisibility:{@link #ByteRTCRoom#setUserVisibility} 将自身设为可见的用户离开房间后,房间内其他用户会收到 rtcRoom:onUserLeave:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onUserLeave:reason} 回调通知。
-
nativeCall<T>(String method, [List? args, NativeMethodMeta? meta])
→ Future<T>
-
Call instance method
inherited
-
noSuchMethod(Invocation invocation)
→ dynamic
-
Invoked when a nonexistent method or property is accessed.
inherited
-
pauseAllSubscribedStreamAudio()
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
pauseAllSubscribedStream 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用该方法,请迁移至该接口。
@author shenpengliang
@brief 暂停接收所有远端音频流。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
@note
- 该方法仅暂停远端流的接收,并不影响远端流的采集和发送;
- 该方法不改变用户的订阅状态以及订阅流的属性。
- 若想恢复接收远端流,需调用 resumeAllSubscribedStreamVideo{@link #ByteRTCRoom#resumeAllSubscribedStreamVideo}。
- 多房间场景下,仅暂停接收发布在当前所在房间的流。
-
pauseAllSubscribedStreamVideo()
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
resumeAllSubscribedStream 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用该方法,请迁移至该接口。
@brief 暂停接收所有远端视频流。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 该方法仅暂停远端流的接收,并不影响远端流的采集和发送;
- 该方法不改变用户的订阅状态以及订阅流的属性。
- 若想恢复接收远端流,需调用 resumeAllSubscribedStreamVideo{@link #ByteRTCRoom#resumeAllSubscribedStreamVideo}。
- 多房间场景下,仅暂停接收发布在当前所在房间的流。
-
pauseForwardStreamToAllRooms()
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 暂停跨房间媒体流转发。
通过 startForwardStreamToRooms:{@link #ByteRTCRoom#startForwardStreamToRooms} 发起媒体流转发后,可调用本方法暂停向所有目标房间转发媒体流。
调用本方法暂停向所有目标房间转发后,你可以随时调用 resumeForwardStreamToAllRooms{@link #ByteRTCRoom#resumeForwardStreamToAllRooms} 快速恢复转发。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note 调用本方法后,目标房间中的用户将接收到本地用户停止发布 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish}、rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish} 回调和退房 rtcRoom:onUserLeave:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onUserLeave:reason} 的回调。
@order 13
-
publishStreamAudio(BOOL publish)
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
publishStream 和 unpublishStream 方法来实现下述功能。如果你如果你已升级至 3.60 及以上版本,并且仍在使用这两个方法,请迁移到此接口。
@author xuyiling.x10
@brief 发布/取消发布本地麦克风采集的音频流。
@param publish 指定是否发布音频流。
- true: 发布。
- false: 取消发布。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
@note
- 如果你已经在用户进房时通过调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 成功选择了自动发布,则无需再调用本接口。
- 调用 setUserVisibility:{@link #ByteRTCRoom#setUserVisibility} 方法将自身设置为不可见后无法调用该方法,需将自身切换至可见后方可调用该方法发布音频流。
- 如果你需要发布摄像头采集到的视频流,调用 publishStreamVideo:{@link #ByteRTCRoom#publishStreamVideo}。
- 如果你需要向多个房间发布流,调用 startForwardStreamToRooms:{@link #ByteRTCRoom#startForwardStreamToRooms}。
- 调用此方法后,房间中的所有远端用户会收到 rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish} 回调通知,其中成功收到了音频流的远端用户会收到 rtcEngine:onFirstRemoteAudioFrame:info:{@link #ByteRTCEngineDelegate#rtcEngine:onFirstRemoteAudioFrame:info} 回调。
@order 0
-
publishStreamVideo(BOOL publish)
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
publishStream 和 unpublishStream 方法来实现下述功能。如果你如果你已升级至 3.60 及以上版本,并且仍在使用这两个方法,请迁移到此接口。
@author xuyiling.x10
@brief 手动发布/取消发布本地摄像头采集的视频流。
@param publish 指定是否发布本地摄像头采集的视频流。
- true: 发布。
- false: 取消发布。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
@note
- 如果你已经在用户进房时通过调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 成功选择了自动发布,则无需再调用本接口。
- 调用 setUserVisibility:{@link #ByteRTCRoom#setUserVisibility} 方法将自身设置为不可见后无法调用该方法,需将自身切换至可见后方可调用该方法发布摄像头视频流。
- 如果你需要发布麦克风采集到的音频流,调用 publishStreamAudio:{@link #ByteRTCRoom#publishStreamAudio}。
- 如果你需要向多个房间发布流,调用 startForwardStreamToRooms:{@link #ByteRTCRoom#startForwardStreamToRooms}。
- 调用此方法后,房间中的所有远端用户会收到 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish} 回调通知,订阅了视频流的远端用户会收到 rtcEngine:onFirstRemoteVideoFrameDecoded:info:withFrameInfo:{@link #ByteRTCEngineDelegate#rtcEngine:onFirstRemoteVideoFrameDecoded:info:withFrameInfo} 回调。
-
resumeAllSubscribedStreamAudio()
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
resumeAllSubscribedStream 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用该方法,请迁移至该接口。
@author shenpengliang
@brief 恢复接收所有远端音频流。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
@note
- 该方法仅恢复远端流的接收,并不影响远端流的采集和发送;
- 该方法不改变用户的订阅状态以及订阅流的属性。
-
resumeAllSubscribedStreamVideo()
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
resumeAllSubscribedStream 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用该方法,请迁移至该接口。
@author shenpengliang
@brief 恢复接收所有远端音频流。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 该方法仅恢复远端流的接收,并不影响远端流的采集和发送;
- 该方法不改变用户的订阅状态以及订阅流的属性。
-
resumeForwardStreamToAllRooms()
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 恢复跨房间媒体流转发。
调用 pauseForwardStreamToAllRooms{@link #ByteRTCRoom#pauseForwardStreamToAllRooms} 暂停转发之后,调用本方法恢复向所有目标房间转发媒体流。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
目标房间中的用户将接收到本地用户进房 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined} 和发布 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined} 的回调。
-
sendInstanceGet<T>(String property)
→ Future<T>
-
Get instance property
inherited
-
sendInstancePropertiesGet(dynamic nativeClass)
→ Future<Map<String, dynamic>>
-
Get instance properties
inherited
-
sendInstanceSet(String property, dynamic value)
→ Future<void>
-
Set instance property
inherited
-
sendRoomBinaryMessage(NSData message)
→ FutureOr<NSInteger>
-
@detail api
@author hanchenchen.c
@brief 给房间内的所有其他用户群发二进制消息。
@param message
用户发送的二进制广播消息
消息不超过 64KB。
@return 这次发送消息的编号,从 1 开始递增。
@note
- 在房间内广播二进制消息前,必须先调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 加入房间。
- 调用该函数后会收到一次 rtcRoom:onRoomMessageSendResult:error:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomMessageSendResult:error} 回调,通知消息发送方发送成功或失败;
- 若二进制消息发送成功,则房间内所有用户会收到 rtcRoom:onRoomBinaryMessageReceived:message:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomBinaryMessageReceived:message} 回调。
-
sendRoomMessage(NSString message)
→ FutureOr<NSInteger>
-
@detail api
@brief 给房间内的所有其他用户群发文本消息。
@param message
发送的文本消息内容。
消息不超过 64 KB。
@return 这次发送消息的编号,从 1 开始递增。
@note
- 在发送房间内文本消息前,必须先调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 加入房间。
- 调用该函数后会收到一次 rtcRoom:onRoomMessageSendResult:error:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomMessageSendResult:error} 回调,通知消息发送方发送成功或失败;
- 若文本消息发送成功,则房间内所有远端用户会收到 rtcRoom:onRoomMessageReceived:message:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomMessageReceived:message} 回调。
-
sendUserBinaryMessage(NSString uid, NSData message, ByteRTCMessageConfig config)
→ FutureOr<int64_t>
-
@detail api
@brief 给房间内指定的用户发送点对点二进制消息(P2P)。
@param uid
消息接收用户的 ID
@param message
发送的二进制消息内容
消息不超过 64KB。
@param config
消息发送的可靠/有序类型,参看 ByteRTCMessageConfig{@link #ByteRTCMessageConfig}。
@return 这次发送消息的编号,从 1 开始递增。
@note
- 在发送房间内二进制消息前,必须先调用 joinRTSRoom:userInfo:{@link #ByteRTCRTSRoom#joinRTSRoom:userInfo} 加入房间。
- 调用该函数后会收到一次 rtsRoom:onUserMessageSendResult:error:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onUserMessageSendResult:error} 回调,通知消息发送方发送成功或失败;
- 若二进制消息发送成功,则 uid 所指定的用户会收到 rtsRoom:onUserBinaryMessageReceived:message:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onUserBinaryMessageReceived:message} 回调。
-
sendUserMessage(NSString userId, NSString message, ByteRTCMessageConfig config)
→ FutureOr<int64_t>
-
@detail api
@brief 给房间内指定的用户发送点对点文本消息(P2P)。
@param userId
消息接收用户的 ID
@param message
发送的文本消息内容。
消息不超过 64 KB。
@param config
消息发送的可靠/有序类型,参看 ByteRTCMessageConfig{@link #ByteRTCMessageConfig}
@return 这次发送消息的编号,从 1 开始递增。
@note
- 在发送房间内文本消息前,必须先调用 joinRTSRoom:userInfo:{@link #ByteRTCRTSRoom#joinRTSRoom:userInfo} 加入房间。
- 调用该函数后会收到一次 rtsRoom:onUserMessageSendResult:error:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onUserMessageSendResult:error} 回调,通知消息发送方发送成功或失败。
- 若文本消息发送成功,则 uid 所指定的用户会收到 rtsRoom:onUserMessageReceived:message:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onUserMessageReceived:message} 回调。
-
setAudioSelectionConfig(ByteRTCAudioSelectionPriority audioSelectionPriority)
→ FutureOr<int>
-
@valid since 3.52.
@detail api
@author yejing.luna
@brief 设置本端发布流在音频选路中的优先级。
@param audioSelectionPriority 本端发布流在音频选路中的优先级,默认正常参与音频选路。参见 ByteRTCAudioSelectionPriority{@link #ByteRTCAudioSelectionPriority}。
@note
在控制台上为本 appId 开启音频选路后,调用本接口才会生效。进房前后调用均可生效。更多信息参见音频选路。
如果本端用户同时加入不同房间,使用本接口进行的设置相互独立。
-
setMultiDeviceAVSync(NSString audioUserId)
→ FutureOr<int>
-
@detail api
@author wangzhanqiang
@brief 设置发流端音画同步。
当同一用户同时使用两个通话设备分别采集发送音频和视频时,有可能会因两个设备所处的网络环境不一致而导致发布的流不同步,此时你可以在视频发送端调用该接口,SDK 会根据音频流的时间戳自动校准视频流,以保证接收端听到音频和看到视频在时间上的同步性。
@param audioUserId 音频发送端的用户 ID,将该参数设为空则可解除当前音视频的同步关系。
@return
- 0: 调用成功。调用该接口后音画同步状态发生改变时,你会收到 rtcRoom:onAVSyncStateChange:{@link #ByteRTCRoomDelegate#rtcRoom:onAVSyncStateChange} 回调。
- < 0 : 调用失败。监听 rtcRoom:onAVSyncEvent:userId:eventCode:{@link #ByteRTCRoomDelegate#rtcRoom:onAVSyncEvent:userId:eventCode} 获取错误详情。同一 RTC 房间内允许存在多个音视频同步关系,但需注意单个音频源不支持与多个视频源同时同步。
@note
- 该方法在进房前后均可调用。
- 进行音画同步的音频发布用户 ID 和视频发布用户 ID 须在同一个 RTC 房间内。
- 如需更换同步音频源,再次调用该接口传入新的 audioUserId 即可;如需更换同步视频源,需先解除当前的同步关系,后在新视频源端开启同步。
-
setRemoteRoomAudioPlaybackVolume(NSInteger volume)
→ FutureOr<int>
-
@detail api
@author zhangcaining
@brief 调节某个房间内所有远端用户的音频播放音量。
@param volume 音频播放音量值和原始音量的比值,范围是
0, 400,单位为 %,自带溢出保护。为保证更好的通话质量,建议将 volume 值设为 0,100。
- 0: 静音
- 100: 原始音量,默认值
- 400: 最大可为原始音量的 4 倍(自带溢出保护)
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
@note 假设某远端用户 A 始终在被调节的目标用户范围内,
- 该方法与 setRemoteAudioPlaybackVolume:volume:{@link #ByteRTCEngine#setRemoteAudioPlaybackVolume:volume} 互斥,最新调用的任一方法设置的音量将覆盖此前已设置的音量,效果不叠加;
- 当该方法与 setPlaybackVolume:{@link #ByteRTCEngine#setPlaybackVolume} 方法共同使用时,本地收听用户 A 的音量将为两次设置的音量效果的叠加。
-
setRemoteSimulcastStreamType(NSString streamId, ByteRTCVideoSimulcastStreamType streamType)
→ FutureOr<int>
-
@detail api
@valid since 3.60.
@author zhoubohui
@brief 设置期望订阅的远端视频流类型。
@param streamId 目标要订阅的远端视频流 ID。
@param streamType 远端视频流类型,参看 ByteRTCVideoSimulcastStreamType{@link #ByteRTCVideoSimulcastStreamType}。
@return 方法调用结果:
- 0:成功;
- <0:失败。
@note
- 该方法仅在发布端调用 setVideoEncoderConfig:withParameters:{@link #ByteRTCEngine#setVideoEncoderConfig:withParameters} 开启了发送多路视频流的情况下生效。
- 若发布端开启了推送多路流功能,但订阅端不对流参数进行设置,则默认接受发送端设置的分辨率最大的一路视频流。该方法可在进房后调用。
@order 1
-
setRemoteVideoConfig(NSString streamId, ByteRTCRemoteVideoConfig remoteVideoConfig)
→ FutureOr<int>
-
@detail api
@brief 设置期望订阅的远端视频流的参数。
@param streamId 期望配置订阅参数的远端视频流 ID。
@param remoteVideoConfig 期望配置的远端视频流参数,参看 ByteRTCRemoteVideoConfig{@link #ByteRTCRemoteVideoConfig}。
@return 方法调用结果:
+ 0:成功。
+ !0:失败。
@note
+ 若使用 342 及以前版本的 SDK,调用该方法前请联系技术支持人员开启按需订阅功能。
+ 该方法仅在发布端调用 setLocalSimulcastMode:{@link #ByteRTCEngine#setLocalSimulcastMode} 开启了发送多路视频流的情况下生效,此时订阅端将收到来自发布端与期望设置的参数最相近的一路流;否则订阅端只会收到一路参数为分辨率 640px × 360px、帧率 15fps 的视频流。
+ 若发布端开启了推送多路流功能,但订阅端不对流参数进行设置,则默认接受发送端设置的分辨率最大的一路视频流。
+ 该方法需在进房后调用。
+ SDK 会根据发布端和所有订阅端的设置灵活调整视频流的参数,具体调整策略详见推送多路流文档。
-
@valid since 3.52.
@detail api
@author lichangfeng.rtc
@brief 设置/更新房间附加信息,可用于标识房间状态或属性,或灵活实现各种业务逻辑。
@param key 房间附加信息键值,长度小于 10 字节。
同一房间内最多可存在 5 个 key,超出则会从第一个 key 起进行替换。
@param value 房间附加信息内容,长度小于 128 字节。
@return
- 0: 方法调用成功,返回本次调用的任务编号;
- <0: 方法调用失败,具体原因详见 ByteRTCSetRoomExtraInfoResult{@link #ByteRTCSetRoomExtraInfoResult}。
@note
- 在设置房间附加信息前,必须先调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 加入房间。
- 调用该方法后,会收到一次 rtcRoom:onSetRoomExtraInfoResult:result:{@link #ByteRTCRoomDelegate#rtcRoom:onSetRoomExtraInfoResult:result} 回调,提示设置结果。
- 调用该方法成功设置附加信息后,同一房间内的其他用户会收到关于该信息的回调 rtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomExtraInfoUpdate:value:lastUpdateUserId:lastUpdateTimeMs}。
- 新进房的用户会收到进房前房间内已有的全部附加信息通知。
-
setRTCRoomDelegate(id<ByteRTCRoomDelegate> roomDelegate)
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 通过设置 ByteRTCRoom{@link #ByteRTCRoom} 对象的事件句柄,监听此对象对应的回调事件。
@param roomDelegate 参见 ByteRTCRoomDelegate{@link #ByteRTCRoomDelegate}。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
-
setRTCRoomDelegateRts(id<ByteRTCRTSRoomDelegate> roomDelegate)
→ FutureOr<int>
-
@detail api
@brief 通过设置 ByteRTCRTSRoomDelegate{@link #ByteRTCRTSRoomDelegate}代理,可以监听此
ByteRTCRTSRoom 对象对应的回调事件。
@param roomDelegate 参见 ByteRTCRTSRoomDelegate{@link #ByteRTCRTSRoomDelegate}。
@return
+ 0: 调用成功。
+ < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明
-
@detail api
@region 流管理
@brief 设置当前推流的流附加信息。
@param extra_info 流附加信息。长度不超过1024的字符串。
@return 方法调用结果:
+ 0:成功;
+ !0:失败。
@note
+ 可通过此函数设置当前推流的流附加信息。流附加信息是流 ID 的附加信息标识,不同于流 ID 在推流过程中不可修改,流附加信息可以在对应流 ID 的推流中途修改。开发者可根据流附加信息来实现流 ID 相关的可变内容的同步。
+ 该方法在进房前后均可调用
+ 相同房间内的其他用户会通过 onRoomStreamExtraInfoUpdate 回调函数获得通知。
-
setUserVisibility(BOOL enable)
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 设置用户可见性。未调用该接口前,本地用户默认对他人可见。
默认情况下,一个 RTC 房间最多同时容纳 50 名可见用户,最多 30 人可同时上麦。更多信息参看用户和媒体流上限。
@param enable 设置用户是否对房间内其他用户可见:
- YES: 可见,用户可以在房间内发布音视频流,房间中的其他用户将收到用户的行为通知,例如进房、开启视频采集和退房。
- NO: 不可见,用户不可以在房间内发布音视频流,房间中的其他用户不会收到用户的行为通知,例如进房、开启视频采集和退房。
@return
- 0: 调用成功。
- < 0: 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
设置用户可见性,会收到设置成功/失败回调 rtcRoom:onUserVisibilityChanged:errorCode:{@link #ByteRTCRoomDelegate#rtcRoom:onUserVisibilityChanged:errorCode}。(v3.54 新增)
- 在加入房间前设置用户可见性,若设置的可见性与默认值不同,将在加入房间时触发本回调。
- 在加入房间后设置用户可见性,若可见性前后不同,会触发本回调。
- 在断网重连后,若可见性发生改变,会触发本回调。
@note
- 在加入房间前后,用户均可调用此方法设置用户可见性。
- 在房间内,调用此方法成功切换用户可见性后,房间内其他用户会收到相应的回调。
• 从可见换至不可见时,房间内其他用户会收到 rtcRoom:onUserLeave:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onUserLeave:reason}。
• 从不可见切换至可见时,房间内其他用户会收到 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined}。
• 若调用该方法将可见性设为 false,此时尝试发布流会收到 ByteRTCWarningCodeSubscribeStreamForbiden 警告。
-
startForwardStreamToRooms(NSArray<ByteRTCForwardStreamConfiguration> configurations)
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 开始跨房间转发媒体流。
在调用 joinRoom:userInfo:userVisibility:roomConfig:{@link #ByteRTCRoom#joinRoom:userInfo:userVisibility:roomConfig} 后调用本接口,实现向多个房间转发媒体流,适用于跨房间连麦等场景。
@param configurations 跨房间媒体流转发指定房间的信息。参看 ByteRTCForwardStreamConfiguration{@link #ByteRTCForwardStreamConfiguration}。
@return
- 0: 成功。
- < 0: 失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 调用本方法后,将在本端触发 rtcRoom:onForwardStreamStateChanged:{@link #ByteRTCRoomDelegate#rtcRoom:onForwardStreamStateChanged} 回调。
- 调用本方法后,你可以通过监听 rtcRoom:onForwardStreamEvent:{@link #ByteRTCRoomDelegate#rtcRoom:onForwardStreamEvent} 回调来获取各个目标房间在转发媒体流过程中的相关事件。
- 开始转发后,目标房间中的用户将接收到本地用户进房 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined} 和发流 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish}、rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish} 回调。
- 调用本方法后,可以调用 updateForwardStreamToRooms:{@link #ByteRTCRoom#updateForwardStreamToRooms} 更新目标房间信息,例如,增加或减少目标房间等。
- 调用本方法后,可以调用 stopForwardStreamToRooms{@link #ByteRTCRoom#stopForwardStreamToRooms} 停止向所有房间转发媒体流。
- 调用本方法后,可以调用 pauseForwardStreamToAllRooms{@link #ByteRTCRoom#pauseForwardStreamToAllRooms} 暂停向所有房间转发媒体流。
-
startSubtitle(ByteRTCSubtitleConfig subtitleConfig)
→ FutureOr<int>
-
@valid since 3.52
@detail api
@author qiaoxingwang
@brief 识别或翻译房间内所有用户的语音,形成字幕。
调用该方法时,可以在 ByteRTCSubtitleMode{@link #ByteRTCSubtitleMode} 中选择语音识别或翻译模式。如果选择识别模式,语音识别文本会通过 rtcRoom:onSubtitleMessageReceived:{@link #ByteRTCRoomDelegate#rtcRoom:onSubtitleMessageReceived} 事件回调给你;
如果选择翻译模式,你会同时收到两个 rtcRoom:onSubtitleMessageReceived:{@link #ByteRTCRoomDelegate#rtcRoom:onSubtitleMessageReceived} 回调,分别包含字幕原文及字幕译文。
调用该方法后,用户会收到 rtcRoom:onSubtitleStateChanged:errorCode:errorMessage:{@link #ByteRTCRoomDelegate#rtcRoom:onSubtitleStateChanged:errorCode:errorMessage} 回调,通知字幕是否开启。
@param subtitleConfig 字幕配置信息。参看 ByteRTCSubtitleConfig{@link #ByteRTCSubtitleConfig}。
@return
- 0: 成功。
- < 0: 失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 使用字幕功能前,你需要在 RTC 控制台 开启实时字幕功能。
- 如果你需要使用流式语音识别模式,你应在 语音技术控制台 创建流式语音识别应用。创建时,服务类型应选择 流式语音识别,而非 音视频字幕生成。创建后,在 RTC 控制台 上启动流式语音识别,并填写创建语音技术应用时获取的相关信息,包括:APP ID,Access Token,和 Cluster ID。
- 如果你需要使用实时语音翻译模式,你应开通机器翻译服务,参考 开通服务。完成开通后,在 RTC 控制台 上启用实时语音翻译模式。
* + 此方法需要在进房后调用。
- 如需指定源语言,你需要在调用 joinRoom 接口进房时,通过 extraInfo 参数传入格式为"语种英文名": "语种代号" JSON 字符串,例如设置源语言为英文时,传入 "source_language": "en"。如未指定源语言,SDK 会将系统语种设定为源语言。如果你的系统语种不是中文、英文和日文,此时 SDK 会自动将中文设为源语言。
- 识别模式下,你可以传入 RTC 控制台上预设或自定义的语种英文名和语种代号。识别模式下支持的语言参看识别模式语种支持。
- 翻译模式下,你需要传入机器翻译规定的语种英文名和语种代号。翻译模式下支持的语言及对应的代号参看翻译模式语言支持。
-
stopForwardStreamToRooms()
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 停止跨房间媒体流转发。
通过 startForwardStreamToRooms:{@link #ByteRTCRoom#startForwardStreamToRooms} 发起媒体流转发后,可调用本方法停止向所有目标房间转发媒体流。
@return
- 0: 调用成功。
- < 0 : 调用失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 调用本方法后,将在本端触发 rtcRoom:onForwardStreamStateChanged:{@link #ByteRTCRoomDelegate#rtcRoom:onForwardStreamStateChanged} 回调。
- 调用本方法后,原目标房间中的用户将接收到本地用户停止发布 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish}、rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish} 回调和退房 rtcRoom:onUserLeave:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onUserLeave:reason} 的回调。
- 如果需要更改目标房间,请调用 updateForwardStreamToRooms:{@link #ByteRTCRoom#updateForwardStreamToRooms} 更新房间信息。
- 如果需要暂停转发,请调用 pauseForwardStreamToAllRooms{@link #ByteRTCRoom#pauseForwardStreamToAllRooms},并在之后随时调用 resumeForwardStreamToAllRooms{@link #ByteRTCRoom#resumeForwardStreamToAllRooms} 快速恢复转发。
-
stopSubtitle()
→ FutureOr<int>
-
@valid since 3.52
@detail api
@author qiaoxingwang
@brief 关闭字幕。
调用该方法后,用户会收到 rtcRoom:onSubtitleStateChanged:errorCode:errorMessage:{@link #ByteRTCRoomDelegate#rtcRoom:onSubtitleStateChanged:errorCode:errorMessage} 回调,通知字幕是否关闭。
@return
- 0: 调用成功。
- !0: 调用失败。
-
subscribeAllStreamsAudio(BOOL subscribe)
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
subscribeAllStreams 和 unsubscribeAllStreams 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用这两个方法,请迁移至该接口。
@author yejing.luna
@brief 订阅或取消订阅所有远端音频流(通过麦克风采集的)。
@param subscribe 是否订阅所有远端音频流。
- true: 订阅。
- false: 取消订阅。
@return
- 0: 成功。
- < 0: 失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
- 多次调用订阅接口时,将根据末次调用接口和传入的参数,更新订阅配置。
- 开启音频选路后,如果房间内的媒体流超过上限,建议通过调用 subscribeStreamAudio:subscribe:{@link #ByteRTCRoom#subscribeStreamAudio:subscribe} 接口逐一指定需要订阅的媒体流。
- 调用该方法后,你会收到 rtcRoom:onAudioSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onAudioSubscribeStateChanged:info:state:reason} 通知方法调用结果。
- 成功订阅远端用户的媒体流后,订阅关系将持续到调用 subscribeStreamAudio:subscribe:{@link #ByteRTCRoom#subscribeStreamAudio:subscribe} 取消订阅或本端用户退房。
- 关于其他调用异常,你会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知,具体异常原因参看 ByteRTCErrorCode{@link #ByteRTCErrorCode}。
-
subscribeAllStreamsVideo(BOOL subscribe)
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
subscribeAllStreams 和 unsubscribeAllStreams 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用这两个方法,请迁移至该接口。
@author yejing.luna
@brief 订阅/取消订阅房间内所有远端视频流(通过摄像头采集的)。
@param subscribe 是否订阅所有远端视频流。
- true: 订阅。
- false: 取消订阅。
@return
0: 方法调用成功
!0: 方法调用失败
@note
- 多次调用订阅接口时,将根据末次调用接口和传入的参数,更新订阅配置。
- 开启音频选路后,如果房间内的媒体流超过上限,建议通过调用 subscribeStreamVideo:subscribe:{@link #ByteRTCRoom#subscribeStreamVideo:subscribe} 接口逐一指定需要订阅的媒体流。
- 调用该方法后,你会收到 rtcRoom:onVideoSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onVideoSubscribeStateChanged:info:state:reason} 通知方法调用结果。
- 成功调用本接口后,订阅关系将持续到调用 subscribeAllStreamsVideo:{@link #ByteRTCRoom#subscribeAllStreamsVideo} 取消订阅或本端用户退房。
- 关于其他调用异常,你会收到 rtcRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRoomDelegate#rtcRoom:onRoomStateChanged:withUid:state:extraInfo} 回调通知,具体异常原因参看 ByteRTCErrorCode{@link #ByteRTCErrorCode}。
-
subscribeStreamAudio(NSString streamId, BOOL subscribe)
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
subscribeStream 和 unsubscribeStream 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用这两个方法,请迁移至该接口。
@author xuyiling.x10
@brief 订阅/取消订阅房间内指定的远端音频流(通过麦克风采集的)。
@param streamId 目标远端音频流 ID。
@param subscribe 指定是否订阅该音频流。
- true: 订阅。
- false: 取消订阅。
@return 方法调用结果:
- 0:成功;
- <0:失败。具体失败原因参看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus}。
@note
- 若当前用户在调用本接口时已经订阅该远端用户(手动订阅或自动订阅),则将根据本次传入的参数,更新订阅配置。
- 你必须先通过 rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish} 回调获取当前房间里的远端麦克风流信息,然后调用本方法按需订阅。
- 调用该方法后,你会收到 rtcRoom:onAudioSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onAudioSubscribeStateChanged:info:state:reason} 通知方法调用结果。
- 成功订阅远端用户的媒体流后,订阅关系将持续到调用 subscribeStreamAudio:subscribe:{@link #ByteRTCRoom#subscribeStreamAudio:subscribe} 取消订阅或本端用户退房。
- 关于其他调用异常,你会收到 rtcRoom:onAudioSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onAudioSubscribeStateChanged:info:state:reason} 回调通知,具体异常原因参看 ByteRTCSubscribeStateChangeReason{@link #ByteRTCSubscribeStateChangeReason}。
@order 3
-
subscribeStreamVideo(NSString streamId, BOOL subscribe)
→ FutureOr<int>
-
@detail api
@valid since 3.60. 自 3.60 起,该接口替代了
subscribeStream 和 unsubscribeStream 方法来实现下述功能。如果你已升级至 3.60 及以上版本,且仍在使用这两个方法,请迁移至该接口。
@author xuyiling.x10
@brief 订阅/取消订阅房间内指定的远端视频流(通过摄像头采集的)。
@param streamId 目标远端视频流 ID。
@param subscribe 指定是否订阅该视频流。
- true: 订阅。
- false: 取消订阅。
@return 方法调用结果:
- 0:成功;
- <0:失败。具体失败原因参看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus}。
@note
- 若当前用户在调用本接口时已经订阅该远端用户(手动订阅或自动订阅),则将根据本次传入的参数,更新订阅配置。
- 你必须先通过 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish} 回调获取当前房间里的远端摄像头流信息,然后调用本方法按需订阅。
- 调用该方法后,你会收到 rtcRoom:onVideoSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onVideoSubscribeStateChanged:info:state:reason} 通知方法调用结果。
- 成功订阅远端用户的媒体流后,订阅关系将持续到调用本方法取消订阅或本端用户退房。
- 关于其他调用异常,你会收到 rtcRoom:onVideoSubscribeStateChanged:info:state:reason:{@link #ByteRTCRoomDelegate#rtcRoom:onVideoSubscribeStateChanged:info:state:reason} 回调通知,具体异常原因参看 ByteRTCSubscribeStateChangeReason{@link #ByteRTCSubscribeStateChangeReason}。
@order 3
-
toString()
→ String
-
A string representation of this object.
inherited
-
updateForwardStreamToRooms(NSArray<ByteRTCForwardStreamConfiguration> configurations)
→ FutureOr<int>
-
@detail api
@author shenpengliang
@brief 更新跨房间媒体流转发信息。
通过 startForwardStreamToRooms:{@link #ByteRTCRoom#startForwardStreamToRooms} 发起媒体流转发后,可调用本方法增加或者减少目标房间,或更新房间密钥。
调用本方法增加或删减房间后,将在本端触发 rtcRoom:onForwardStreamStateChanged:{@link #ByteRTCRoomDelegate#rtcRoom:onForwardStreamStateChanged} 回调,包含发生了变动的目标房间中媒体流转发状态。
@param configurations 跨房间媒体流转发目标房间信息。参看 ByteRTCForwardStreamConfiguration{@link #ByteRTCForwardStreamConfiguration}。
@return
- 0: 成功。
- < 0: 失败。查看 ByteRTCReturnStatus{@link #ByteRTCReturnStatus} 获得更多错误说明。
@note
增加或删减目标房间后,新增目标房间中的用户将接收到本地用户进房 rtcRoom:onUserJoined:{@link #ByteRTCRoomDelegate#rtcRoom:onUserJoined} 和发布 rtcRoom:onUserPublishStreamVideo:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamVideo:info:isPublish}、rtcRoom:onUserPublishStreamAudio:info:isPublish:{@link #ByteRTCRoomDelegate#rtcRoom:onUserPublishStreamAudio:info:isPublish} 回调。
-
updateResource(NativeResource resource)
→ void
-
inherited
-
updateToken(NSString token)
→ FutureOr<int>
-
@detail api
@brief 更新 Token。
收到 onTokenWillExpire:{@link #ByteRTCRoomDelegate#onTokenWillExpire},onPublishPrivilegeTokenWillExpire:{@link #ByteRTCRoomDelegate#onPublishPrivilegeTokenWillExpire},或 onSubscribePrivilegeTokenWillExpire:{@link #ByteRTCRoomDelegate#onSubscribePrivilegeTokenWillExpire} 时,你必须重新获取 Token,并调用此方法更新 Token,以保证通话的正常进行。
@param token 重新获取的有效 Token。
如果 Token 无效,你会收到 rtsRoom:onRoomStateChanged:withUid:state:extraInfo:{@link #ByteRTCRTSRoomDelegate#rtsRoom:onRoomStateChanged:withUid:state:extraInfo},错误码是 -1010。
@return
- 0:成功;
- !0:失败。
@note 请勿同时调用 updateToken:{@link #ByteRTCRTSRoom#updateToken} 和 joinRTSRoom:userInfo:{@link #ByteRTCRTSRoom#joinRTSRoom:userInfo} 重新加入房间。