发布和订阅
- macOS
更新时间不可用
enableDualStreamMode:
在发送端启用或关闭不同质量层级的视频流模式。
- (int)enableDualStreamMode:(BOOL)enabled NS_SWIFT_NAME(enableDualStreamMode(_:)) __deprecated_msg("use setDualStreamMode: instead.");废弃
自 v4.2.0 版本废弃,请改用 setDualStreamMode。
不同质量层级的视频流是一对视频大流和视频小流的组合:
- 视频大流:高码率,高分辨率。
- 视频小流:低码率,低分辨率。
启用该模式后,你可以调用 setRemoteVideoStream:type: 方法,在接收端选择接收高质量或低质量的视频流。
注:
- 该方法适用于发送端的所有类型的视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
- 如果你需要在多频道场景中启用不同质量层级的视频流,可以调用 enableDualStreamModeEx:streamConfig:connection: 方法。
- 你可以在加入频道前或加入频道后调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
enableDualStreamMode:streamConfig:
设置发送端的不同质量层级的视频流模式及视频小流配置。
- (int)enableDualStreamMode:(BOOL)enabled
streamConfig:(AgoraSimulcastStreamConfig* _Nonnull)streamConfig NS_SWIFT_NAME(enableDualStreamMode(_:streamConfig:)) __deprecated_msg("use setDualStreamMode: instead.");废弃
自 v4.2.0 版本废弃,请改用 setDualStreamMode。
你可以调用该方法在发送端启用或关闭不同质量层级的视频流(dual-stream)模式。不同质量层级的视频流包括一对视频大流和视频小流:
- 视频大流:高码率,高分辨率。
- 视频小流:低码率,低分辨率。
启用该模式后,你可以调用 setRemoteVideoStream 方法,在接收端选择接收高质量或低质量的视频流。
注:
- 该方法适用于发送端的所有类型的视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
- 如果你需要在多频道场景中启用不同质量层级的视频流,可以调用
enableDualStreamModeEx方法。 - 你可以在加入频道前或加入频道后调用该方法。
参数
| 参数名 | 描述 |
|---|---|
enabled | |
streamConfig | 视频小流的配置。详见 AgoraSimulcastStreamConfig。注意:当 |
返回值
- 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.");废弃
自 v4.2.0 版本废弃,请改用 setDualStreamModeEx。
你可以调用此方法在发布端启用或关闭不同质量层级的视频流。不同质量层级的视频流由一对视频大流和视频小流组成:
- 视频大流:高码率,高分辨率。
- 视频小流:低码率,低分辨率。
启用不同质量层级的视频流后,你可以调用 setRemoteVideoStream 方法,在订阅端选择接收高质量或低质量的视频流。
注: 该方法适用于发送端的所有类型的视频流,包括但不限于摄像头采集的视频流、屏幕共享流和自定义采集的视频流。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
enabled | |
streamConfig | 视频小流的配置,详见 AgoraSimulcastStreamConfig。 注: 当 |
connection | 连接信息,详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteAllRemoteAudioStreams:
停止或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreams:(BOOL)mute NS_SWIFT_NAME(muteAllRemoteAudioStreams(_:));调用该方法后,你将停止或恢复订阅所有远端用户的音频流,包括之后加入频道的用户。
注: muteAllRemoteAudioStreams: 方法调用后,如果你调用了 enableAudio 或 disableAudio,以最后一次调用为准。默认情况下,加入频道时 SDK 会自动订阅所有远端用户的音频流。你可以在调用 joinChannelByToken 加入频道时将 AgoraRtcChannelMediaOptions 中的 autoSubscribeAudio 设置为 NO,以取消加入频道时对所有用户音频流的订阅。
调用时机
该方法需要在加入频道后调用。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteAllRemoteAudioStreamsEx:connection:
停止或恢复订阅所有远端用户的音频流。
- (int)muteAllRemoteAudioStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteAudioStreamsEx(_:connection:));调用该方法后,你将停止或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户。
注:
- 请在加入频道后调用该方法。
- 如果你希望在加入频道前不订阅远端用户的音频流,可以在调用
joinChannelByToken时将 AgoraRtcChannelMediaOptions 中的autoSubscribeAudio设置为 NO。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
mute | |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteAllRemoteVideoStreams:
停止或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreams:(BOOL)mute NS_SWIFT_NAME(muteAllRemoteVideoStreams(_:));调用该方法后,你会停止或恢复订阅所有远端用户的视频流,包括后续加入频道的用户。
注: 如果你调用了该方法后又调用了 enableVideo 或 disableVideo,以最后一次调用为准。默认情况下,加入频道时 SDK 会自动订阅所有远端用户的视频流。你可以在调用 joinChannelByToken 加入频道时将 AgoraRtcChannelMediaOptions 中的 autoSubscribeVideo 设置为 NO,以取消加入频道时对所有用户的视频流的订阅。
调用时机
请在加入频道后调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteAllRemoteVideoStreamsEx:connection:
停止或恢复订阅所有远端用户的视频流。
- (int)muteAllRemoteVideoStreamsEx:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteAllRemoteVideoStreamsEx(_:connection:));调用该方法后,会停止或恢复订阅所有远端用户的视频流,包括之后加入频道的所有远端用户。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
mute | |
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:。
参数
返回值
- 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 | |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteLocalVideoStream:
控制是否发布本地采集的视频流。
- (int)muteLocalVideoStream:(BOOL)mute NS_SWIFT_NAME(muteLocalVideoStream(_:));该方法用于控制是否发布本地采集的视频流。调用该方法停止发布本地采集的视频流时,视频采集设备仍会继续工作,不受影响。
与调用 enableLocalVideo: 设置为 NO 以关闭本地视频采集从而取消发布视频流的方法相比,该方法响应更快。
调用时机
该方法可以在加入频道前或后调用。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteLocalVideoStreamEx:connection:
停止或恢复发布本地视频流。
- (int)muteLocalVideoStreamEx:(BOOL)mute connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteLocalVideoStreamEx(_:connection:));注: 该方法不会影响任何正在进行的视频录制,因为它不会关闭摄像头。
适用场景
该方法适用于多频道场景。
相关回调
成功调用该方法后,SDK 会触发 rtcEngine:didVideoMuted:byUid: 回调报告远端用户是否接收到本地视频流。
参数
| 参数名 | 描述 |
|---|---|
mute | |
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: 回调。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteRemoteAudioStreamEx:mute:connection:
停止或恢复接收指定用户的音频流。
- (int)muteRemoteAudioStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteRemoteAudioStreamEx(_:mute:connection:));你可以在加入频道前或加入频道后调用该方法。如果用户离开频道,该方法中的设置将失效。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
uid | |
mute | |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteRemoteVideoStream:mute:
停止或恢复订阅指定用户的视频流。
- (int)muteRemoteVideoStream:(NSUInteger)uid
mute:(BOOL)mute NS_SWIFT_NAME(muteRemoteVideoStream(_:mute:));注: 成功调用该方法后,SDK 会触发 rtcEngine:didVideoSubscribeStateChange:uid:oldState:newState:elapseSinceLastState: 回调。
调用时机
请在加入频道后调用该方法。
参数
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
muteRemoteVideoStreamEx:mute:connection:
停止或恢复接收指定用户的视频流。
- (int)muteRemoteVideoStreamEx:(NSUInteger)uid
mute:(BOOL)mute
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(muteRemoteVideoStreamEx(_:mute:connection:));你可以在加入频道前或加入频道后调用该方法。如果远端用户离开频道,该方法中的设置将失效。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
uid | |
mute | |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setDualStreamMode:
设置发送端的不同质量层级的视频流模式。
- (int)setDualStreamMode:(AgoraSimulcastStreamMode)mode NS_SWIFT_NAME(setDualStreamMode(_:));SDK 默认在发送端开启视频小流自适应模式(AgoraAutoSimulcastStream),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStream:type: 方法发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。
- 如果你希望修改此行为,可以调用本方法并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流)或AgoraEnableSimulcastStream(始终发送视频小流)。 - 如果你希望在修改后恢复默认行为,可以再次调用本方法并将
mode设置为AgoraAutoSimulcastStream。
注: 本方法与 enableDualStreamMode: 方法的区别如下:
- 当调用本方法并将
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 中的配置发送视频流。
注: 本方法与 enableDualStreamMode:streamConfig: 的区别如下:
- 当调用本方法并将
mode设置为AgoraDisableSimulcastStream时,效果等同于调用 enableDualStreamMode:streamConfig: 并将enabled设置为 NO。 - 当调用本方法并将
mode设置为AgoraEnableSimulcastStream时,效果等同于调用 enableDualStreamMode:streamConfig: 并将enabled设置为 YES。 - 两个方法都可以在加入频道前或后调用。如果两个方法都被调用,则以后调用的方法中的设置生效。
参数
| 参数名 | 描述 |
|---|---|
mode | 视频流的发送模式,详见 AgoraSimulcastStreamMode。 |
streamConfig | 视频小流的配置,详见 AgoraSimulcastStreamConfig。 注: 当 |
返回值
0:方法调用成功。 < 0:方法调用失败。
所属接口类
setDualStreamModeEx:streamConfig:connection:
设置发送端的不同质量层级的视频流模式。
- (int)setDualStreamModeEx:(AgoraSimulcastStreamMode)mode
streamConfig:(AgoraSimulcastStreamConfig*)streamConfig
connection:(AgoraRtcConnection* _Nonnull)connection NS_SWIFT_NAME(setDualStreamModeEx(_:streamConfig:connection:));SDK 默认在发送端开启视频小流的自适应模式(AgoraAutoSimulcastStream),即发送端不会主动发送视频小流。角色为主播的接收端可以通过调用 setRemoteVideoStreamEx:type:connection: 方法发起视频小流请求,发送端在收到请求后会自动开始发送视频小流。
- 如果你希望修改此行为,可以调用本方法并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流)或AgoraEnableSimulcastStream(始终发送视频小流)。 - 如果你希望在修改后恢复默认行为,可以再次调用本方法并将
mode设置为AgoraAutoSimulcastStream。
注: 该方法与 enableDualStreamModeEx:streamConfig:connection: 的区别如下:
- 当调用本方法并将
mode设置为AgoraDisableSimulcastStream时,效果等同于调用 enableDualStreamModeEx:streamConfig:connection:(NO)。 - 当调用本方法并将
mode设置为AgoraEnableSimulcastStream时,效果等同于调用 enableDualStreamModeEx:streamConfig:connection:(YES)。 - 两个方法都可以在加入频道前后调用。如果两个方法都被调用,则以后调用的方法设置优先生效。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
mode | 视频流的发送模式,详见 AgoraSimulcastStreamMode。 |
streamConfig | |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRemoteDefaultVideoStreamType:
设置默认订阅的视频流类型。
- (int)setRemoteDefaultVideoStreamType:(AgoraVideoStreamType)streamType NS_SWIFT_NAME(setRemoteDefaultVideoStreamType(_:));根据发送端的默认行为以及调用 setDualStreamMode:streamConfig: 时的具体设置,你调用此方法的场景如下:
- SDK 默认在发送端启用视频小流自适应模式(
AgoraAutoSimulcastStream),即仅发送视频大流。此时,只有角色为主播的接收端可以调用此方法发起视频小流请求。一旦发送端收到请求后,会自动开始发送视频小流。此时,频道内所有用户都可以调用此方法切换为订阅视频小流模式。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraEnableSimulcastStream(始终发送视频小流),则主播和观众角色的接收端都可以调用此方法切换为订阅视频小流模式。
SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流一致。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。
注: 如果你同时调用此方法和 setRemoteVideoStream:type:,则以 setRemoteVideoStream:type: 的设置为准。
调用时机
该方法需要在加入频道前调用。SDK 不支持在加入频道后更改默认订阅的视频流类型。
参数
| 参数名 | 描述 |
|---|---|
streamType | 默认订阅的视频流类型,详见 AgoraVideoStreamType。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRemoteVideoStream:type:
设置你要订阅的视频流类型。
- (int)setRemoteVideoStream:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType NS_SWIFT_NAME(setRemoteVideoStream(_:type:));根据发送端的默认行为以及调用 setDualStreamMode:streamConfig: 时的具体设置,你调用此方法的场景如下:
- SDK 默认在发送端启用视频小流自适应模式(
AgoraAutoSimulcastStream),即仅发送视频大流。此时,只有角色为主播的接收端可以调用此方法发起视频小流请求。发送端收到请求后会自动开始发送视频小流,频道内所有用户都可以调用此方法切换为订阅视频小流模式。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraEnableSimulcastStream(始终发送视频小流),则主播和观众角色的接收端都可以调用此方法切换为订阅视频小流模式。
SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流相同。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。
注:
- 你可以在加入频道前或加入频道后调用此方法。
- 如果你同时调用此方法和 setRemoteDefaultVideoStreamType:,以 setRemoteVideoStream:type: 的设置为准。
参数
| 参数名 | 描述 |
|---|---|
uid | |
streamType | 视频流类型,详见 AgoraVideoStreamType。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRemoteVideoStreamEx:type:connection:
设置你要订阅的视频流类型。
- (int)setRemoteVideoStreamEx:(NSUInteger)uid
type:(AgoraVideoStreamType)streamType
connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setRemoteVideoStreamEx(_:type:connection:));根据发送端的默认行为以及调用 setDualStreamMode:streamConfig: 时的具体设置,你调用此方法的场景如下:
- SDK 默认在发送端启用视频小流自适应模式(
AgoraAutoSimulcastStream),即仅发送视频大流。此时,只有角色为主播的接收端可以调用此方法发起视频小流请求。一旦发送端收到请求,会自动开始发送视频小流。此时,频道内所有用户都可以调用此方法切换为视频小流订阅模式。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。 - 如果发送端调用 setDualStreamMode:streamConfig: 并将
mode设置为AgoraEnableSimulcastStream(始终发送视频小流),则无论你是主播还是观众,都可以调用此方法切换为视频小流订阅模式。
SDK 会根据视频窗口的大小动态调整对应视频流的尺寸,以节省带宽和计算资源。视频小流的默认宽高比与视频大流相同。系统会根据当前视频大流的宽高比,自动分配视频小流的分辨率、帧率和码率。
注: 如果发送端已调用 setDualStreamModeEx:streamConfig:connection: 并将 mode 设置为 AgoraDisableSimulcastStream(从不发送视频小流),则调用此方法无效。你需要在发送端再次调用 setDualStreamModeEx:streamConfig:connection: 并调整设置。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
uid | |
streamType | 视频流类型,详见 AgoraVideoStreamType。 |
connection | 连接信息。详见 AgoraRtcConnection。 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setRemoteVideoSubscriptionOptions:options:
设置订阅远端视频流的选项。
- (int)setRemoteVideoSubscriptionOptions:(NSUInteger)uid
options:(AgoraVideoSubscriptionOptions* _Nonnull)options NS_SWIFT_NAME(setRemoteVideoSubscriptionOptions(_:options:));当远端用户开启双流模式时,你可以调用此方法设置订阅该远端用户发送的视频流的选项。SDK 默认的远端视频流订阅行为取决于注册的视频观察者类型:
- 如果注册了 AgoraVideoFrameDelegate 观察者,默认订阅原始数据和编码数据;
- 如果注册了 AgoraEncodedVideoFrameDelegate 观察者,默认仅订阅编码数据;
- 如果同时注册了两种观察者,默认行为遵循最后注册的观察者。例如,如果最后注册的是 AgoraVideoFrameDelegate 观察者,则默认订阅原始数据和编码数据。
如果你希望修改默认行为,或为不同的 uid 设置不同的订阅选项,可以调用此方法进行设置。
参数
| 参数名 | 描述 |
|---|---|
uid | |
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 | |
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 列表中添加希望订阅的用户的 |
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
所属接口类
setSubscribeAudioAllowlistEx:connection:
设置音频流订阅的白名单。
- (int)setSubscribeAudioAllowlistEx:(NSArray <NSNumber *> *_Nonnull)allowlist connection:(AgoraRtcConnection * _Nonnull)connection NS_SWIFT_NAME(setSubscribeAudioAllowlistEx(_:connection:));你可以调用此方法来指定你想要订阅的用户的音频流。
注:
- 你可以在加入频道前或加入频道后调用此方法。
- 白名单不受
muteRemoteAudioStream、muteAllRemoteAudioStreams和 AgoraRtcChannelMediaOptions 中的autoSubscribeAudio设置的影响。 - 一旦设置了订阅白名单,即使你离开当前频道并重新加入频道,该设置仍然有效。
- 如果某个用户同时被添加到白名单和黑名单中,只有黑名单生效。
适用场景
该方法适用于多频道场景。
参数
| 参数名 | 描述 |
|---|---|
allowlist | |
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 列表中添加希望订阅的用户的 |
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 | |
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 | |
oldState | 之前的订阅状态,详见 AgoraStreamSubscribeState。 |
newState | 当前的订阅状态,详见 AgoraStreamSubscribeState。 |
elapseSinceLastState |