AgoraRtcChannel Class Reference

Inherits from NSObject
Declared in AgoraRtcChannel.h

Overview

AgoraRtcChannel 类

Since v3.0.0.

– destroy

销毁 AgoraRtcChannel 对象

- (int)destroy

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeNotInitialized(-7): The AgoraRtcChannel instance is not initialized before calling this method.

Declared In

AgoraRtcChannel.h

– setRtcChannelDelegate:

设置 AgoraRtcChannel 对象的 Delegate。

- (void)setRtcChannelDelegate:(id<AgoraRtcChannelDelegate> _Nullable)channelDelegate

Parameters

channelDelegate

AgoraRtcChannelDelegate

Discussion

你可以通过该方法监听本 AgoraRtcChannel 对象对应频道的 Delegate,并接收频道中用户视频信息等。

Declared In

AgoraRtcChannel.h

– getChannelId

获取当前 AgoraRtcChannel 对象的频道 ID

- (NSString *_Nullable)getChannelId

Return Value

  • 方法调用成功,返回当前 AgoraRtcChannel 对象的频道 ID
  • 方法调用失败,返回一个空字符 “”

Declared In

AgoraRtcChannel.h

– getCallId

获取通话 ID

- (NSString *_Nullable)getCallId

Return Value

  • 方法调用成功,返回当前通话 ID
  • 方法调用失败,返回一个空字符 “”

Discussion

Note: 该方法需要在加入频道后调用。

Declared In

AgoraRtcChannel.h

– getConnectionState

获取当前网络连接状态

- (AgoraConnectionStateType)getConnectionState

Return Value

当前的网络连接状态,详见 AgoraConnectionStateType

  • AgoraConnectionStateDisconnected(1): 网络连接断开。
  • AgoraConnectionStateConnecting(2): 建立网络连接中。
  • AgoraConnectionStateConnected(3): 用户已经加入频道,可以在频道内发布或订阅媒体流。
  • AgoraConnectionStateReconnecting(4): SDK 之前曾加入过频道,但因网络等原因连接中断了,此时 SDK 会自动尝试重新接入频道。
  • AgoraConnectionStateFailed(5): 网络连接失败。

Discussion

该方法在加入频道前后都能调用。

Declared In

AgoraRtcChannel.h

– joinChannelByToken:info:uid:options:

通过用户 ID 加入频道

- (int)joinChannelByToken:(NSString *_Nullable)token info:(NSString *_Nullable)info uid:(NSUInteger)uid options:(AgoraRtcChannelMediaOptions *_Nonnull)options

Parameters

token

在你服务器上生成的 Token。详见使用 Token 鉴权

info

(非必选项)开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。

uid

用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。如果不指定(即设为 0),SDK 会自动分配一个,并在 rtcChannelDidJoinChannel 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。

options

频道媒体设置选项 AgoraRtcChannelMediaOptions

Return Value

  • 0(AgoraErrorCodeNoError): 方法调用成功
  • < 0: 方法调用失败

    • -2(AgoraErrorCodeInvalidArgument): 参数无效
    • -3(AgoraErrorCodeNotReady): SDK 初始化失败,请尝试重新初始化 SDK
    • -5(AgoraErrorCodeRefused):调用被拒绝。可能有如下两个原因:

      • 已经创建了一个同名的 AgoraRtcChannel 频道
      • 已经通过 AgoraRtcChannel 加入了一个频道,并在该 AgoraRtcChannel 频道中发布了音视频流。
    • -7(AgoraErrorCodeNotInitialized): SDK 尚未初始化,就调用其 API。请确认在调用 API 之前已创建 AgoraRtcChannel 并完成初始化。

    • -17(AgoraErrorCodeJoinChannelRejected):加入频道被拒绝。由于 SDK 不支持用户重复加入同一个 AgoraRtcChannel 频道,当已经加入某个 AgoraRtcChannel 频道的用户再次调用该 AgoraRtcChannel 对象的加入频道方法时,会返回此错误码。

Discussion

相比于 AgoraRtcEngineKit 类下的 joinChannelByToken 方法,该方法支持通过创建多个 AgoraRtcChannel 对象,并调用相应对象的 joinChannelByToken 方法,实现同时加入多个频道。

用户成功加入频道后,默认发布本地音视频流并自动订阅频道内所有其他用户的音视频流。 订阅音视频流会产生用量并影响计费。如果想取消订阅,可以通过设置 options 参数或相应的 mute 方法实现。

Note

  • 该方法不支持相同的用户重复加入同一个频道。
  • 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 uid 是不同的。
  • 请确保用于生成 Token 的 App ID 和创建 AgoraRtcEngineKit 对象时用的 App ID 一致。

Declared In

AgoraRtcChannel.h

– joinChannelByUserAccount:token:options:

使用 User Account 加入频道

- (int)joinChannelByUserAccount:(NSString *_Nonnull)userAccount token:(NSString *_Nullable)token options:(AgoraRtcChannelMediaOptions *_Nonnull)options

Parameters

userAccount

用户 User Account。该参数为必需,最大不超过 255 字节,不可为 nil。请确保加入频道的 User Account 的唯一性。 以下为支持的字符集范围(共 89 个字符):

  • 26 个小写英文字母 a-z
  • 26 个大写英文字母 A-Z
  • 10 个数字 0-9
  • 空格
  • “!” 、 “#” 、 “$” 、 “%” 、 “&” 、 “(” 、 “)” 、 “+” 、 “-” 、 “:” 、 “;” 、 “<” 、 “=” 、 “.” 、 “>” 、 “?” 、 “@” 、 “[” 、 “]” 、 “^” 、 “_” 、 “{” 、 “}” 、 “|” 、 “~” 、 “,”
token

在你服务器上生成的 Token。详见使用 Token 鉴权

options

频道媒体设置选项 AgoraRtcChannelMediaOptions

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeInvalidArgument(-2)
    • AgoraErrorCodeNotReady(-3)
    • AgoraErrorCodeRefused(-5)
    • AgoraErrorCodeJoinChannelRejected(-17):加入频道被拒绝。由于 SDK 不支持用户重复加入同一个 AgoraRtcChannel 频道,当已经加入某个 AgoraRtcChannel 频道的用户再次调用该 AgoraRtcChannel 对象的加入频道方法时,会返回此错误码。

