发布和订阅
enableDualStreamMode:
在发送端启用或关闭不同质量层级的视频流模式。
- (int)enableDualStreamMode:(BOOL)enabled NS_SWIFT_NAME(enableDualStreamMode(_:)) __deprecated_msg("use setDualStreamMode: instead.");
setDualStreamMode。- 视频大流:高码率,高分辨率。
- 视频小流:低码率,低分辨率。
- 该方法适用于发送端的所有类型的视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
- 如果你需要在多频道场景中启用不同质量层级的视频流,可以调用 enableDualStreamModeEx:streamConfig:connection: 方法。
- 你可以在加入频道前或加入频道后调用该方法。
参数
- enabled
- 是否启用不同质量层级的视频流模式:
- YES:启用不同质量层级的视频流模式。
- NO:(默认)关闭不同质量层级的视频流模式。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
enableDualStreamMode:streamConfig:
设置发送端的不同质量层级的视频流模式及视频小流配置。
- (int)enableDualStreamMode:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig NS_SWIFT_NAME(enableDualStreamMode(_:streamConfig:)) __deprecated_msg("use setDualStreamMode: instead.");
setDualStreamMode。- 视频大流:高码率,高分辨率。
- 视频小流:低码率,低分辨率。
setRemoteVideoStream 方法,在接收端选择接收高质量或低质量的视频流。- 该方法适用于发送端的所有类型的视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
- 如果你需要在多频道场景中启用不同质量层级的视频流,可以调用
enableDualStreamModeEx方法。 - 你可以在加入频道前或加入频道后调用该方法。
参数
- enabled
- 是否启用不同质量层级的视频流模式:
- YES:启用不同质量层级的视频流模式。
- NO:(默认)关闭不同质量层级的视频流模式。
- streamConfig
- 视频小流的配置。详见 AgoraSimulcastStreamConfig。注意:当
mode设置为AgoraDisableSimulcastStream时,streamConfig的设置不生效。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
enableDualStreamModeEx:streamConfig:connection:
在发送端启用或关闭不同质量层级的视频流。
- (int)enableDualStreamModeEx:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig*)streamConfig
connection:(AgoraRtcConnection* _Nonnull)connection NS_SWIFT_NAME(enableDualStreamModeEx(_:streamConfig:connection:)) __deprecated_msg("use setDualStreamModeEx: instead.");
setDualStreamModeEx。- 视频大流:高码率,高分辨率。
- 视频小流:低码率,低分辨率。
setRemoteVideoStream 方法,在订阅端选择接收高质量或低质量的视频流。适用场景
该方法适用于多频道场景。
参数
- enabled
- 是否启用不同质量层级的视频流:
- YES:启用不同质量层级的视频流。
- NO(默认):关闭不同质量层级的视频流。
- streamConfig
- 视频小流的配置,详见 AgoraSimulcastStreamConfig。信息当
mode设置为AgoraDisableSimulcastStream时,设置streamConfig无效。 - connection
- 连接信息,详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteAudioStreams:
停止或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreams:(BOOL)mute NS_SWIFT_NAME(muteAllRemoteAudioStreams(_:));
调用该方法后,你将停止或恢复订阅所有远端用户的音频流,包括之后加入频道的用户。
joinChannelByToken 加入频道时将 AgoraRtcChannelMediaOptions 中的 autoSubscribeAudio 设置为 NO,以取消加入频道时对所有用户音频流的订阅。调用时机
该方法需要在加入频道后调用。
参数
- mute
- 是否停止订阅所有远端用户的音频流:
- YES:停止订阅所有远端用户的音频流。
- NO:(默认)订阅所有远端用户的音频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteAudioStreamsEx:connection:
停止或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteAudioStreamsEx(_:connection:));
调用该方法后,你将停止或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户。
- 请在加入频道后调用该方法。
- 如果你希望在加入频道前不订阅远端用户的音频流,可以在调用
joinChannelByToken时将 AgoraRtcChannelMediaOptions 中的autoSubscribeAudio设置为 NO。
适用场景
该方法适用于多频道场景。
参数
- mute
- 是否停止订阅所有远端用户的音频流:
- YES:停止订阅所有远端用户的音频流。
- NO:(默认)订阅所有远端用户的音频流。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteVideoStreams:
停止或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreams:(BOOL)mute NS_SWIFT_NAME(muteAllRemoteVideoStreams(_:));
调用该方法后,你会停止或恢复订阅所有远端用户的视频流,包括后续加入频道的用户。
joinChannelByToken 加入频道时将 AgoraRtcChannelMediaOptions 中的 autoSubscribeVideo 设置为 NO,以取消加入频道时对所有用户的视频流的订阅。调用时机
请在加入频道后调用该方法。
参数
- mute
- 是否停止订阅所有远端用户的视频流。
- YES:停止订阅所有远端用户的视频流。
- NO:(默认)订阅所有远端用户的视频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteVideoStreamsEx:connection:
停止或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteVideoStreamsEx(_:connection:));
调用该方法后,会停止或恢复订阅所有远端用户的视频流,包括之后加入频道的所有远端用户。
适用场景
该方法适用于多频道场景。
参数
- mute
- 是否停止订阅所有远端用户的视频流。
- YES:停止订阅所有远端用户的视频流。
- NO:(默认)订阅所有远端用户的视频流。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteLocalAudioStream:
停止或恢复发布本地音频流。
- (int)muteLocalAudioStream:(BOOL)mute NS_SWIFT_NAME(muteLocalAudioStream(_:));
该方法用于控制是否发布本地采集的音频流。如果你调用该方法停止发布音频流,音频采集设备仍会正常工作,不受影响。
调用时机
该方法可以在加入频道前或加入频道后调用。
相关回调
调用该方法成功后,本地会触发回调 rtcEngine:didAudioPublishStateChange:oldState:newState:elapseSinceLastState:;远端会触发回调 rtcEngine:didAudioMuted:byUid: 和 rtcEngine:remoteAudioStateChangedOfUid:state:reason:elapsed:。
参数
- mute
- 是否停止发布本地音频流:
- YES:停止发布本地音频流。
- NO:(默认)恢复发布本地音频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteLocalAudioStreamEx:connection:
停止或恢复发布本地音频流。
- (int)muteLocalAudioStreamEx:(BOOL)mute connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteLocalAudioStreamEx(_:connection:));
成功调用该方法后,远端会触发 rtcEngine:didAudioMuted:byUid: 和 rtcEngine:remoteAudioStateChangedOfUid:state:reason:elapsed: 回调。
适用场景
该方法适用于多频道场景。
参数
- mute
- 是否停止发布本地音频流:
- YES:停止发布本地音频流。
- NO:(默认)恢复发布本地音频流。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteLocalVideoStream:
控制是否发布本地采集的视频流。
- (int)muteLocalVideoStream:(BOOL)mute NS_SWIFT_NAME(muteLocalVideoStream(_:));
该方法用于控制是否发布本地采集的视频流。调用该方法停止发布本地采集的视频流时,视频采集设备仍会继续工作,不受影响。 与调用 enableLocalVideo: 设置为 NO 以关闭本地视频采集从而取消发布视频流的方法相比,该方法响应更快。
调用时机
该方法可以在加入频道前或后调用。
参数
- mute
- 是否停止发布本地视频流。
- YES:停止发布本地视频流。
- NO:(默认)发布本地视频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteLocalVideoStreamEx:connection:
停止或恢复发布本地视频流。
- (int)muteLocalVideoStreamEx:(BOOL)mute connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteLocalVideoStreamEx(_:connection:));
适用场景
该方法适用于多频道场景。
相关回调
成功调用该方法后,SDK 会触发 rtcEngine:didVideoMuted:byUid: 回调报告远端用户是否接收到本地视频流。
参数
- mute
- 是否停止发布本地视频流。
- YES:停止发布本地视频流。
- NO:(默认)发布本地视频流。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteRemoteAudioStream:mute:
停止或恢复订阅指定用户的音频流。
- (int)muteRemoteAudioStream:(NSUInteger)uid mute:(BOOL)mute NS_SWIFT_NAME(muteRemoteAudioStream(_:mute:));
调用时机
在加入频道后调用该方法。
相关回调
成功调用该方法后,SDK 会触发 rtcEngine:didAudioSubscribeStateChange:uid:oldState:newState:elapseSinceLastState: 回调。
参数
- uid
- 指定用户的用户 ID。
- mute
- 是否订阅指定远端用户的音频流。
- YES:停止订阅该用户的音频流。
- NO:(默认)订阅该用户的音频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteRemoteAudioStreamEx:mute:connection:
停止或恢复接收指定用户的音频流。
- (int)muteRemoteAudioStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteRemoteAudioStreamEx(_:mute:connection:));
你可以在加入频道前或加入频道后调用该方法。如果用户离开频道,该方法中的设置将失效。
适用场景
该方法适用于多频道场景。
参数
- uid
- 指定用户的 ID。
- mute
- 是否停止接收指定用户的音频流:
- YES:停止接收指定用户的音频流。
- NO:(默认)恢复接收指定用户的音频流。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteRemoteVideoStream:mute:
停止或恢复订阅指定用户的视频流。
- (int)muteRemoteVideoStream:(NSUInteger)uid
mute:(BOOL)mute NS_SWIFT_NAME(muteRemoteVideoStream(_:mute:));
调用时机
请在加入频道后调用该方法。
参数
- uid
- 指定用户的用户 ID。
- mute
- 是否订阅指定远端用户的视频流:
- YES:停止订阅该用户的视频流。
- NO(默认):订阅该用户的视频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteRemoteVideoStreamEx:mute:connection:
停止或恢复接收指定用户的视频流。
- (int)muteRemoteVideoStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteRemoteVideoStreamEx(_:mute:connection:));
你可以在加入频道前或加入频道后调用该方法。如果远端用户离开频道,该方法中的设置将失效。
适用场景
该方法适用于多频道场景。
参数
- uid
- 远端用户的用户 ID。
- mute
- 是否停止接收指定用户的视频流:
- YES:停止接收指定用户的视频流。
- NO:(默认)恢复接收指定用户的视频流。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setDualStreamMode:
设置发送端的不同质量层级的视频流模式。
- (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode NS_SWIFT_NAME(setDualStreamMode(_:));
AgoraAutoSimulcastStream),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStream:type: 方法发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。 - 如果你希望修改此行为,可以调用本方法并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流)或AgoraEnableSimulcastStream(始终发送视频小流)。 - 如果你希望在修改后恢复默认行为,可以再次调用本方法并将
mode设置为AgoraAutoSimulcastStream。
- 当调用本方法并将
mode设置为AgoraDisableSimulcastStream时,效果等同于调用 enableDualStreamMode:(NO)。 - 当调用本方法并将
mode设置为AgoraEnableSimulcastStream时,效果等同于调用 enableDualStreamMode:(YES)。 - 两个方法都可以在加入频道前后调用。如果两个方法都被调用,则以后调用的方法设置优先生效。
参数
- mode
- 发送视频流的模式,详见 AgoraSimulcastStreamMode。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setDualStreamMode:streamConfig:
设置发送端的不同质量层级的视频流模式配置。
- (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode
streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig NS_SWIFT_NAME(setDualStreamMode(_:streamConfig:));
SDK 默认在发送端开启视频小流的自适应模式(AgoraAutoSimulcastStream),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStream:type: 发起视频小流请求,发送端在收到请求后自动开始发送视频小流。 如果你希望修改此行为,可以调用本方法并将 mode 设置为 AgoraDisableSimulcastStream(从不发送视频小流)或 AgoraEnableSimulcastStream(始终发送视频小流)。 如果你希望在修改后恢复默认行为,可以再次调用本方法并将 mode 设置为 AgoraAutoSimulcastStream。 与 setDualStreamMode: 方法的区别在于,本方法还可以配置视频小流,SDK 会根据 streamConfig 中的配置发送视频流。
- 当调用本方法并将
mode设置为AgoraDisableSimulcastStream时,效果等同于调用 enableDualStreamMode:streamConfig: 并将enabled设置为 NO。 - 当调用本方法并将
mode设置为AgoraEnableSimulcastStream时,效果等同于调用 enableDualStreamMode:streamConfig: 并将enabled设置为 YES。 - 两个方法都可以在加入频道前或后调用。如果两个方法都被调用,则以后调用的方法中的设置生效。
参数
- mode
- 视频流的发送模式,详见 AgoraSimulcastStreamMode。
- streamConfig
- 视频小流的配置,详见 AgoraSimulcastStreamConfig。信息当
mode设置为AgoraDisableSimulcastStream时,设置streamConfig不生效。
返回值
0:方法调用成功。 < 0:方法调用失败。
所属接口类setDualStreamModeEx:streamConfig:connection:
设置发送端的不同质量层级的视频流模式。
- (int)setDualStreamModeEx:(AgoraSimulcastStreamMode)mode
streamConfig:(AgoraSimulcastStreamConfig*)streamConfig
connection:(AgoraRtcConnection* _Nonnull)connection NS_SWIFT_NAME(setDualStreamModeEx(_:streamConfig:connection:));
AgoraAutoSimulcastStream),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStreamEx:type:connection: 方法发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。 - 如果你希望修改此行为,可以调用本方法并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流)或AgoraEnableSimulcastStream(始终发送视频小流)。 - 如果你希望在修改后恢复默认行为,可以再次调用本方法并将
mode设置为AgoraAutoSimulcastStream。
- 当调用本方法并将
mode设置为AgoraDisableSimulcastStream时,效果等同于调用 enableDualStreamModeEx:streamConfig:connection:(NO)。 - 当调用本方法并将
mode设置为AgoraEnableSimulcastStream时,效果等同于调用 enableDualStreamModeEx:streamConfig:connection:(YES)。 - 两个方法都可以在加入频道前后调用。如果两个方法都被调用,则以后调用的方法设置优先生效。
适用场景
该方法适用于多频道场景。
参数
- mode
- 视频流的发送模式,详见 AgoraSimulcastStreamMode。
- streamConfig
- 视频小流的配置。详见 AgoraSimulcastStreamConfig。信息当
mode设置为AgoraDisableSimulcastStream时,设置该参数不生效。 - connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRemoteDefaultVideoStreamType:
设置默认订阅的视频流类型。
- (int)setRemoteDefaultVideoStreamType:(AgoraVideoStreamType)streamType NS_SWIFT_NAME(setRemoteDefaultVideoStreamType(_:));
- SDK 默认在发送端启用视频小流自适应模式(
AgoraAutoSimulcastStream),即仅发送视频大流。此时,只有角色为主播的接收端可以调用此方法发起视频小流请求。一旦发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户都可以调用此方法切换为订阅视频小流模式。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraEnableSimulcastStream(始终发送视频小流),则主播和观众角色的接收端都可以调用此方法切换为订阅视频小流模式。
调用时机
该方法需要在加入频道前调用。SDK 不支持在加入频道后更改默认订阅的视频流类型。
参数
- streamType
- 默认订阅的视频流类型,详见 AgoraVideoStreamType。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRemoteVideoStream:type:
设置你要订阅的视频流类型。
- (int)setRemoteVideoStream:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType NS_SWIFT_NAME(setRemoteVideoStream(_:type:));
- SDK 默认在发送端启用视频小流自适应模式(
AgoraAutoSimulcastStream),即仅发送视频大流。此时,只有角色为主播的接收端可以调用此方法发起视频小流请求。发送端收到请求后会自动开始发送视频小流,频道内所有用户都可以调用此方法切换为订阅视频小流模式。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraEnableSimulcastStream(始终发送视频小流),则主播和观众角色的接收端都可以调用此方法切换为订阅视频小流模式。
- 你可以在加入频道前或加入频道后调用此方法。
- 如果你同时调用此方法和 setRemoteDefaultVideoStreamType:,以 setRemoteVideoStream:type: 的设置为准。
参数
- uid
- 远端用户 ID。
- streamType
- 视频流类型,详见 AgoraVideoStreamType。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRemoteVideoStreamEx:type:connection:
设置你要订阅的视频流类型。
- (int)setRemoteVideoStreamEx:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setRemoteVideoStreamEx(_:type:connection:));
- SDK 默认在发送端启用视频小流自适应模式(
AgoraAutoSimulcastStream),即仅发送视频大流。此时,只有角色为主播的接收端可以调用此方法发起视频小流请求。一旦发送端收到请求,会自动开始发送视频小流。此时,频道内所有用户都可以调用此方法切换为视频小流订阅模式。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraEnableSimulcastStream(始终发送视频小流),则无论你是主播还是观众,都可以调用此方法切换为视频小流订阅模式。
mode 设置为 AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。你需要在发送端再次调用 setDualStreamModeEx:streamConfig:connection: 并调整设置。适用场景
该方法适用于多频道场景。
参数
- uid
- 远端用户 ID。
- streamType
- 视频流类型,详见 AgoraVideoStreamType。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRemoteVideoSubscriptionOptions:options:
设置订阅远端视频流的选项。
- (int)setRemoteVideoSubscriptionOptions:(NSUInteger)uid
options:(AgoraVideoSubscriptionOptions* _Nonnull)options NS_SWIFT_NAME(setRemoteVideoSubscriptionOptions(_:options:));
- 如果注册了 AgoraVideoFrameDelegate 观察者,默认订阅原始数据和编码数据;
- 如果注册了 AgoraEncodedVideoFrameDelegate 观察者,默认仅订阅编码数据;
- 如果同时注册了两种观察者,默认行为遵循最后注册的观察者。例如,如果最后注册的是 AgoraVideoFrameDelegate 观察者,则默认订阅原始数据和编码数据。
uid 设置不同的订阅选项,可以调用此方法进行设置。参数
- uid
- 远端用户的用户 ID。
- options
- 视频订阅选项,详见 AgoraVideoSubscriptionOptions。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRemoteVideoSubscriptionOptionsEx:options:connection:
设置订阅远端视频流的选项。
- (int)setRemoteVideoSubscriptionOptionsEx:(NSUInteger)uid
options:(AgoraVideoSubscriptionOptions* _Nonnull)options
connection:(AgoraRtcConnection* _Nonnull)connection NS_SWIFT_NAME(setRemoteVideoSubscriptionOptionsEx(_:options:connection:));
当远端用户开启双流模式时,你可以调用该方法选择订阅该远端用户发送的视频流的选项。
适用场景
该方法适用于多频道场景。
参数
- uid
- 远端用户 ID。
- options
- 视频订阅选项,详见 AgoraVideoSubscriptionOptions。
- connection
- 连接信息,详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioAllowlist:
设置音频流订阅的白名单。
- (int)setSubscribeAudioAllowlist:(NSArray <NSNumber *> *_Nonnull)allowlist NS_SWIFT_NAME(setSubscribeAudioAllowlist(_:));
你可以调用此方法来指定希望订阅的用户的音频流。
- 你可以在加入频道之前或之后调用此方法。
- 白名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 和 AgoraRtcChannelMediaOptions 中的
autoSubscribeAudio设置的影响。 - 一旦设置了订阅白名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
- 如果某个用户同时被添加到白名单和黑名单中,则仅黑名单生效。
参数
- allowlist
- 希望订阅的用户的用户 ID 列表。如果希望订阅某个用户的音频流,请将该用户的 ID 添加到该列表中。如果希望将某个用户从白名单中移除,需要调用 setSubscribeAudioAllowlist: 方法更新用户 ID 列表;也就是说,只需在新的用户 ID 列表中添加希望订阅的用户的
uid。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioAllowlistEx:connection:
设置音频流订阅的白名单。
- (int)setSubscribeAudioAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setSubscribeAudioAllowlistEx(_:connection:));
你可以调用此方法来指定你想要订阅的用户的音频流。
- 你可以在加入频道前或加入频道后调用此方法。
- 白名单不受
muteRemoteAudioStream、muteAllRemoteAudioStreams和 AgoraRtcChannelMediaOptions 中的autoSubscribeAudio设置的影响。 - 一旦设置了订阅白名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
- 如果某个用户同时被添加到白名单和黑名单中,只有黑名单生效。
适用场景
该方法适用于多频道场景。
参数
- allowlist
- 你想要订阅的用户的用户 ID 列表。如果你想指定某个用户的音频流进行订阅,请将该用户的 ID 添加到此列表中。如果你想将某个用户从白名单中移除,你需要调用
setSubscribeAudioAllowlist方法来更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加你想要订阅的用户的uid。 - connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioBlocklist:
设置音频流订阅的黑名单。
- (int)setSubscribeAudioBlocklist:(NSArray <NSNumber *> *_Nonnull)blocklist NS_SWIFT_NAME(setSubscribeAudioBlocklist(_:));
你可以调用此方法来指定不希望订阅的用户的音频流。
- 你可以在加入频道前或加入频道后调用此方法。
- 黑名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 和 AgoraRtcChannelMediaOptions 中的
autoSubscribeAudio设置的影响。 - 一旦设置了订阅黑名单,即使你离开当前频道并重新加入,该设置仍然有效。
- 如果某个用户同时被加入白名单和黑名单,则仅黑名单生效。
参数
- blocklist
- 不希望订阅其音频流的远端用户 ID 列表。如果你希望指定不订阅某个用户的音频流,请将该用户的 ID 添加到此列表中。如果你希望将某个用户从黑名单中移除,需要调用 setSubscribeAudioBlocklist: 方法更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加不希望订阅的用户的 ID。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioBlocklistEx:connection:
设置音频流订阅的黑名单。
- (int)setSubscribeAudioBlocklistEx:(NSArray <NSNumber *> *_Nonnull)blocklist connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setSubscribeAudioBlocklistEx(_:connection:));
你可以调用此方法来指定不希望订阅的用户的音频流。
- 你可以在加入频道前或加入频道后调用此方法。
- 黑名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 和 AgoraRtcChannelMediaOptions 中的
autoSubscribeAudio设置影响。 - 一旦设置了订阅黑名单,即使你离开当前频道并重新加入,该设置仍然有效。
- 如果某个用户同时被加入白名单和黑名单,则仅黑名单生效。
适用场景
该方法适用于多频道场景。
参数
- blocklist
- 不希望订阅其音频流的用户 ID 列表。如果你希望指定不订阅某个用户的音频流,请将该用户的 ID 添加到此列表中。如果你希望将某个用户从黑名单中移除,需要调用 setSubscribeAudioBlocklist: 方法更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加不希望订阅的用户的用户 ID。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoAllowlist:
设置视频流订阅的白名单。
- (int)setSubscribeVideoAllowlist:(NSArray <NSNumber *> *_Nonnull)allowlist NS_SWIFT_NAME(setSubscribeVideoAllowlist(_:));
你可以调用该方法来指定你想要订阅的用户的视频流。
- 你可以在加入频道前或加入频道后调用该方法。
- 白名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 和 AgoraRtcChannelMediaOptions 中的
autoSubscribeAudio设置的影响。 - 一旦设置了订阅白名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
- 如果某个用户同时被添加到白名单和黑名单中,则只有黑名单生效。
参数
- allowlist
- 你想要订阅的视频流用户的用户 ID 列表。如果你想指定某个用户的视频流进行订阅,请将该用户的用户 ID 添加到此列表中。如果你想将某个用户从白名单中移除,你需要调用 setSubscribeVideoAllowlist: 方法更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加你想要订阅的用户的用户 ID。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoAllowlistEx:connection:
设置视频流订阅的白名单。
- (int)setSubscribeVideoAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setSubscribeVideoAllowlistEx(_:connection:));
你可以调用该方法来指定希望订阅的用户的视频流。
- 你可以在加入频道前或加入频道后调用此方法。
- 白名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 和 AgoraRtcChannelMediaOptions 中的
autoSubscribeAudio设置的影响。 - 一旦设置了订阅白名单,即使你离开并重新加入当前频道,该设置仍然有效。
- 如果某个用户同时被加入白名单和黑名单,则只有黑名单生效。
适用场景
该方法适用于多频道场景。
参数
- allowlist
- 你希望订阅其视频流的用户 ID 列表。如果希望订阅某个用户的视频流,请将该用户的 ID 添加到该列表中。如果希望将某个用户从白名单中移除,需要调用 setSubscribeVideoAllowlistEx:connection: 方法更新用户 ID 列表,即只需在新的用户 ID 列表中添加希望订阅的用户的
uid。 - connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoBlocklist:
设置不订阅的视频流用户的 blocklist。
- (int)setSubscribeVideoBlocklist:(NSArray <NSNumber *> *_Nonnull)blocklist NS_SWIFT_NAME(setSubscribeVideoBlocklist(_:));
你可以调用此方法来指定不希望订阅的用户的视频流。
- 你可以在加入频道前或加入频道后调用此方法。
- 该 blocklist 不受
muteRemoteVideoStream、muteAllRemoteVideoStreams和 AgoraRtcChannelMediaOptions 中的autoSubscribeAudio设置的影响。 - 一旦设置了订阅的 blocklist,即使你离开并重新加入频道,该设置仍然有效。
- 如果某个用户同时被添加到 allowlist 和 blocklist 中,只有 blocklist 生效。
参数
- blocklist
- 不希望订阅其视频流的用户 ID 列表。如果你希望指定不订阅某个用户的视频流,请将该用户的用户 ID 添加到此列表中。如果你希望将某个用户从 blocklist 中移除,需要调用 setSubscribeVideoBlocklist: 方法更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加不希望订阅的用户的用户 ID。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoBlocklistEx:connection:
设置视频流订阅的阻止名单。
- (int)setSubscribeVideoBlocklistEx:(NSArray <NSNumber *> *_Nonnull)blocklist connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setSubscribeVideoBlocklistEx(_:connection:));
你可以调用此方法来指定不希望订阅的用户的视频流。
- 你可以在加入频道前或加入频道后调用此方法。
- 阻止名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 和 AgoraRtcChannelMediaOptions 中的
autoSubscribeAudio设置影响。 - 一旦设置了订阅的阻止名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
- 如果某个用户同时被添加到允许名单和阻止名单中,则仅阻止名单生效。
适用场景
该方法适用于多频道场景。
参数
- blocklist
- 不希望订阅其视频流的用户 ID 列表。如果你希望指定不订阅某个用户的视频流,请将该用户的用户 ID 添加到此列表中。如果你希望将某个用户从阻止名单中移除,需要调用 setSubscribeVideoBlocklist: 方法更新用户 ID 列表;这意味着你只需在新的用户 ID 列表中添加不希望订阅的用户的用户 ID。
- connection
- 连接信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
rtcEngine:didAudioPublishStateChange:oldState:newState:elapseSinceLastState:
音频发布状态发生变化回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didAudioPublishStateChange:(NSString * _Nonnull)channelId
oldState:(AgoraStreamPublishState)oldState
newState:(AgoraStreamPublishState)newState
elapseSinceLastState:(int)elapseSinceLastState NS_SWIFT_NAME(rtcEngine(_:didAudioPublishStateChange:oldState:newState:elapseSinceLastState:));
该回调在音频发布状态发生变化时触发。
触发时机
该回调在音频发布状态发生变化时触发。
参数
- engine
- 当前使用的 AgoraRtcEngineKit 实例。详见 AgoraRtcEngineKit。
- channelId
- 频道名。
- oldState
- 之前的发布状态。详见 AgoraStreamPublishState。
- newState
- 当前的发布状态。详见 AgoraStreamPublishState。
- elapseSinceLastState
- 从之前状态切换到当前状态所经过的时间(毫秒)。
rtcEngine:didAudioSubscribeStateChange:uid:oldState:newState:elapseSinceLastState:
音频订阅状态发生变化回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didAudioSubscribeStateChange:(NSString * _Nonnull)channelId
uid:(unsigned int)uid
oldState:(AgoraStreamSubscribeState)oldState
newState:(AgoraStreamSubscribeState)newState
elapseSinceLastState:(int)elapseSinceLastState NS_SWIFT_NAME(rtcEngine(_:didAudioSubscribeStateChange:uid:oldState:newState:elapseSinceLastState:));
该回调在音频订阅状态发生变化时触发。
参数
- engine
- channelId
- 频道名。
- uid
- 远端用户 ID。
- oldState
- 之前的订阅状态,详见 AgoraStreamSubscribeState。
- newState
- 当前的订阅状态,详见 AgoraStreamSubscribeState。
- elapseSinceLastState
- 从上一个状态到当前状态所经历的时间(毫秒)。
rtcEngine:didVideoSubscribeStateChange:uid:oldState:newState:elapseSinceLastState:
远端视频订阅状态发生变化回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine didVideoSubscribeStateChange:(NSString * _Nonnull)channelId
uid:(unsigned int)uid
oldState:(AgoraStreamSubscribeState)oldState
newState:(AgoraStreamSubscribeState)newState
elapseSinceLastState:(int)elapseSinceLastState NS_SWIFT_NAME(rtcEngine(_:didVideoSubscribeStateChange:uid:oldState:newState:elapseSinceLastState:));
该回调在你订阅远端视频流的状态发生变化时触发。
参数
- engine
- channelId
- 频道名。
- uid
- 远端用户 ID。
- oldState
- 之前的订阅状态,详见 AgoraStreamSubscribeState。
- newState
- 当前的订阅状态,详见 AgoraStreamSubscribeState。
- elapseSinceLastState
- 从上一个状态到当前状态所经历的时间(毫秒)。