发布和订阅
muteAllRemoteAudioStreams
取消或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreams:(BOOL)mute;
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
注意:
-
该方法需要在加入频道后调用。
-
如果需要在加入频道前设置默认不订阅远端用户音频流,可以在调用
joinChannelByToken [2/4]
加入频道时设置autoSubscribeAudio
为NO
。
参数
参数名 | 描述 |
---|---|
mute | 是否取消订阅所有远端用户的音频流:
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteAllRemoteAudioStreamsEx
取消或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteAudioStreamsEx(_:connection:));
成功调用该方法后,本地用户会取消或恢复订阅远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
注意:
-
该方法需要在加入频道后调用。
-
如果需要在加入频道前设置默认不订阅远端用户音频流,可以在调用
joinChannelByToken [2/4]
加入频道时设置autoSubscribeAudio
为NO
。
参数
参数名 | 描述 |
---|---|
mute | 是否取消订阅所有远端用户的音频流:
|
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteAllRemoteVideoStreams
取消或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreams:(BOOL)mute;
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
注意:
-
该方法需要在加入频道后调用。
-
如果需要在加入频道前设置默认不订阅远端用户视频流,可以在调用
joinChannelByToken [2/4]
加入频道时设置autoSubscribeVideo
为NO
。
参数
参数名 | 描述 |
---|---|
mute | 是否取消订阅所有远端用户的视频流。
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteAllRemoteVideoStreamsEx
取消或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteVideoStreamsEx(_:connection:));
v4.1.0
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
参数
参数名 | 描述 |
---|---|
mute | 是否取消订阅所有远端用户的视频流。
|
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteLocalAudioStream
取消或恢复发布本地音频流。
- (int)muteLocalAudioStream:(BOOL)mute;
注意: 该方法不影响音频采集状态,因为没有禁用音频采集设备。
成功调用该方法后,远端会触发 didAudioMuted
回调和 remoteAudioStateChangedOfUid
回调。
参数
参数名 | 描述 |
---|---|
mute | 是否取消发布本地音频流。
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteLocalAudioStreamEx
取消或恢复发布本地音频流。
- (int)muteLocalAudioStreamEx:(BOOL)mute connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteLocalAudioStreamEx(_:connection:));
注意: 该方法不影响音频采集状态,因为没有禁用音频采集设备。
成功调用该方法后,远端会触发 didAudioMuted
回调和 remoteAudioStateChangedOfUid
回调。
参数
参数名 | 描述 |
---|---|
mute | 是否取消发布本地音频流。
|
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteLocalVideoStream
取消或恢复发布本地视频流。
- (int)muteLocalVideoStream:(BOOL)mute;
成功调用该方法后,远端会触发 didVideoMuted
回调。
注意:
-
相比于
enableLocalVideo
(NO
) 用于控制本地视频流发送的方法,该方法响应速度更快。 -
该方法不影响视频采集状态,没有禁用摄像头。
参数
参数名 | 描述 |
---|---|
mute | 是否取消发送本地视频流。
|
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteLocalVideoStreamEx
取消或恢复发布本地视频流。
- (int)muteLocalVideoStreamEx:(BOOL)mute connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteLocalVideoStreamEx(_:connection:));
v4.1.0
成功调用该方法后,远端会触发 didVideoMuted
回调。
注意:
- 该方法不影响视频采集状态,没有禁用摄像头。
参数
参数名 | 描述 |
---|---|
mute | 是否取消发送本地视频流。
|
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteRemoteAudioStream
muteRemoteAudioStreamEx
停止/恢复接收指定的音频流。
- (int)muteRemoteAudioStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection;
参数
参数名 | 描述 |
---|---|
uid | 指定用户的 ID。 |
mute | 是否停止接收指定音频流:
|
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
muteRemoteVideoStream
muteRemoteVideoStreamEx
停止/恢复接收指定的视频流。
- (int)muteRemoteVideoStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection;
该方法停止/恢复接收某一个指定远端用户的视频流。在加入频道前或后都可以调用。该方法的设置在离开频道后失效。
参数
参数名 | 描述 |
---|---|
uid | 远端用户的 ID。 |
mute | 是否停止接收某个远端用户的视频:
|
connection | Connection 信息。详见 |
返回值
-
0:方法调用成功。
-
< 0:方法调用失败。详见
错误码
了解详情和解决建议。
setRemoteVideoSubscriptionOptions
设置远端视频流的订阅选项。
- (int)setRemoteVideoSubscriptionOptions:(NSUInteger)uid
options:(AgoraVideoSubscriptionOptions* _Nonnull)options NS_SWIFT_NAME(setRemoteVideoSubscriptionOptions(_:options:));
当远端发送双流时,可调用此方法来设置远端视频流的订阅选项。
-
如果你只注册了
AgoraVideoFrameDelegate
对象,则默认订阅原始视频数据和编码后的视频数据 (效果等同于encodedFrameOnly
设置为NO
)。 -
如果你只注册了
AgoraEncodedVideoFrameDelegate
对象,则默认只订阅编码后的视频数据 (效果等同于encodedFrameOnly
设置为YES
)。 -
如果你先后注册了
AgoraVideoFrameDelegate
和AgoraEncodedVideoFrameDelegate
对象,则默认订阅原始视频数据和编码后的视频数据 (效果等同于encodedFrameOnly
设置为NO
)。 -
如果你先调用该方法设置了
options
参数、然后再注册AgoraVideoFrameDelegate
或AgoraEncodedVideoFrameDelegate
对象,则需要再次调用该方法并按照以上两项描述设置options
参数,以获得预期的效果。
注: 声网推荐你按照以下步骤调用该方法:
-
调用
joinChannelByToken [2/4]
加入频道时设置autoSubscribeVideo
为NO
。 -
在收到
didJoinedOfUid
回调后调用该方法,设置对指定远端用户视频流的订阅选项。 -
调用
muteRemoteVideoStream
方法,开始恢复订阅指定远端用户的视频流。如果你在上一步中将encodedFrameOnly
设置为YES
,SDK 会在本地触发onEncodedVideoFrameReceived
回调,上报接收到的编码后视频帧信息。
参数
参数名 | 描述 |
---|---|
uid | 远端用户 ID。 |
options | 视频流的订阅设置,详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setRemoteVideoSubscriptionOptionsEx
设置远端视频流的订阅选项。
- (int)setRemoteVideoSubscriptionOptionsEx:(NSUInteger)uid
options:(AgoraVideoSubscriptionOptions* _Nonnull)options
connection:(AgoraRtcConnection* _Nonnull)connection NS_SWIFT_NAME(setRemoteVideoSubscriptionOptionsEx(_:options:connection:));
当远端发送双流时,可调用此方法来设置远端视频流的订阅选项。
参数
参数名 | 描述 |
---|---|
uid | 远端用户 ID。 |
options | 视频流的订阅设置,详见 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeAudioAllowlist
设置音频订阅白名单。
- (int)setSubscribeAudioAllowlist:(NSArray <NSNumber *> *_Nonnull)allowlist;
你可以调用该方法指定想要订阅的音频流。
注:
-
该方法在加入频道前后均可调用。
-
音频订阅白名单不受
muteRemoteAudioStream
、muteAllRemoteAudioStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeAudio
的影响。 -
设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
allowlist | 音频订阅白名单的用户 ID 列表。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeAudioAllowlistEx
设置音频订阅白名单。
- (int)setSubscribeAudioAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection;
你可以调用该方法指定想要订阅的音频流。
注:
-
该方法在加入频道前后均可调用。
-
音频订阅白名单不受
muteRemoteAudioStream
、muteAllRemoteAudioStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeAudio
的影响。 -
设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
allowlist | 音频订阅白名单的用户 ID 列表。 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeAudioBlocklist
设置音频订阅黑名单。
- (int)setSubscribeAudioBlocklist:(NSArray <NSNumber *> *_Nonnull)blocklist;
你可以调用该方法指定不订阅的音频流。
注意:
-
该方法在加入频道前后均可调用。
-
音频订阅黑名单不受
muteRemoteAudioStream
、muteAllRemoteAudioStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeAudio
影响。 -
设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
blocklist | 订阅黑名单的用户 ID 列表。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeAudioBlocklistEx
设置音频订阅黑名单。
- (int)setSubscribeAudioBlocklistEx:(NSArray <NSNumber *> *_Nonnull)blocklist connection:(AgoraRtcConnection * _Nonnull)connection;
你可以调用该方法指定不订阅的音频流。
注意:
-
该方法在加入频道前后均可调用。
-
音频订阅黑名单不受
muteRemoteAudioStream
、muteAllRemoteAudioStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeAudio
影响。 -
设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
blocklist | 订阅黑名单的用户 ID 列表。 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeVideoAllowlist
设置视频订阅白名单。
- (int)setSubscribeVideoAllowlist:(NSArray <NSNumber *> *_Nonnull)allowlist;
你可以调用该方法指定想要订阅的视频流。
注:
-
该方法在加入频道前后均可调用。
-
视频订阅白名单不受
muteRemoteVideoStream
、muteAllRemoteVideoStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeVideo
的影响。 -
设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeVideoAllowlistEx
设置视频订阅白名单。
- (int)setSubscribeVideoAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection;
你可以调用该方法指定想要订阅的视频流。
注:
-
该方法在加入频道前后均可调用。
-
视频订阅白名单不受
muteRemoteVideoStream
、muteAllRemoteVideoStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeVideo
的影响。 -
设置订阅白名单后,如果离开当前频道后再重新加入频道,白名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
connection | 视频订阅白名单的用户 ID 列表。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeVideoBlocklist
设置视频订阅黑名单。
- (int)setSubscribeVideoBlocklist:(NSArray <NSNumber *> *_Nonnull)blocklist;
你可以调用该方法指定不订阅的视频流。
注:
-
该方法在加入频道前后均可调用。
-
视频订阅黑名单不受
muteRemoteVideoStream
、muteAllRemoteVideoStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeVideo
的影响。 -
设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
blocklist | 视频订阅黑名单的用户 ID 列表。 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
setSubscribeVideoBlocklistEx
设置视频订阅黑名单。
- (int)setSubscribeVideoBlocklistEx:(NSArray <NSNumber *> *_Nonnull)blocklist connection:(AgoraRtcConnection * _Nonnull)connection;
你可以调用该方法指定不订阅的视频流。
注:
-
该方法在加入频道前后均可调用。
-
视频订阅黑名单不受
muteRemoteVideoStream
、muteAllRemoteVideoStreams
以及AgoraRtcChannelMediaOptions
中的autoSubscribeVideo
的影响。 -
设置订阅黑名单后,如果离开当前频道后再重新加入频道,黑名单依然生效。
-
如果某个用户同时在音频订阅黑名单和白名单中,仅订阅黑名单生效。
参数
参数名 | 描述 |
---|---|
blocklist | 视频订阅黑名单的用户 ID 列表。 |
connection | Connection 信息。详见 |
返回值
-
0: 方法调用成功。
-
< 0: 方法调用失败。详见
错误码
了解详情和解决建议。
didAudioPublishStateChange
音频发布状态改变回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine
didAudioPublishStateChange:(NSString * _Nonnull)channelId
oldState:(AgoraStreamPublishState)oldState
newState:(AgoraStreamPublishState)newState
elapseSinceLastState:(int)elapseSinceLastState;
参数
参数名 | 描述 |
---|---|
engine |
|
channelId | 频道名。 |
oldState | 之前的发布状态,详见 |
newState | 当前的发布状态,详见 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
didAudioSubscribeStateChange
音频订阅状态发生改变回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine
didAudioSubscribeStateChange:(NSString * _Nonnull)channelId
uid:(unsigned int)uid
oldState:(AgoraStreamSubscribeState)oldState
newState:(AgoraStreamSubscribeState)newState
elapseSinceLastState:(int)elapseSinceLastState;
参数
参数名 | 描述 |
---|---|
engine |
|
channelId | 频道名。 |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态,详见 |
newState | 当前的订阅状态,详见 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |
didVideoSubscribeStateChange
视频订阅状态发生改变回调。
- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine
didVideoSubscribeStateChange:(NSString * _Nonnull)channelId
uid:(unsigned int)uid
oldState:(AgoraStreamSubscribeState)oldState
newState:(AgoraStreamSubscribeState)newState
elapseSinceLastState:(int)elapseSinceLastState;
参数
参数名 | 描述 |
---|---|
engine |
|
channel | 频道名。 |
uid | 远端用户的 ID。 |
oldState | 之前的订阅状态,详见 |
newState | 当前的订阅状态,详见 |
elapseSinceLastState | 两次状态变化时间间隔(毫秒)。 |