Discussion

该方法与 AgoraRtcEngineKit 类下的 joinChannelByUserAccount1 方法有以下区别:

AgoraRtcChannel joinChannelByUserAccount AgoraRtcEngineKit joinChannelByUserAccount1
channelId 参数。因为创建 AgoraRtcChannel 对象时已指定了 channelId 需要填入可以标识频道的 channelId
加了 options 参数,可在加入频道前通过该参数设置是否订阅该频道的音视频流。 options 参数。加入频道即默认订阅频道内的音视频流。如需在加入频道时设置媒体流订阅选项,可使用 joinChannelByUserAccount2。
通过创建多个 AgoraRtcChannel 对象,并调用相应对象的 joinChannelByToken 方法,实现同时加入多个频道。 只允许加入一个频道。
通过该方法加入频道后,SDK 默认不发布本地音视频流到本频道,用户需要调用 publish 方法进行发布。 通过该方法加入频道后,SDK 默认发布音视频流发布到本频道。

Note

  • 请确保在使用 String 型用户名前阅读如何使用 String 型用户 ID,了解使用限制及实现方法。
  • 该方法不支持相同的用户重复加入同一个频道。
  • 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 uid 是不同的。
  • 请确保用于生成 Token 的 App ID 和创建 AgoraRtcEngineKit 对象时用的 App ID 一致。

Declared In

AgoraRtcChannel.h

– leaveChannel

离开频道

- (int)leaveChannel

Return Value

  • 0(AgoraErrorCodeNoError): 方法调用成功
  • < 0: 方法调用失败

    • -1(AgoraErrorCodeFailed): 一般性的错误(未明确归类)
    • -2(AgoraErrorCodeInvalidArgument): 参数无效
    • -7(AgoraErrorCodeNotInitialized): SDK 尚未初始化

Discussion

成功调用该方法离开频道后,会触发以下回调:

Declared In

AgoraRtcChannel.h

– setAVSyncSource:uid:

设置发流端音画同步。

- (int)setAVSyncSource:(NSString *_Nullable)channelId uid:(NSUInteger)uid

Parameters

channelId

标识音频发送端所在频道的频道名。

uid

音频发送端的用户 ID。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Availability

v3.6.0

同一用户可能使用两个设备分别发送音频流和视频流,为保证接收端听到和看到的音频和视频的时间同步性,你可以在视频发送端调用该方法,并传入音频发送端的频道名、用户 ID。SDK 会以发送的音频流的时间戳为基准进行自动调节发送的视频流,以保证即使在两个发送端的上行网络情况不一致(如分别使用 Wi-Fi 和 4G 网络)的情况下,也能让接收到的音视频具有时间同步性。

Discussion

Note: 声网推荐你在加入频道前调用该方法。

Declared In

AgoraRtcChannel.h

– muteLocalAudioStream:

取消或恢复发布本地音频流。

- (int)muteLocalAudioStream:(BOOL)mute

Parameters

mute

是否取消发布本地音频流:

  • YES: 取消发布。
  • NO: 发布。

Return Value

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

    • -5 (AgoraErrorCodeRefused): 调用被拒绝。

Availability

v3.4.5

该方法仅设置用户在 AgoraRtcChannel 频道中的音频发布状态。

成功调用该方法后,远端会触发 remoteAudioStateChangedOfUid 回调。

同一时间,本地的音视频流只能发布到一个频道。如果你创建了多个频道,请确保你只在一个频道中调用 muteLocalAudioStream(NO),否则方法会调用失败并返回 -5 (AgoraErrorCodeRefused)

Note

  • 该方法不会改变音频采集设备的使用状态。
  • 该方法的调用是否生效受 joinChannelByTokensetClientRole 方法的影响,详见《设置发布状态》。

Declared In

AgoraRtcChannel.h

– muteLocalVideoStream:

取消或恢复发布本地视频流。

- (int)muteLocalVideoStream:(BOOL)mute

Parameters

mute

是否取消发布本地视频流:

  • YES: 取消发布。
  • NO: 发布。

Return Value

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

    • -5 (AgoraErrorCodeRefused): 调用被拒绝。

Availability

v3.4.5

该方法仅设置用户在 AgoraRtcChannel 频道中的视频发布状态。

成功调用该方法后,远端会触发 remoteVideoStateChangedOfUid 回调。

同一时间,本地的音视频流只能发布到一个频道。如果你创建了多个频道,请确保你只在一个频道中调用 muteLocalVideoStream(NO),否则方法会调用失败并返回 -5 (AgoraErrorCodeRefused)

Note

  • 该方法不会改变视频采集设备的使用状态。
  • 该方法的调用是否生效受 joinChannelByTokensetClientRole 方法的影响,详见《设置发布状态》。

Declared In

AgoraRtcChannel.h

– publish

将本地音视频流发布到本频道。

- (int)publish

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeRefused(-5): 调用被拒绝

Discussion

Deprecated 该方法自 v3.4.5 起废弃,请改用 muteLocalAudioStream(NO)muteLocalVideoStream(NO)

该方法的调用需满足以下要求,否则 SDK 会返回 AgoraErrorCodeRefused(-5):

  • 该方法仅支持将音视频流发布到当前 AgoraRtcChannel 类所对应的频道。
  • 直播场景下,该方法仅适用于角色为主播的用户。你可以调用该 AgoraRtcChannel 类下的 setClientRole 方法设置用户角色。
  • SDK 只支持用户同一时间在一个频道发布一路音视频流。详情请参考高阶指南多频道管理

Declared In

AgoraRtcChannel.h

– unpublish

停止将本地音视频流发布到本频道。

- (int)unpublish

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeRefused(-5): 调用被拒绝

Discussion

Deprecated 该方法自 v3.4.5 起废弃,请改用 muteLocalAudioStream(YES)muteLocalVideoStream(YES)

请确保你想要 unpublish 音视频流的频道 channelId,与当前正在 publish 音视频流的频道 channelId 一致,否则 SDK 会返回 AgoraErrorCodeRefused(-5)。

