发布和订阅
enableDualStreamMode:
在发送端开启或关闭双流模式。
- (int)enableDualStreamMode:(BOOL)enabled;
详情
- 视频大流:高分辨率、高帧率的视频流。
- 视频小流:低分辨率、低帧率的视频流。
开启双流模式后,你可以在收流端调用 setRemoteVideoStream:type: 选择接收视频大流或视频小流。
- 该方法适用于发送端发送的所有类型的流,包括且不限于来自摄像头采集的视频流、屏幕共享流、自定义采集的视频流。
- 如果需要在多频道场景下开启视频双流,可以调用 enableDualStreamModeEx:streamConfig:connection: 方法。
- 该方法可以在加入频道前后调用。
参数
- enabled
- 是否开启双流模式。
YES
: 开启双流模式。NO
: (默认) 关闭双流模式。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
enableDualStreamMode:streamConfig:
在发送端开启或关闭双流模式并设置视频小流。
- (int)enableDualStreamMode:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig;
详情
- 视频大流:高分辨率、高帧率的视频流。
- 视频小流:低分辨率、低帧率的视频流。
开启双流模式后,你可以在收流端调用 setRemoteVideoStream:type: 选择接收视频大流或视频小流。
- 该方法适用于发送端发送的所有类型的流,包括且不限于来自摄像头采集的视频流、屏幕共享流、自定义采集的视频流。
- 如果需要在多频道场景下开启视频双流,可以调用 enableDualStreamModeEx:streamConfig:connection: 方法。
- 该方法可以在加入频道前后调用。
参数
- enabled
- 是否开启双流模式:
YES
: 开启双流模式。NO
: (默认) 关闭双流模式。
- streamConfig
- 视频小流的配置。详见 AgoraSimulcastStreamConfig。信息当设置 mode 为 AgoraDisableSimulcastStream 时,再设置 streamConfig 不会生效。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。 详见错误码了解详情和解决建议。
enableDualStreamModeEx:streamConfig:connection:
在发送端开启或关闭双流模式。
- (int)enableDualStreamModeEx:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig*)streamConfig
connection:(AgoraRtcConnection* _Nonnull)connection;
详情
- 视频大流:高分辨率、高帧率的视频流。
- 视频小流:低分辨率、低帧率的视频流。
开启双流模式后,你可以在收流端调用 setRemoteVideoStream:type: 选择接收视频大流或视频小流。
参数
- enabled
- 是否开启双流模式:
YES
: 开启双流模式。NO
: (默认) 关闭双流模式。
- streamConfig
- 视频小流的配置。详见 AgoraSimulcastStreamConfig。信息当设置 mode 为 AgoraDisableSimulcastStream 时,再设置 streamConfig 不会生效。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。 详见错误码了解详情和解决建议。
muteAllRemoteAudioStreams:
取消或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreams:(BOOL)mute;
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
SDK 默认在加入频道时订阅所有远端用户的音频流,如果要修改此行为,可以在调用 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 加入频道时设置 autoSubscribeAudio 为 NO
,即可在加入频道时取消订阅所有用户的音频流。
调用时机
该方法需要在加入频道后调用。
调用限制
如果在调用该方法之后又调用了 enableAudio 或 disableAudio,则后调用的方法会生效。
参数
- mute
- 是否取消订阅所有远端用户的音频流:
YES
: 取消订阅所有远端用户的音频流。NO
:(默认)订阅所有远端用户的音频流。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteAudioStreamsEx:connection:
取消或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteAudioStreamsEx(_:connection:));
详情
成功调用该方法后,本地用户会取消或恢复订阅远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
- 该方法需要在加入频道后调用。
- 如果需要在加入频道前设置默认不订阅远端用户音频流,可以在调用 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 加入频道时设置 autoSubscribeAudio 为
NO
。
参数
- mute
- 是否取消订阅所有远端用户的音频流:
YES
: 取消订阅所有远端用户的音频流。NO
:(默认)订阅所有远端用户的音频流。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteVideoStreams:
取消或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreams:(BOOL)mute;
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
SDK 默认在加入频道时订阅所有远端用户的视频流,如果要修改此行为,可以在调用 joinChannelByToken:channelId:uid:mediaOptions:joinSuccess: 加入频道时设置 autoSubscribeVideo 为 NO
,即可在加入频道时取消订阅所有用户的视频流。
调用时机
该方法需要在加入频道后调用。
调用限制
如果在调用该方法之后又调用了 enableVideo 或 disableVideo,则后调用的方法会生效。
参数
- mute
- 是否取消订阅所有远端用户的视频流。
YES
: 取消订阅所有用户的视频流。NO
:(默认)订阅所有用户的视频流。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteAllRemoteVideoStreamsEx:connection:
取消或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteVideoStreamsEx(_:connection:));
详情
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
参数
- mute
- 是否取消订阅所有远端用户的视频流。
YES
: 取消订阅所有用户的视频流。NO
:(默认)订阅所有用户的视频流。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteLocalAudioStream:
取消或恢复发布本地音频流。
- (int)muteLocalAudioStream:(BOOL)mute;
该方法用于控制是否发布本地采集的音频流。如果不发布本地采集的音频流,也不会禁用音频采集设备,所以不影响音频的采集状态。
调用时机
加入频道前后均可调用。
调用限制
无。
相关回调
成功调用该方法后,本地会触发 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
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteLocalVideoStream:
取消或恢复发布本地视频流。
- (int)muteLocalVideoStream:(BOOL)mute;
该方法用于控制是否发布本地采集的视频流。如果不发布本地采集的视频流,也不会禁用视频采集设备,所以不影响视频的采集状态。
相比于调用 enableLocalVideo:(NO
) 关闭本地视频流采集、从而取消发布本地视频流的方法,该方法响应速度更快。
调用时机
加入频道前后均可调用。
调用限制
无。
相关回调
成功调用该方法后,本地会触发 rtcEngine:didVideoPublishStateChange:sourceType:oldState:newState:elapseSinceLastState: 回调;远端会触发 rtcEngine:didVideoMuted:byUid: 回调和 rtcEngine:remoteVideoStateChangedOfUid:state:reason:elapsed: 回调。
参数
- mute
- 是否取消发送本地视频流。
YES
: 取消发送本地视频流。NO
: (默认)发送本地视频流。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteLocalVideoStreamEx:connection:
取消或恢复发布本地视频流。
- (int)muteLocalVideoStreamEx:(BOOL)mute connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteLocalVideoStreamEx(_:connection:));
详情
参数
- mute
- 是否取消发送本地视频流。
YES
: 取消发送本地视频流。NO
: (默认)发送本地视频流。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteRemoteAudioStream:mute:
取消或恢复订阅指定远端用户的音频流。
- (int)muteRemoteAudioStream:(NSUInteger)uid mute:(BOOL)mute;
调用时机
该方法需要在加入频道后调用。
调用限制
无。
相关回调
成功调用该方法后,本地会触发 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;
详情
参数
- uid
- 指定用户的 ID。
- mute
是否停止接收指定音频流:
YES
: 停止接收指定音频流。NO
:(默认)继续接收指定音频流。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
muteRemoteVideoStream:mute:
取消或恢复订阅指定远端用户的视频流。
- (int)muteRemoteVideoStream:(NSUInteger)uid
mute:(BOOL)mute;
调用时机
该方法需要在加入频道后调用。
调用限制
无。
相关回调
成功调用该方法后,本地会触发 rtcEngine:didVideoSubscribeStateChange:uid:oldState:newState:elapseSinceLastState: 回调。
参数
- uid
- 指定用户的用户 ID。
- mute
- 是否取消订阅指定远端用户的视频流。
YES
: 取消订阅指定用户的视频流。NO
: (默认)订阅指定用户的视频流。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
muteRemoteVideoStreamEx:mute:connection:
停止/恢复接收指定的视频流。
- (int)muteRemoteVideoStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection;
详情
该方法停止/恢复接收某一个指定远端用户的视频流。在加入频道前或后都可以调用。该方法的设置在离开频道后失效。
参数
- uid
远端用户的 ID。
- mute
- 是否停止接收某个远端用户的视频:
YES
: 停止接收。NO
: (默认)恢复接收。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setDualStreamMode:
在发送端设置双流模式。
- (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode;
详情
- 如果你想修改此行为,可以调用该方法并修改 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;
详情
- 如果你想修改此行为,可以调用该方法并修改 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;
详情
- 如果你想修改此行为,可以调用该方法并修改 mode 为 AgoraDisableSimulcastStream(始终不发送小流)或 AgoraEnableSimulcastStream(始终发送小流)。
- 如果你在进行修改后又想恢复该默认行为,可重新调用该方法,并将 mode 设置为 AgoraAutoSimulcastStream。
- 调用该方法并设置 mode 为 AgoraDisableSimulcastStream 时,跟 enableDualStreamModeEx:streamConfig:connection:
(NO)
的效果相同。 - 调用该方法并设置 mode 为 AgoraEnableSimulcastStream 时,跟 enableDualStreamModeEx:streamConfig:connection:
(YES)
的效果相同。 - 两种方法均可在加入频道前后调用,若同时使用,则以后调用的方法中的设置为准。
参数
- mode
- 发送视频流的模式。详见 AgoraSimulcastStreamMode。
- streamConfig
- 视频小流的配置。详见 AgoraSimulcastStreamConfig。信息当设置 mode 为 AgoraDisableSimulcastStream 时,再设置 streamConfig 不会生效。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。 详见错误码了解详情和解决建议。
setRemoteDefaultVideoStreamType:
设置默认订阅的视频流类型。
- (int)setRemoteDefaultVideoStreamType:(AgoraVideoStreamType)streamType;
- SDK 默认在发送端开启小流自适应模式 (AgoraAutoSimulcastStream),即:发送端仅发送大流,仅主播身份的接收端可以调用该方法发起小流申请,发送端收到申请后开始自动发送小流,此时频道内所有用户均可调用该方法切换到小流订阅模式。
- 当发送端调用 setDualStreamMode:streamConfig: 并将 mode 设置为 AgoraDisableSimulcastStream(始终不发送小流),则调用该方法不生效。
- 当发送端调用 setDualStreamMode:streamConfig: 并将 mode 设置为 AgoraEnableSimulcastStream(始终发送小流),则主播或观众身份的接收端均可调用该方法切换到小流订阅模式。
在接收视频小流时,SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
调用时机
该方法只能在加入频道前调用。SDK 不支持你在加入频道后修改默认订阅的视频流类型。
调用限制
如果你既调用了该方法,也调用了 setRemoteVideoStream:type:,则 SDK 以 setRemoteVideoStream:type: 中的设置为准。
参数
- streamType
默认订阅的视频流类型: AgoraVideoStreamType。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setRemoteVideoStream:type:
设置订阅的视频流类型。
- (int)setRemoteVideoStream:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType;
详情
- SDK 默认在发送端开启小流自适应模式 (AgoraAutoSimulcastStream),即:发送端仅发送大流,仅主播身份的接收端可以调用该方法发起小流申请,发送端收到申请后开始自动发送小流,此时频道内所有用户均可调用该方法切换到小流订阅模式。
- 当发送端调用 setDualStreamMode:streamConfig: 并将 mode 设置为 AgoraDisableSimulcastStream(始终不发送小流),则调用该方法不生效。
- 当发送端调用 setDualStreamMode:streamConfig: 并将 mode 设置为 AgoraEnableSimulcastStream(始终发送小流),则主播或观众身份的接收端均可调用该方法切换到小流订阅模式。
在接收视频小流时,SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
- 该方法在加入频道前后都能调用。
- 如果既调用了该方法,也调用了 setRemoteDefaultVideoStreamType:,则 SDK 以该方法中的设置为准。
参数
- 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(始终发送小流),则主播或观众身份的接收端均可调用该方法切换到小流订阅模式。
在接收视频小流时,SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
- 如果发送端已调用 setDualStreamModeEx:streamConfig:connection: 并将 mode 设置为 AgoraDisableSimulcastStream(始终不发送小流),则调用该方法不生效,你需要在发送端重新调用 setDualStreamModeEx:streamConfig:connection: 修改设置。
- 观众角色的接收端调用该方法不生效。
参数
- uid
- 用户 ID。
- streamType
视频流类型: AgoraVideoStreamType。
- connection
- 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
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioAllowlist:
设置音频订阅白名单。
- (int)setSubscribeAudioAllowlist:(NSArray <NSNumber *> *_Nonnull)allowlist;
详情
你可以调用该方法指定想要订阅的音频流。
- 该方法在加入频道前后均可调用。
- 音频订阅白名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeAudio 的影响。
- 设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- allowlist
音频订阅白名单的用户 ID 列表。
如果你想指定订阅某一发流用户的音频流,将该用户的 ID 加入此列表中。如果你想要将某一用户从订阅白名单中移除,需要重新调用 setSubscribeAudioAllowlist: 方法更新音频订阅白名单的用户 ID 列表,使其不包含你想移除的用户的 uid。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioAllowlistEx:connection:
设置音频订阅白名单。
- (int)setSubscribeAudioAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection;
详情
你可以调用该方法指定想要订阅的音频流。
- 该方法在加入频道前后均可调用。
- 音频订阅白名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeAudio 的影响。
- 设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- allowlist
音频订阅白名单的用户 ID 列表。
如果你想指定订阅某一发流用户的音频流,将该用户的 ID 加入此列表中。如果你想要将某一用户从订阅白名单中移除,需要重新调用 setSubscribeAudioAllowlist: 方法更新音频订阅白名单的用户 ID 列表,使其不包含你想移除的用户的 uid。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioBlocklist:
设置音频订阅黑名单。
- (int)setSubscribeAudioBlocklist:(NSArray <NSNumber *> *_Nonnull)blocklist;
详情
你可以调用该方法指定不订阅的音频流。
- 该方法在加入频道前后均可调用。
- 音频订阅黑名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeAudio 影响。
- 设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- blocklist
订阅黑名单的用户 ID 列表。
如果你想指定不订阅某一发流用户的音频流,将该用户的 ID 加入此列表中。如果你想要将某一用户从订阅黑名单中移除,需要重新调用 setSubscribeAudioBlocklist: 方法更新订阅黑名单的用户 ID 列表,使其不包含你想移除的用户的 uid。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeAudioBlocklistEx:connection:
设置音频订阅黑名单。
- (int)setSubscribeAudioBlocklistEx:(NSArray <NSNumber *> *_Nonnull)blocklist connection:(AgoraRtcConnection * _Nonnull)connection;
详情
你可以调用该方法指定不订阅的音频流。
- 该方法在加入频道前后均可调用。
- 音频订阅黑名单不受 muteRemoteAudioStream:mute:、muteAllRemoteAudioStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeAudio 影响。
- 设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- blocklist
订阅黑名单的用户 ID 列表。
如果你想指定不订阅某一发流用户的音频流,将该用户的 ID 加入此列表中。如果你想要将某一用户从订阅黑名单中移除,需要重新调用 setSubscribeAudioBlocklist: 方法更新订阅黑名单的用户 ID 列表,使其不包含你想移除的用户的 uid。
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoAllowlist:
设置视频订阅白名单。
- (int)setSubscribeVideoAllowlist:(NSArray <NSNumber *> *_Nonnull)allowlist;
详情
你可以调用该方法指定想要订阅的视频流。
- 该方法在加入频道前后均可调用。
- 视频订阅白名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeVideo 的影响。
- 设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoAllowlistEx:connection:
设置视频订阅白名单。
- (int)setSubscribeVideoAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection;
详情
你可以调用该方法指定想要订阅的视频流。
- 该方法在加入频道前后均可调用。
- 视频订阅白名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeVideo 的影响。
- 设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- connection
- Connection 信息。详见 AgoraRtcConnection。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoBlocklist:
设置视频订阅黑名单。
- (int)setSubscribeVideoBlocklist:(NSArray <NSNumber *> *_Nonnull)blocklist;
详情
你可以调用该方法指定不订阅的视频流。
- 该方法在加入频道前后均可调用。
- 视频订阅黑名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeVideo 的影响。
- 设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- blocklist
视频订阅黑名单的用户 ID 列表。
如果你想指定不订阅某一发流用户的视频流,将该用户的 ID 加入此列表中。如果你想要将某一用户从订阅黑名单中移除,需要重新调用 setSubscribeVideoBlocklist: 方法更新订阅黑名单的用户 ID 列表,使其不包含你想移除的用户的 uid。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setSubscribeVideoBlocklistEx:connection:
设置视频订阅黑名单。
- (int)setSubscribeVideoBlocklistEx:(NSArray <NSNumber *> *_Nonnull)blocklist connection:(AgoraRtcConnection * _Nonnull)connection;
详情
你可以调用该方法指定不订阅的视频流。
- 该方法在加入频道前后均可调用。
- 视频订阅黑名单不受 muteRemoteVideoStream:mute:、muteAllRemoteVideoStreams: 以及 AgoraRtcChannelMediaOptions 中的 autoSubscribeVideo 的影响。
- 设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
- 如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
- blocklist
视频订阅黑名单的用户 ID 列表。
如果你想指定不订阅某一发流用户的视频流,将该用户的 ID 加入此列表中。如果你想要将某一用户从订阅黑名单中移除,需要重新调用 setSubscribeVideoBlocklist: 方法更新订阅黑名单的用户 ID 列表,使其不包含你想移除的用户的 uid。
- connection
- 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;
参数
- engine
- 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;
参数
- engine
- AgoraRtcEngineKit 对象。
- 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;
参数
- engine
- AgoraRtcEngineKit 对象。
- channel
- 频道名。
- uid
- 远端用户的 ID。
- oldState
- 之前的订阅状态,详见 AgoraStreamSubscribeState。
- newState
- 当前的订阅状态,详见 AgoraStreamSubscribeState。
- elapseSinceLastState
- 两次状态变化时间间隔(毫秒)。