Declared In

AgoraRtcChannel.h

– setClientRole:

设置直播场景下的用户角色。

- (int)setClientRole:(AgoraClientRole)role

Parameters

role

直播场景里的用户角色,详见 AgoraClientRole

Return Value

  • 0(AgoraErrorCodeNoError): 方法调用成功。
  • < 0: 方法调用失败。

    • -1(AgoraErrorCodeFailed): 一般性的错误(未明确归类)。
    • -2(AgoraErrorCodeInvalidArgument): 参数无效。
    • -5 (AgoraErrorCodeRefused): 调用被拒绝。在多频道场景中, 如果你已在一个频道中进行如下设置,则用户在另一个频道内切换角色为主播时会返回该错误码:

      • 调用带 options 参数的 joinChannelByToken, 并使用默认设置 publishLocalAudio = YESpublishLocalVideo = YES
      • 调用 setClientRole,并设置用户角色为主播。
      • 调用 muteLocalAudioStream(NO)muteLocalVideoStream(NO)

      • -7(AgoraErrorCodeNotInitialized): SDK 尚未初始化。

Discussion

调用 setChannelProfile(AgoraChannelProfileLiveBroadcasting) 后,SDK 会默认设置用户角色为观众,你可以调用 setClientRole 设置用户角色为主播。

该方法在加入频道前后均可调用。如果你在加入频道后调用该方法切换用户角色,调用成功后,SDK 会自动进行如下操作:

Note: 该方法仅适用于直播场景。

Declared In

AgoraRtcChannel.h

– setClientRole:options:

设置直播场景下的用户角色。

- (int)setClientRole:(AgoraClientRole)role options:(AgoraClientRoleOptions *_Nullable)options

Parameters

role

直播场景中的用户角色,详见 AgoraClientRole

options

用户具体设置,包含用户级别,详见 AgoraClientRoleOptions

Return Value

  • 0(AgoraErrorCodeNoError): 方法调用成功。
  • < 0: 方法调用失败。

    • -1(AgoraErrorCodeFailed): 一般性的错误(未明确归类)。
    • -2(AgoraErrorCodeInvalidArgument): 参数无效。
    • -5 (AgoraErrorCodeRefused): 调用被拒绝。在多频道场景中, 如果你已在一个频道中进行如下设置,则用户在另一个频道内切换角色为主播时会返回该错误码:

      • 调用带 options 参数的 joinChannelByToken, 并使用默认设置 publishLocalAudio = YESpublishLocalVideo = YES
      • 调用 setClientRole,并设置用户角色为主播。
      • 调用 muteLocalAudioStream(NO)muteLocalVideoStream(NO)

      • -7(AgoraErrorCodeNotInitialized): SDK 尚未初始化。

Availability

v3.2.0

调用 setChannelProfile(AgoraChannelProfileLiveBroadcasting) 后,SDK 会默认设置用户角色为观众,你可以调用 setClientRole 设置用户角色为主播。

该方法在加入频道前后均可调用。如果你在加入频道后调用该方法切换用户角色,调用成功后,SDK 会自动进行如下操作:

Note

  • 该方法仅适用于直播场景。
  • 该方法与 setClientRole1 的区别在于,该方法还支持设置用户级别。

    • 用户角色 (role) 确定用户在 SDK 层的权限,包含是否可以发送流、是否可以接收流、是否可以推流到 CDN 等。
    • 用户级别 (level) 需要与角色结合使用,确定用户在其权限范围内,可以操作和享受到的服务级别。 例如对于观众,选择接收低延时还是超低延时的视频流。用户级别会影响计费

Declared In

AgoraRtcChannel.h

– renewToken:

更新 Token

- (int)renewToken:(NSString *_Nonnull)token

Parameters

token

新的 Token

Return Value

  • 0(AgoraErrorCodeNoError): 方法调用成功
  • < 0: 方法调用失败

    • -1(AgoraErrorCodeFailed): 一般性的错误(未明确归类)
    • -2(AgoraErrorCodeInvalidArgument): 参数无效
    • -7(AgoraErrorCodeNotInitialized): SDK 尚未初始化

Discussion

该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当以下任意一种情况发生时:

App 应重新获取 Token,然后调用该 API 更新 Token,否则 SDK 无法和服务器建立连接。

Note

声网推荐使用 rtcChannelRequestToken 回调报告 AgoraErrorCodeTokenExpired(-109),而不是 didOccurError 回调.

Declared In

AgoraRtcChannel.h

– setEncryptionSecret:

启用内置加密,并设置数据加密密码

- (int)setEncryptionSecret:(NSString *_Nullable)secret

Parameters

secret

加密密码

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

DEPRECATED自 v3.1.0 起废弃,请改用 enableEncryption

在加入频道之前, App 需调用 setEncryptionSecret 指定 secret 来启用内置的加密功能,同一频道内的所有用户应设置相同的 secret。 当用户离开频道时,该频道的 secret 会自动清除。如果未指定 secret 或将 secret 设置为空,则无法激活加密功能。

Note

  • 请不要在旁路推流时调用此方法。
  • 为保证最佳传输效果,请确保加密后的数据大小不超过原始数据大小 + 16 字节。16 字节是 AES 通用加密模式下最大填充块大小。

Declared In

AgoraRtcChannel.h

– setEncryptionMode:

设置内置的加密方案

- (int)setEncryptionMode:(NSString *_Nullable)encryptionMode

Parameters

encryptionMode

加密方式,有三种选择:

  • “aes-128-xts":(默认)128 位 AES 加密,XTS 模式。
  • “aes-256-xts":256 位 AES 加密,XTS 模式。
  • “aes-128-ecb":128 位 AES 加密,ECB 模式。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

DEPRECATED自 v3.1.0 起废弃,请改用 enableEncryption

声网 Native SDK 支持内置加密功能,默认使用 AES-128-XTS 加密方式。如需使用其他加密方式,可以调用该 API 设置。同一频道内的所有用户必须设置相同的加密方式和 secret 才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。

Note

  • 在调用本方法前,请先调用 setEncryptionSecret 启用内置加密功能。
  • 请不要在旁路推流时调用此方法。

Declared In

AgoraRtcChannel.h

– enableEncryption:encryptionConfig:

开启或关闭内置加密。

- (int)enableEncryption:(bool)enabled encryptionConfig:(AgoraEncryptionConfig *_Nonnull)config

Parameters

enabled

是否开启内置加密:

  • YES: 开启
  • NO: 关闭
config

配置内置加密模式和密钥。详见 AgoraEncryptionConfig

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • -2 (AgoraErrorCodeInvalidArgument): 调用了无效的参数。需重新指定参数。
    • -7 (AgoraErrorCodeNotInitialized): SDK 尚未初始化。需在调用 API 之前已创建 AgoraRtcEngineKit 对象并完成初始化。
    • -4 (AgoraErrorCodeNotSupported): 设置的加密模式不正确或加载外部加密库失败。需检查枚举值是否正确或重新加载外部加密库。

Availability

v3.1.0

在安全要求较高的场景下,声网建议你在加入频道前,调用 enableEncryption 方法开启内置加密。

用户离开频道后,SDK 会自动关闭加密。如需重新开启加密,你需要在用户再次加入频道前调用该方法。

自 v3.4.5 起,声网推荐使用 AgoraEncryptionModeAES128GCM2AgoraEncryptionModeAES256GCM2 加密模式。这两种模式支持设置盐,安全性更高。 设置方法详见《媒体流加密》。

Discussion

Warning: 同一频道内所有用户必须使用相同的加密模式、密钥和盐,否则用户之间无法互通。

Note:

  • 如果开启了内置加密,则不能使用 RTMP/RTMPS 推流功能。
  • 为加强安全性,声网建议每次启用媒体流加密时都更换新的密钥和盐。

Declared In

AgoraRtcChannel.h

– setRemoteUserPriority:type:

设置远端用户流的优先级

- (int)setRemoteUserPriority:(NSUInteger)uid type:(AgoraUserPriority)userPriority

Parameters

uid

远端用户的 ID

userPriority

远端用户的优先级,详见 AgoraUserPriority

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。

弱网下 SDK 会优先保证高优先级用户收到的流的质量。

该方法需要在加入频道前调用。

Note

目前仅支持将一名远端用户设为高优先级。

Declared In

AgoraRtcChannel.h

– setRemoteVoicePosition:pan:gain:

设置远端用户的语音位置

- (int)setRemoteVoicePosition:(NSUInteger)uid pan:(double)pan gain:(double)gain

Parameters

uid

远端用户的 ID

pan

设置远端用户声音的空间位置,取值范围为 [-1.0,1.0]:

  • (默认)0.0:声音出现在正前方
  • -1.0:声音出现在左边
  • 1.0:声音出现在右边
gain

设置远端用户声音的音量,取值范围为 [0.0,100.0],默认值为 100.0,表示该用户的原始音量。取值越小,则音量越低。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

设置远端用户声音的空间位置和音量,方便本地用户听声辨位。

通过调用该接口设置远端用户声音出现的位置,左右声道的声音差异会产生声音的方位感,从而判断出远端用户的实时位置。在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。

Note

  • 该方法需要在加入频道后调用。使用该方法需要在加入频道前调用 enableSoundPositionIndication 开启远端用户的语音立体声
  • 为获得最佳听觉体验,我们建议:

    • 在 iOS 使用该方法时佩戴有线耳机
    • 在 macOS 使用该方法时使用立体声外放

Declared In

AgoraRtcChannel.h

– setRemoteRenderMode:renderMode:mirrorMode:

更新远端视图显示模式。

- (int)setRemoteRenderMode:(NSUInteger)uid renderMode:(AgoraVideoRenderMode)renderMode mirrorMode:(AgoraVideoMirrorMode)mirrorMode

Parameters

uid

远端用户 ID。

renderMode

远端用户视图的渲染模式,详见 AgoraVideoRenderMode

mirrorMode

远端用户视图的镜像模式,详见 AgoraVideoMirrorMode

Note

默认关闭远端用户的镜像模式。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

初始化远端用户视图后,你可以调用该方法更新远端用户视图在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。

Note

  • 请在调用 setupRemoteVideo 方法初始化远端视图后,调用该方法。
  • 你可以在通话中多次调用该方法,多次更新远端用户视图的显示模式。

Declared In

AgoraRtcChannel.h

– setDefaultMuteAllRemoteAudioStreams:

默认取消或恢复订阅远端用户的音频流。

- (int)setDefaultMuteAllRemoteAudioStreams:(BOOL)mute

Parameters

mute

是否默认取消订阅远端用户的音频流:

  • YES: 默认取消订阅。
  • NO: (默认)默认订阅。

Return Value

  • 0:方法调用成功。
  • < 0:方法调用失败。

Discussion

Deprecated 该方法自 v3.3.0 起废弃。

该方法需要在加入频道后调用。调用成功后,本地用户取消或恢复订阅调用时刻之后加入频道的远端用户。

Note

取消订阅音频流后,如果需要恢复订阅频道内的远端用户,可以进行如下操作:

  • 如果需要恢复订阅单个用户的音频流,调用 muteRemoteAudioStream(NO), 并指定你想要订阅的远端用户 ID。
  • 如果想恢复订阅多个用户的音频流,则需要多次调用 muteRemoteAudioStream(NO)

Declared In

AgoraRtcChannel.h

– setDefaultMuteAllRemoteVideoStreams:

默认取消或恢复订阅远端用户的视频流。

- (int)setDefaultMuteAllRemoteVideoStreams:(BOOL)mute

Parameters

mute

是否默认取消订阅远端用户的视频流:

  • YES: 默认取消订阅。
  • NO: (默认)默认订阅。

Return Value

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

Discussion

Deprecated 该方法自 v3.3.0 起废弃。

该方法需要在加入频道后调用。调用成功后,本地用户取消或恢复订阅调用时刻之后加入频道的远端用户。

Note

取消订阅视频流后,如果需要恢复订阅频道内的远端用户,可以进行如下操作:

  • 如果需要恢复订阅单个用户的视频流,调用 muteRemoteVideoStream(NO), 并指定你想要订阅的远端用户 ID。
  • 如果想恢复订阅多个用户的音频流,则需要多次调用 muteRemoteVideoStream(NO)

Declared In

AgoraRtcChannel.h

– muteRemoteAudioStream:mute:

取消或恢复订阅指定远端用户的音频流。

- (int)muteRemoteAudioStream:(NSUInteger)uid mute:(BOOL)mute

Parameters

uid

指定用户的用户 ID。

mute

是否取消订阅指定远端用户的音频流。

  • YES: 取消订阅。
  • NO: (默认)订阅。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

Note

  • 该方法需要在加入频道后调用。
  • 该方法的推荐设置详见《设置订阅状态》。

Declared In

AgoraRtcChannel.h

– adjustUserPlaybackSignalVolume:volume:

调节本地播放的指定远端用户的信号音量。

- (int)adjustUserPlaybackSignalVolume:(NSUInteger)uid volume:(int)volume

Parameters

uid

远端用户 ID,需和远端用户加入频道时用的 uid 一致。

volume

播放音量。取值范围为 [0,100],其中:

  • 0: 静音
  • 100:(默认)原始音量

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

加入频道后,你可以多次调用该方法调节不同远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。

Note

  • 该方法要在加入频道后调用。
  • 该方法调节的是本地播放的指定远端用户混音后的音量。
  • 该方法每次只能调整一位远端用户在本地播放的音量。若需调整多位远端用户在本地播放的音量,则需多次调用该方法。

Declared In

AgoraRtcChannel.h

– muteAllRemoteAudioStreams:

取消或恢复订阅所有远端用户的音频流。

- (int)muteAllRemoteAudioStreams:(BOOL)mute

Parameters

mute

是否取消订阅所有远端用户的音频流。

  • YES: 取消订阅。
  • NO: (默认)订阅。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流, 包括在调用该方法后加入频道的用户的音频流。

Note

  • 该方法需要在加入频道后调用。
  • 自 v3.3.0 起,该方法包含了 setDefaultMuteAllRemoteAudioStreams 的功能。声网建议不要一起调用 muteAllRemoteAudioStreamssetDefaultMuteAllRemoteAudioStreams,否则设置可能会不生效。详见《设置订阅状态》。

Declared In

AgoraRtcChannel.h

– muteRemoteVideoStream:mute:

取消或恢复订阅指定远端用户的视频流。

- (int)muteRemoteVideoStream:(NSUInteger)uid mute:(BOOL)mute

Parameters

uid

指定用户的用户 ID。

mute

是否取消订阅指定远端用户的视频流。

  • YES: 取消订阅。
  • NO: (默认)订阅。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

Note

  • 该方法需要在加入频道后调用。
  • 该方法的推荐设置详见《设置订阅状态》。

Declared In

AgoraRtcChannel.h

– muteAllRemoteVideoStreams:

取消或恢复订阅所有远端用户的视频流。

- (int)muteAllRemoteVideoStreams:(BOOL)mute

Parameters

mute

是否取消订阅所有远端用户的视频流。

  • YES: 取消订阅。
  • NO: (默认)订阅。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流, 包括在调用该方法后加入频道的用户的视频流。

Note

  • 该方法需要在加入频道后调用。
  • 自 v3.3.0 起,该方法包含了 setDefaultMuteAllRemoteVideoStreams 的功能。声网建议不要一起调用 muteAllRemoteVideoStreamssetDefaultMuteAllRemoteVideoStreams,否则设置可能会不生效。详见《设置订阅状态》。

Declared In

AgoraRtcChannel.h

– setRemoteVideoStream:type:

设置订阅的视频流类型

- (int)setRemoteVideoStream:(NSUInteger)uid type:(AgoraVideoStreamType)streamType

Parameters

uid

用户 ID

streamType

设置视频流大小,AgoraVideoStreamType

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode(NO) 关闭双流模式,接收端可以选择接收大流还是小流。其中,大流可以接收高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。

正常情况下,用户默认接收大流。如需接收小流,可以调用本方法进行切换。SDK 会根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。

视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。

调用本方法的执行结果将在 didApiCallExecute 中返回。

Note: 该方法在加入频道前后都能调用。如果既调用了 setRemoteVideoStream,也调用了 setRemoteDefaultVideoStreamType,则 SDK 以 setRemoteVideoStream 中的设置为准。

Declared In

AgoraRtcChannel.h

– setRemoteDefaultVideoStreamType:

设置默认订阅的视频流类型

- (int)setRemoteDefaultVideoStreamType:(AgoraVideoStreamType)streamType

Parameters

streamType

设置默认接收的视频流类型,详见 AgoraVideoStreamType

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

该方法设置远端视频默认为大流或小流。

Note

  • 该方法只能在加入频道前调用。声网不支持你在加入频道后修改默认订阅的视频流类型。
  • 如果你既调用了该方法,也调用了 setRemoteVideoStream,则 SDK 以 setRemoteVideoStream 中的设置为准。

Declared In

AgoraRtcChannel.h

– addPublishStreamUrl:transcodingEnabled:

增加旁路推流地址

- (int)addPublishStreamUrl:(NSString *_Nonnull)url transcodingEnabled:(BOOL)transcodingEnabled

Parameters

url

CDN 推流地址,格式为 RTMP 或 RTMPS。该字符串长度不能超过 1024 字节。URL 不支持中文等特殊字符。

transcodingEnabled
  • YES: 转码(转码是指在旁路推流时对音视频流做一些转码处理后再推送到其他 CDN 服务器,常见的适用场景是对多主播进行混流、合图)。如果设为 YES,需先调用 setLiveTranscoding 方法。
  • NO: 不转码。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeInvalidArgument(-2): 参数无效,一般是 URL 为空或是长度为 0 的的字符串。
    • AgoraErrorCodeNotInitialized(-7): 推流时未初始化引擎。

Discussion

Deprecated 该方法自 3.6.0 版废弃,替代方案请参考发版说明

该方法用于添加旁路推流地址,调用该方法后,你可以向 CDN 推送 RTMP 或 RTMPS 协议的媒体流。SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告增加旁路推流地址的状态。

Note:

  • 该方法仅适用于直播场景。
  • 请确保在成功加入频道后再调用该接口。
  • 请确保已开通旁路推流的功能,详见前提条件
  • 该方法每次只能增加一路旁路推流地址。若需推送多路流,则需多次调用该方法。
  • 声网目前仅支持转码时向 CDN 推送 RTMPS 协议的媒体流。

Declared In

AgoraRtcChannel.h

– removePublishStreamUrl:

删除旁路推流地址

- (int)removePublishStreamUrl:(NSString *_Nonnull)url

Parameters

url

待删除的推流地址,格式为 RTMP 或 RTMPS。该字符串长度不能超过 1024 字节

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

Deprecated 该方法自 3.6.0 版废弃,替代方案请参考发版说明

该方法用于删除旁路推流过程中已经设置的 RTMP/RTMPS 推流地址。调用该方法后,SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告删除旁路推流地址的状态。

Note:

  • 该方法仅适用于直播场景。
  • 该方法每次只能删除一路旁路推流地址。若需删除多路流,则需多次调用该方法。
  • URL 不支持中文等特殊字符。

Declared In

AgoraRtcChannel.h

– setLiveTranscoding:

设置直播转码

- (int)setLiveTranscoding:(AgoraLiveTranscoding *_Nullable)transcoding

Parameters

transcoding

一个 AgoraLiveTranscoding 的对象,详细设置见 AgoraLiveTranscoding

Return Value

  • 0: 方法调用成功;
  • < 0: 方法调用失败。

Discussion

Deprecated 该方法自 3.6.0 版废弃,替代方案请参考发版说明

该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码设置后本地会触发 rtcEngineTranscodingUpdated 回调。

Note:

  • 该方法需要在加入频道后调用。
  • 该方法仅适用于直播场景。
  • 请确保已开通 CDN 旁路推流的功能,详见前提条件
  • 首次调用该方法更新转码设置时,不会触发 rtcEngineTranscodingUpdated 回调。

Declared In

AgoraRtcChannel.h

– startRtmpStreamWithoutTranscoding:

开始非转码推流。

- (int)startRtmpStreamWithoutTranscoding:(NSString *_Nonnull)url

Parameters

url

CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeInvalidArgument(-2): url 为空或为长度为 0 的字符串。
    • AgoraErrorCodeNotInitialized(-7): 调用该方法前,未初始化 SDK。

Availability

v3.6.0

调用该方法,你可以向指定的 CDN 推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址推流,则需多次调用该方法。

调用该方法后,SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告推流的状态。

Note:

  • 请确保已开通 CDN 推流服务,详见进阶功能《旁路推流》中的前提条件。
  • 请在加入频道后调用该方法。
  • 只有直播场景下的主播才能调用该方法。
  • 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。

Declared In

AgoraRtcChannel.h

– startRtmpStreamWithTranscoding:transcoding:

开始 CDN 直播推流并设置转码属性。

- (int)startRtmpStreamWithTranscoding:(NSString *_Nonnull)url transcoding:(AgoraLiveTranscoding *_Nullable)transcoding

Parameters

url

CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

transcoding

CDN 直播推流的转码属性,详见 AgoraLiveTranscoding 类。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • AgoraErrorCodeInvalidArgument(-2): url 为空或为长度为 0 的字符串。
    • AgoraErrorCodeNotInitialized(-7): 调用该方法前,未初始化 SDK。

Availability

v3.6.0

调用该方法,你可以向指定的 CDN 推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。

调用该方法后,SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告推流的状态。

Note:

  • 请确保已开通 CDN 推流服务,详见进阶功能《旁路推流》中的前提条件。
  • 请在加入频道后调用该方法。
  • 只有直播场景下的主播才能调用该方法。
  • 调用该方法推流失败后,如果你想要重新推流,那么请你务必先调用 stopRtmpStream,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。

Declared In

AgoraRtcChannel.h

– updateRtmpTranscoding:

更新转码属性。

- (int)updateRtmpTranscoding:(AgoraLiveTranscoding *_Nullable)transcoding

Parameters

transcoding

CDN 直播推流的转码属性,详见 LiveTranscoding 类。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Availability

v3.6.0

开启转码推流后,你可以根据场景需求,动态更新转码属性。转码属性更新后,SDK 会触发 rtcChannelTranscodingUpdated 回调。

Declared In

AgoraRtcChannel.h

– stopRtmpStream:

结束 CDN 直播推流。

- (int)stopRtmpStream:(NSString *_Nonnull)url

Parameters

url

CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Availability

v3.6.0

调用该方法,你可以结束指定的 CDN 推流地址上的直播。该方法每次只能结束一个推流地址上的直播,如果你需要结束多个推流地址的直播,则需多次调用该方法。

调用该方法后,SDK 会在本地触发 rtmpStreamingChangedToState 回调,报告推流的状态。

Declared In

AgoraRtcChannel.h

– createDataStream:reliable:ordered:

创建数据流。

- (int)createDataStream:(NSInteger *_Nonnull)streamId reliable:(BOOL)reliable ordered:(BOOL)ordered

Parameters

streamId

(输出参数)数据流 ID

reliable
  • YES: 接收方 5 秒内会收到发送方所发送的数据,否则会收到报错信息。
  • NO: 接收方不保证收到,就算数据丢失也不会报错。
ordered
  • YES: 接收方 5 秒内会按照发送方发送的顺序收到数据包。
  • NO: 接收方不保证按照发送方发送的顺序收到数据包。

Return Value

  • 0: 创建数据流成功
  • < 0: 创建数据流失败

Discussion

Deprecated 该方法自 v3.3.0 废弃,请改用 createDataStream2。

该方法用于创建数据流。AgoraRtcChannel 生命周期内,每个用户最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 App 报错。 目前声网 Native SDK 支持 99% 可靠和 100% 有序的数据传输。

Note:

  • 该方法需要在加入频道后调用。
  • 不可将 reliable 设为 YES 且将 ordered 设为 NO
  • 创建数据流后,如果你离开频道,SDK 会销毁数据流。

Declared In

AgoraRtcChannel.h

– createDataStream:config:

创建数据流。

- (int)createDataStream:(NSInteger *_Nonnull)streamId config:(AgoraDataStreamConfig *_Nonnull)config

Parameters

streamId

(输出参数)数据流 ID。

config

数据流设置:AgoraDataStreamConfig

Return Value

  • 0: 创建数据流成功
  • < 0: 创建数据流失败。

Availability

v3.3.0

该方法用于创建数据流。每个用户在每个频道内最多只能创建 5 个数据流。

该方法不支持数据可靠,接收方会丢弃超出发送时间 5 秒后的数据包。

Discussion

Note: 创建数据流后,如果你离开频道,SDK 会销毁数据流。

Declared In

AgoraRtcChannel.h

– sendStreamMessage:data:

发送数据流

- (int)sendStreamMessage:(NSInteger)streamId data:(NSData *_Nonnull)data

Parameters

streamId

数据流 ID,createDataStream 的返回值。

data

需要发送的消息

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。

成功调用该方法后,远端会触发 receiveStreamMessageFromUid 回调,远端用户可以在该回调中获取接收到的流消息;若调用失败,远端会触发 didOccurStreamMessageErrorFromUid 回调。

Note:

  • 该方法仅适用于通信场景以及直播场景下的主播用户,如果直播场景下的观众调用此方法可能会造成观众变主播。
  • 请确保在调用该方法前,已调用 createDataStream 创建了数据通道。

Declared In

AgoraRtcChannel.h

– startChannelMediaRelay:

开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。

- (int)startChannelMediaRelay:(AgoraChannelMediaRelayConfiguration *_Nonnull)config

Parameters

config

跨频道媒体流转发参数配置: AgoraChannelMediaRelayConfiguration 类。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChangedidReceiveChannelMediaRelayEvent 回调,并在回调中报告当前的跨频道媒体流转发状态和事件。

  • 如果 channelMediaRelayStateDidChange 回调报告 AgoraChannelMediaRelayStateRunning(2) 和 AgoraChannelMediaRelayStateIdle(0),且 didReceiveChannelMediaRelayEvent 回调报告 AgoraChannelMediaRelayEventSentToDestinationChannel(4),则表示 SDK 开始在源频道和目标频道之间转发媒体流。
  • 如果 channelMediaRelayStateDidChange 回调报告 AgoraChannelMediaRelayStateFailure(3),则表示跨频道媒体流转发出现异常。

Note

  • 请在成功加入频道后调用该方法。
  • 该方法仅对直播场景下的主播有效。
  • 成功调用该方法后,若你想再次调用该方法,必须先调用 stopChannelMediaRelay 方法退出当前的转发状态。
  • 跨频道媒体流转发功能需要联系提交工单联系技术支持开通。
  • 该功能不支持 String 型 UID。

Declared In

AgoraRtcChannel.h

– updateChannelMediaRelay:

更新媒体流转发的频道。成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。

- (int)updateChannelMediaRelay:(AgoraChannelMediaRelayConfiguration *_Nonnull)config

Parameters

config

跨频道媒体流转发参数配置: AgoraChannelMediaRelayConfiguration 类。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

成功调用该方法后,SDK 会触发 didReceiveChannelMediaRelayEvent 回调,并在回调中报告状态码 AgoraChannelMediaRelayEventUpdateDestinationChannel(7)。

Note

  • 请在成功调用 startChannelMediaRelay 方法并收到 channelMediaRelayStateDidChange (AgoraChannelMediaRelayStateRunning, AgoraChannelMediaRelayErrorNone) 后调用该方法;否则,方法调用会失败。
  • 跨频道媒体流转发最多支持 4 个目标频道。如果直播间里已经有 4 个频道了,你可以在调用该方法之前,调用 AgoraChannelMediaRelayConfiguration 中的 removeDestinationInfoForChannelName 方法移除不需要的频道。

Declared In

AgoraRtcChannel.h

– pauseAllChannelMediaRelay

暂停向所有目标频道转发媒体流。

- (int)pauseAllChannelMediaRelay

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Availability

v3.5.1

开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法;暂停后, 如果要恢复跨频道媒体流转发,可以调用 resumeAllChannelMediaRelay 方法。

成功调用该方法后,SDK 会触发 didReceiveChannelMediaRelayEvent 回调,并在回调中报告是否成功暂停媒体流转发。

Discussion

Note: 该方法需要在 startChannelMediaRelay 后调用。

Declared In

AgoraRtcChannel.h

– resumeAllChannelMediaRelay

恢复向所有目标频道转发媒体流。

- (int)resumeAllChannelMediaRelay

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Availability

v3.5.1

调用 pauseAllChannelMediaRelay 方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。

成功调用该方法后,SDK 会触发 didReceiveChannelMediaRelayEvent 回调,并在回调中报告是否成功恢复媒体流转发。

Discussion

Note: 该方法需要在 pauseAllChannelMediaRelay 后调用。

Declared In

AgoraRtcChannel.h

– stopChannelMediaRelay

停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。

- (int)stopChannelMediaRelay

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

Discussion

成功调用该方法后,SDK 会触发 channelMediaRelayStateDidChange 回调。如果报告 AgoraChannelMediaRelayStateIdle(0) 和 AgoraChannelMediaRelayErrorNone(0),则表示已停止转发媒体流。

Note: 如果该方法调用不成功,SDK 会触发 channelMediaRelayStateDidChange 回调,并报告错误码 AgoraChannelMediaRelayErrorServerNoResponse(2) 或 AgoraChannelMediaRelayEventUpdateDestinationChannelRefused(8)。你可以调用 leaveChannel 方法离开频道,跨频道媒体流转发会自动停止。

Declared In

AgoraRtcChannel.h

– enableRemoteSuperResolution:enabled:

开启/关闭远端视频超分辨率。(beta 功能)

- (int)enableRemoteSuperResolution:(NSUInteger)uid enabled:(BOOL)enabled

Parameters

uid

远端用户 ID。

enabled

是否对远端视频开启超级分辨率:

  • YES: 开启。
  • NO: 关闭。

Return Value

  • 0: 方法调用成功。
  • < 0: 方法调用失败。

    • -157(AgoraErrorCodeModuleNotFound): 未集成超分辨率动态库。

Availability

v3.5.1

该功能可以有效地提升本地用户看到的远端视频画面的分辨率。远端用户视频的原始分辨率为 a × b, 开启该功能后,本地设备会以 2a × 2b 的分辨率显示该远端视频。

调用该方法后,SDK 会触发 superResolutionEnabledOfUid 回调报告超分辨率是否成功开启。

Warning

超分辨率功能会额外耗费系统资源。为平衡视觉体验和系统消耗,只可以对一个远端用户开启超分辨率, 并且远端用户视频的原始分辨率不能超过 640 × 480。

Note

  • 该方法仅适用于 iOS 平台。
  • 调用该方法前,请确保你已经将 AgoraSuperResolutionExtension.xcframework 动态库集成到项目中。
  • 该方法对用户设备具有一定要求,声网推荐你使用如下或更好的 iOS 设备(系统版本 12 或之后):

    • iPhone XR
    • iPhone XS
    • iPhone XS Max
    • iPhone 11
    • iPhone 11 Pro
    • iPhone 11 Pro Max
    • iPhone 12
    • iPhone 12 mini
    • iPhone 12 Pro
    • iPhone 12 Pro Max
    • iPhone 12 SE(第二代)
    • iPad Pro 11-inch(第三代)
    • iPad Pro 12.9-inch(第三代)
    • iPad Air(第三代)
    • iPad Air(第四代)

Discussion

Deprecated: 该方法自 v3.7.1 废弃,请改用 enableRemoteSuperResolution 方法。

Declared In

AgoraRtcChannel.h

– enableRemoteSuperResolution:mode:uid:

开启/关闭远端视频超分辨率。(beta 功能)

- (int)enableRemoteSuperResolution:(BOOL)enabled mode:(AgoraVideoSRMode)mode uid:(NSUInteger)uid

Parameters

enabled

是否对远端视频开启超级分辨率:

  • YES: 开启。
  • NO: 关闭。
mode

超分辨率的模式。详见 AgoraVideoSRMode

uid

远端用户 ID。该参数仅在 modeAgoraVideoSRModeManual(0) 时生效。

Return Value

  • 0: 方法调用成功
  • < 0: 方法调用失败

    • -157(AgoraErrorCodeModuleNotFound): 尚未集成超分辨率动态库。

Availability

v3.7.1

该功能可以有效地提升用户看到的远端视频画面的分辨率,即对接收到的某个远端用户的视频宽和高均扩大为 2 倍像素。

调用该方法后,SDK 会触发 superResolutionEnabledOfUid 回调报告超分辨率是否成功开启。

Discussion

Note: 调用该方法前,请确保你已经将 AgoraSuperResolutionExtension.xcframework 动态库集成到项目中。

使用限制: 超分辨率功能会额外耗费系统资源。为平衡视觉体验和系统消耗,该功能有如下使用限制:

  • 只可以对一个远端用户开启超分辨率。
  • 远端用户视频的原始分辨率不能超过 640 × 360。
  • 该功能不支持在部分低端机型上开启。

Declared In

AgoraRtcChannel.h

– setRemoteVideoRenderer:forUserId:

自定义 AgoraRtcChannel 对象的远端视频渲染器。

- (void)setRemoteVideoRenderer:(id<AgoraVideoSinkProtocol> _Nullable)videoRenderer forUserId:(NSUInteger)userId

Parameters

videoRenderer

自定义的视频渲染器,详见 AgoraVideoSinkProtocol

userId

远端用户的 ID。

Discussion

自定义远端视频渲染器,表示自定义渲染远端用户看到的本地视频画面。实时音视频互动过程中,SDK 通常会启动默认的视频渲染器进行视频渲染。多频道场景下,当需要自定义视频渲染器时,你可以先通过 AgoraVideoSinkProtocol 自定义渲染器,然后调用该方法将自定义的渲染器添加到 AgoraRtcChannel 中。

该方法在加入频道前后都能调用。如果在加入频道前调用,需要自行维护远端用户的 uid

Declared In

AgoraRtcChannel.h

– remoteVideoRendererOfUserId:

获取 AgoraRtcChannel 对象里自定义的远端视频渲染器。

- (id<AgoraVideoSinkProtocol> _Nullable)remoteVideoRendererOfUserId:(NSUInteger)userId

Parameters

userId

远端用户的 ID。

Return Value

自定义的远端视频渲染器,详细定义见 AgoraVideoSinkProtocol

Declared In

AgoraRtcChannel.h

– setMediaMetadataDataSource:withType:

设置媒体附属信息的 Data source

- (BOOL)setMediaMetadataDataSource:(id<AgoraMediaMetadataDataSource> _Nullable)metadataDataSource withType:(AgoraMetadataType)type

Parameters

metadataDataSource

AgoraMediaMetadataDataSource 协议。

type

附属信息的数据类型,详见 AgoraMetadataType。目前仅支持视频类的附属信息。

Return Value

  • YES: 方法调用成功
  • NO: 方法调用失败

Discussion

设置媒体附属信息的 Data source。你需要在该方法中实现一个 AgoraMediaMetadataDataSource 协议,并指定附属信息的数据类型。

该接口可以与 setMediaMetadataDelegate 接口搭配使用,在直播场景中实现发送商品链接、分发优惠券、发送答题等功能,构建更为丰富的直播互动方式。

Note: 请在调用 joinChannelByToken 加入频道前调用该方法

Declared In

AgoraRtcChannel.h

– setMediaMetadataDelegate:withType:

设置媒体附属信息的 Delegate

- (BOOL)setMediaMetadataDelegate:(id<AgoraMediaMetadataDelegate> _Nullable)metadataDelegate withType:(AgoraMetadataType)type

Parameters

metadataDelegate

AgoraMediaMetadataDelegate 协议。

type

附属信息的数据类型,详见 AgoraMetadataType。目前仅支持视频类的附属信息。

Return Value

  • YES: 方法调用成功
  • NO: 方法调用失败

Discussion

设置媒体附属信息的 Delegate。你需要在该方法中实现一个 AgoraMediaMetadataDelegate 协议,并指定附属信息的数据类型。

Note: 请在调用 joinChannelByToken 加入频道前调用该方法

Declared In

AgoraRtcChannel.h