iOS

最近更新时间:2024-06-11 14:50:51

我的收藏

API 概览

频道相关接口

接口名
描述
加入频道
设置媒体选项并进入频道
离开频道
设置频道场景
设置用户角色
设置用户角色
加入频道后更新频道媒体选项。

音频相关接口

接口名
描述
取消或恢复订阅所有远端用户的音频流
取消或恢复发布本地音频流
取消或恢复订阅指定远端用户的音频流
调节本地播放的指定远端用户信号音量
调节本地播放的所有远端用户信号音量
关闭音频模块
启动音频模块
启用用户音量提示
设置音频编码属性
调节音频采集信号音量
开启耳返功能
开关本地音频采集和发布
设置耳返音量
开启或关闭扬声器播放
检查扬声器启用状态
设置默认的音频路由

视频相关接口

接口名
描述
启用视频模块
关闭视频模块
取消或恢复订阅所有远端用户的视频流
取消或恢复发布本地视频流
取消或恢复订阅指定远端用户的视频流
设置视频编码属性
开启本地摄像头的预览画面
停止摄像头预览
设置本地画面的渲染参数
设置远端画面的渲染模式
初始化本地视图
初始化远端用户视图
选切换前置/后置摄像头

事件回调

接口名
描述
直播场景下用户角色已切换回调。
直播场景下用户角色切换失败回调。
成功加入频道回调。
离开频道回调。
成功重新加入频道回调。
当前通话统计信息回调。
远端用户(通信场景)/主播(直播场景)加入当前频道回调。
远端用户(通信场景)/主播(直播场景)离开当前频道回调。
通话中远端音频流的统计信息回调。
用户音量提示回调。
已发布本地音频首帧回调。
通话中本地音频流的统计信息回调。
远端音频流状态发生改变回调。
远端用户(通信场景)/主播(直播场景)停止或恢复发送音频流回调。
已显示本地视频首帧回调。
已发布本地视频首帧回调。
渲染器已接收首帧远端视频回调。
本地视频状态发生改变回调。
本地视频流统计信息回调。
远端视频状态发生改变回调。
通话中远端视频流的统计信息回调。
本地或远端视频大小和旋转信息发生改变回调。
音频路由已发生变化回调。

三方美颜

注册原始视频观测器对象

API 详情

joinChannelByToken [1/2](加入频道)

joinChannelByToken
- (int)joinChannelByToken:(NSString * _Nullable)token
channelId:(NSString * _Nonnull)channelId
info:(NSString * _Nullable)info
uid:(NSUInteger)uid
joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))joinSuccessBlock;
详情:
该方法让用户加入通话频道,加入成功后本地会触发 didJoinChannel 回调。通信场景下的用户和直播场景下的主播加入频道后,远端会触发 didJoinedOfUid 回调。
参数:
token 用户签名(必填),当前 userId 对应的验证签名,相当于使用云服务的登录密码。具体使用方法参见: 如何使用 token。
channelId 频道名,限制长度为 64 字节。以下为支持的字符集范围(共 89 个字符):
大小写英文字母(a-z A-Z)
数字(0-9)
空格、 ! # $ % & ( ) + - : ; < = . > ? @ [ ] ^ _ { } | ~ , 。
Info (非必选项) 预留参数。
uid 用户 ID。该参数用于标识在实时音视频互动频道中的用户。
joinSuccess 加入频道后的回调。joinSuccess 优先级高于 didJoinChannel,两个同时存在时,didJoinChannel 会被忽略。需要有 didJoinChannel 回调时,请将 joinSuccess 设置为 nil。

joinChannelByToken(设置媒体选项并进入频道)

joinChannelByToken
- (int)joinChannelByToken:(NSString * _Nullable)token
channelId:(NSString * _Nonnull)channelId
uid:(NSUInteger)uid
mediaOptions:(AgoraRtcChannelMediaOptions * _Nonnull)mediaOptions
joinSuccess:(void(^ _Nullable)(NSString * _Nonnull channel, NSUInteger uid, NSInteger elapsed))joinSuccessBlock;
详情:
相比上一个 joinChannel[1/2] 方法,该方法该方法增加了 mediaOptions 参数,用于配置用户加入频道时是否自动订阅频道内所有远端音视频流。
参数:
token 用户签名(必填),当前 uid 对应的验证签名,相当于使用云服务的登录密码,具体使用方法参见: 如何使用token。
channelId 频道名,限制长度为 64 字节。以下为支持的字符集范围(共 89 个字符):
大小写英文字母(a-z A-Z)
数字(0-9)
空格、 ! # $ % & ( ) + - : ; < = . > ? @ [ ] ^ _ { } | ~ , 。
mediaOptions 频道媒体设置选项。详见 AgoraRtcChannelMediaOptions ,目前仅生效:
publishCameraTrack、publishMicrophoneTrack、clientRoleType、autoSubscribeAudio、autoSubscribeVideo、channelProfile,其他设置不生效。
uid 用户 ID。该参数用于标识在实时音视频互动频道中的用户。
joinSuccess 优先级高于 didJoinChannel,两个同时存在时,didJoinChannel 会被忽略。需要有 didJoinChannel 回调时,请将 joinSuccess 设置为 nil。

leaveChannel(离开频道)

leaveChannel
- (int)leaveChannel:(void(^ _Nullable)(AgoraChannelStats * _Nonnull stat))leaveChannelBlock;
详情:
调用该接口使用户离开当前房间,并释放摄像头、麦克风、扬声器等资源,等资源释放完毕后触发以下回调:
地:didLeaveChannelWithStats 回调。
远端:通信场景下的用户和直播场景下的主播离开频道后,远端会触发 didOfflineOfUid 回调。
参数:
leaveChannelBlock 成功离开频道的回调。leaveChannelBlock 优先级高于 didLeaveChannelWithStats,两个同时存在时,leaveChannelBlock 会被忽略。需要有 didLeaveChannelWithStats 回调时,请将 leaveChannelBlock 设置为 nil。
注意:
leaveChannelBlock,回调中的通话相关的统计信息不生效,可以通过 reportRtcStats 回调获取统计信息。

setChannelProfile(设置频道场景)

setChannelProfile
- (int)setChannelProfile:(AgoraChannelProfile)profile;
详情:
SDK 会针对不同的使用场景采用不同的优化策略,以获取最佳的音视频传输体验。
参数:
profile 频道使用场景。详见AgoraChannelProfile ,仅支持 AgoraChannelProfileCommunication 和 AgoraChannelProfileLiveBroadcasting。
注意:
该方法必须在 joinChannel 前调用和进行设置,进入频道后无法再设置。

setClientRole(设置用户角色)

setClientRole
- (int)setClientRole:(AgoraClientRole)role;
详情:
只有加入频道后才可调用该方法设置用户角色。如果您在加入频道后调用该方法切换用户角色,调用成功后:
本地触发 didClientRoleChanged。
远端触发 didJoinedOfUid 或 didOfflineOfUid 回调。
参数:
role 用户的角色:
CLIENT_ROLE_BROADCASTER (1):主播。
CLIENT_ROLE_AUDIENCE (2):观众。

setClientRole(设置直播场景下的用户角色和级别)

setClientRole
- (int)setClientRole:(AgoraClientRole)role options:(AgoraClientRoleOptions * _Nullable)options;
详情:
只有加入频道后才可调用该方法设置用户角色,该方法与 setClientRole [1/2] 效果一样,设置options参数无效。
参数:
role 用户的角色: CLIENT_ROLE_BROADCASTER (1):主播。 CLIENT_ROLE_AUDIENCE (2):观众。
options 用户具体设置,该参数无效。
注意:
该方法只能修改角色,option 参数无效。

updateChannelWithMediaOptions(加入频道后更新频道媒体选项)

updateChannelWithMediaOptions
- (int)updateChannelWithMediaOptions:(AgoraRtcChannelMediaOptions* _Nonnull)mediaOptions;
参数:
mediaOptions 媒体选项,详见 AgoraRtcChannelMediaOptions
注意:
mediaOptions 参数目前仅支持配置 publishCameraTrack、publishMicrophoneTrack、clientRoleType,其他设置不生效。

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

muteAllRemoteAudioStreams
- (int)muteAllRemoteAudioStreams:(BOOL)mute;
详情:
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流。
参数:
mute 是否取消订阅所有远端用户的音频流:
true: 取消订阅所有远端用户的音频流。
false:(默认)订阅所有远端用户的音频流。

muteLocalAudioStream(取消或恢复发布本地音频流)

muteLocalAudioStream
- (int)muteLocalAudioStream:(BOOL)mute;
详情:
成功调用该方法后,远端会触发 onUserMuteAudio 回调和 onRemoteAudioStateChanged 回调。
参数:
mute 是否取消订阅所有远端用户的音频流:
true: 取消发布本地音频流。
false:发布本地音频流。

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

muteRemoteAudioStream
- (int)muteRemoteAudioStream:(NSUInteger)uid mute:(BOOL)mute;
详情:
成功调用该方法后,远端会触发 onUserMuteAudio 回调和 onRemoteAudioStateChanged 回调。
参数:
uid 指定用户的用户 ID。
mute 是否取消订阅所有远端用户的音频流:
true: 取消订阅指定用户的音频流。
false:(默认)订阅指定用户的音频流。
注意:
该方法需要在加入频道后调用。

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

adjustUserPlaySignalVolume
- (int)adjustUserPlaybackSignalVolume:(NSUInteger)uid volume:(int)volume;
详情:
您可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。
参数:
uid 指定用户的用户 ID。
volume 音量范围为 [0,100]。

adjustPlaybackSignalVolume(调节本地播放的所有远端用户信号音量)

adjustPlaybackSignalVolume
- (int)adjustPlaybackSignalVolume:(NSInteger)volume;
详情:
调节本地播放的所有远端用户信号音量。
参数:
volume 音量,取值范围为 [0,400]。

disableAudio(关闭音频模块)

disableAudio
- (int)disableAudio;
详情:
调用该接口后,音频相关接口将不生效。

enableAudio(启动音频模块)

enableAudio
- (int)enableAudio;
详情:
开启音频模块,调用该方法后,音频相关接口将生效。

enableAudioVolumeIndication(启用用户音量提示)

enableAudioVolumeIndicatio
- (int)enableAudioVolumeIndication:(NSInteger)interval
smooth:(NSInteger)smooth
reportVad:(BOOL)reportVad;
详情:
该方法允许 SDK 定期向 App 报告本地发流用户和远端的音量相关信息。启用该方法后,无论当前房间中是否有人说话,SDK 都会按照您设定的时间间隔定时抛出此reportAudioVolumeIndicationOfSpeakers 回调。
参数:
interval 回调的触发间隔,单位为毫秒。
≤ 0: 关闭回调。
> 0: 返回音量提示的间隔,单位为毫秒,最小间隔为 100ms,推荐值:300ms。
smooth 平滑系数,该参数目前不生效。
reportVad 是否开启本地人声检测功能,在 enableLocalAudio 之前调用才可以生效。

setAudioProfile(设置音频编码属性)

setAudioProfile
- (int)setAudioProfile:(AgoraAudioProfile)profile;
参数:
profile 音频编码属性,包含采样率、码率、编码模式和声道数。
注意:
该接口仅在进房前调用才会生效。

adjustRecordingSignalVolume(调节音频采集信号音量)

adjustRecordingSingalVolume
- (int)adjustRecordingSignalVolume:(NSInteger)volume;
参数:
volume 音量,取值范围为 [0,400]。

enableInEarMonitoring(开启耳返功能)

enableInEarMonitoring
- (int)enableInEarMonitoring:(BOOL)enabled;
详情:
成功调用该方法后,开启耳返功能
参数:
enabled 开启/关闭耳返功能:
true: 开启耳返功能。
false: (默认)关闭耳返功能。

enableLocalAudio(开关本地音频采集和发布)

enableLocalAudio
- (int)enableLocalAudio:(BOOL)enabled;
详情:
SDK 默认不开启麦克风,当用户需要发布本地音频时,需要调用该接口开启麦克风采集,并将音频编码并发布到当前的房间中。开启本地音频的采集和发布后,房间中的其他用户会收到 didAudioMuted 的通知。
参数:
enabled 开启/关闭本地音频采集:
true: 开启。
false: 关闭。

setInEarMonitoringVolume(设置耳返音量)

setInEarMonitoringVolume
- (int)setInEarMonitoringVolume:(NSInteger)volume;
详情:
该接口可设置耳返音量,取之范围[0,400]。
参数:
volume 音量大小,取值范围为[0,400],默认值:400。

setEnableSpeakerphone(开启或关闭扬声器播放)

setEnableSpeakerphone
- (int)setEnableSpeakerphone:(BOOL)enableSpeaker;
详情:
设置“音频路由”,即设置声音是从手机的扬声器还是从听筒中播放出来,因此该接口仅适用于手机等移动端设备。成功改变音频路由后,SDK 会触发 didAudioRouteChanged 回调。
参数:
enabledSpeaker 设置是否开启扬声器播放:
true: 开启。音频路由为扬声器。
false: 关闭。音频路由为听筒。

isSpeakerphoneEnabled(检查扬声器启用状态)

isSpeakerphoneEnabled
- (BOOL)isSpeakerphoneEnabled;
详情:
调用该接口可获得扬声器的状态(开启/关闭)
参数:
返回值
true: 扬声器已开启,语音会输出到扬声器。
false: 扬声器未开启,语音会输出到非扬声器(听筒,耳机等)。

setDefaultAudioRoutetoSpeakerphone(设置默认的音频路由)

setDefaultAudioRoutetoSpeakerphone
- (int)setDefaultAudioRouteToSpeakerphone:(BOOL)defaultToSpeaker;
详情:
调用该接口设置默认音频路由(听筒/扬声器)。
参数:
defaultToSpeaker 是否使用扬声器作为默认的音频路由:
true: 设置默认音频路由为扬声器。
false: 设置默认音频路由为听筒。

enableVideo(启用视频模块)

enableVideo
- (int)enableVideo;
详情:
调用该方法后,可以正常使用视频相关接口。

disableVideo(关闭视频模块)

disableVideo
- (int)disableVideo;
详情:
调用该方法后,所有的视频相关接口均不生效。

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

muteAllRemoteVideoStreams
- (int)muteAllRemoteVideoStreams:(BOOL)mute;
详情:
该接口仅暂停/恢复接收所有用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。
参数:
muted 是否取消订阅所有远端用户的视频流:
true: 取消订阅所有用户的视频流。
false:(默认)订阅所有用户的视频流。

muteLocalVideoStream(取消或恢复发布本地视频流)

muteLocalVideoStream
- (int)muteLocalVideoStream:(BOOL)mute;
详情:
成功调用该方法后,远端用户会触发 remoteVideoStateChangedOfUid(AgoraVideoRemoteStateStarting or AgoraVideoRemoteStateStopped) 回调。
参数:
muted 是否取消发送本地视频流:
true: 取消发送本地视频流。
false:(默认)发送本地视频流。

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

muteRemoteVideoStream
- (int)muteRemoteVideoStream:(NSUInteger)uid
mute:(BOOL)mute;
详情:
成功调用该方法后,会根据 userId 指定订阅远端用户的视频流
参数:
userId 指定用户的用户 ID。
muted 是否取消订阅指定远端用户的视频流:
true: 取消订阅指定用户的视频流。
false:(默认)订阅指定用户的视频流。

setVideoEncoderConfiguration(设置视频编码属性)

setVideoEncoderConfiguration
- (int)setVideoEncoderConfiguration:(AgoraVideoEncoderConfiguration * _Nonnull)config;
详情:
设置本地视频的编码属性。每一种视频编码属性对应一系列视频相关参数设置,包含分辨率、帧率和码率。
参数:
config 用于设置视频编码器的相关参数。
注意:
config仅支持dimensions、frameRate、bitrate、minbitrate、orientationMode、 mirrorMode几项配置,其他设置无效。
bitrate推荐取值:请参见TRTCVideoResolution 在各档位注释的最佳码率,也可以在此基础上适当调高。例如:TRTCVideoResolution_1280_720 对应 1200kbps 的目标码率,您也可以设置为 1500kbps 用来获得更好的观感清晰度。minVideoBitrate推荐取值:您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围。
如果您追求 弱网络下允许卡顿但要保持清晰 的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%。
如果您追求 弱网络下允许模糊但要保持流畅 的效果,可以设置 minVideoBitrate 为一个较低的数值(例如 100kbps)。
如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。

startPreview(开启本地摄像头的预览画面)

startPreview
- (int)startPreview;
详情:
在 joinChannel 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 joinChannel 之后才开始推流。在 joinChannel 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。调用该方法前,必须先调用 enableVideo开启视频功能、setupLocalVideo 初始化本地视图。

stopPreview(停止摄像头预览)

stopPreview
- (int)stopPreview;
详情:
调用 startPreview 开启预览后,如果您想关闭本地视频预览,请调用该方法。

setLocalRenderMode(设置本地画面的渲染参数)

setLocalRenderMode
- (int)setLocalRenderMode:(AgoraVideoRenderMode)mode
mirror:(AgoraVideoMirrorMode)mirror;
详情:
初始化本地用户视图后,您可以调用该方法更新本地用户视图的渲染和镜像模式。该方法只影响本地用户看到的视频画面,不影响本地发布视频。
参数:
mode 画面填充模式:
AgoraVideoRenderModeHidden:填充(画面可能会被拉伸裁剪)
AgoraVideoRenderModeFit:适应(画面可能会有黑边)
mirror 画面镜像模式。

setRemoteRenderMode(设置远端画面的渲染模式)

setRemoteRenderMode
- (int)setRemoteRenderMode:(NSUInteger)uid
mode:(AgoraVideoRenderMode)mode
mirror:(AgoraVideoMirrorMode)mirror;
详情:
初始化远端用户视图后,您可以调用该方法更新远端用户视图在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。
参数:
uId 远端用户 ID。
mode 画面填充模式:
AgoraVideoRenderModeHidden:填充(画面可能会被拉伸裁剪)
AgoraVideoRenderModeFit:适应(画面可能会有黑边)
mirror 画面镜像模式。

setupLocalVideo(初始化本地视图)

setupLocalVideo
- (int)setupLocalVideo:(AgoraRtcVideoCanvas * _Nullable)local;
详情:
该方法初始化本地视图并设置本地用户视频显示属性,只影响本地用户看到的视频画面,不影响本地发布视频。调用该方法绑定本地视频流的显示视窗(view),并设置本地用户视图的渲染模式和镜像模式。
参数:
local 本地视频显示属性。详见 AgoraRtcVideoCanvas

setupRemoteVideo(初始化远端用户视图)

setupRemoteVideo
- (int)setupRemoteVideo:(AgoraRtcVideoCanvas * _Nonnull)remote;
详情:
该方法绑定远端用户和显示视图,并设置远端用户视图在本地显示时的渲染模式和镜像模式,只影响本地用户看到的视频画面。
调用该方法时需要指定远端视频的用户 ID,一般可以在进频道前提前设置好。如果无法在加入频道前得到远端用户的 ID,可以在收到 didJoinedOfUid 回调时调用该方法。
参数:
remote 远端视频显示属性。详见 AgoraRtcVideoCanvas

switchCamera(选切换前置/后置摄像头)

switchCamera
- (int)switchCamera;
详情:
该方法必须在摄像头成功开启后调用,即 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 。

didClientRoleChanged(直播场景下用户角色已切换回调)

didClientRoleChanged
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didClientRoleChanged:(AgoraClientRole)oldRole
newRole:(AgoraClientRole)newRole newRoleOptions:(AgoraClientRoleOptions * _Nullable)newRoleOptions;
详情:
该回调是由本地用户在加入频道后调用 setClientRole 改变用户角色触发的。
参数:
oldRole 切换前的角色:
CLIENT_ROLE_BROADCASTER (1):主播。
CLIENT_ROLE_AUDIENCE (2):观众。
newRole 切换后的角色:
CLIENT_ROLE_BROADCASTER (1):主播。
CLIENT_ROLE_AUDIENCE (2):观众。
newRoleOptions 切换后的角色属性,目前总是传空。

didClientRoleChangeFailed(直播场景下切换用户角色失败回调)

didClientRoleChangeFailed
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didClientRoleChangeFailed:(AgoraClientRoleChangeFailedReason)reason currentRole:(AgoraClientRole)currentRole;
详情:
直播场景下,本地用户加入频道后调用 setClientRole [2/2] 切换用户角色失败时,SDK 会触发该回调,报告切换失败的原因和当前的用户角色。
参数:
reason 切换用户角色失败的原因,注意,该参数目前不生效。
currentRole 当前用户角色:
CLIENT_ROLE_BROADCASTER(1): 主播。主播可以发流也可以收流。
CLIENT_ROLE_AUDIENCE(2): 观众。观众只能收流不能发流。

didJoinChannel(成功加入频道回调)

didJoinChannel
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
didJoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger) elapsed;
详情:
该回调方法表示该客户端成功加入了指定的频道。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
channel 频道名。
uid 加入频道的用户 ID。
elapsed 从本地调用 joinChannel [2/2] 开始到发生此事件过去的时间(毫秒)。

didLeaveChannelWithStats(离开频道回调)

didLeaveChannelWithStats
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
didLeaveChannelWithStats:(AgoraChannelStats * _Nonnull)stats;
详情:
App 调用 leaveChannel 方法时,SDK 提示 App 离开频道成功。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
stats 通话的统计数据: 该参数无效。
说明:
stats参数实际无效,可以通过reportRtcStats回调获取。

didRejoinChannel(成功重新加入频道回调)

didRejoinChannel
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
didRejoinChannel:(NSString * _Nonnull)channel withUid:(NSUInteger)uid elapsed:(NSInteger) elapsed;
详情:
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后本地触发此回调方法。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
channel 频道名。
uid 重新加入频道的用户 ID。
elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。

reportRtcStats(当前通话统计信息回调)

reportRtcStats
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
reportRtcStats:(AgoraChannelStats * _Nonnull)stats;
详情:
SDK 定期向 App 报告当前通话的统计信息,每两秒触发一次。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
stats 通话的统计数据。

didJoinedOfUid(远端用户(通信场景)/主播(直播场景)加入当前频道回调)

didJoinedOfUid
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
didJoinedOfUid:(NSUInteger)uid elapsed:(NSInteger)elapsed;
详情:
该回调用于提示有远端用户加入频道,如果加入之前,已有其他用户在频道中,新加入的用户也会收到这些已有用户加入频道的回调。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
uid 新加入频道的远端用户/主播 ID。
elapsed 从本地用户调用 joinChannel 到该回调触发的延迟(毫秒)。

didOfflineOfUid(远端用户(通信场景)/主播(直播场景)离开当前频道回调)

didOfflineOfUid
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
didOfflineOfUid:(NSUInteger)uid
reason:(AgoraUserOfflineReason)reason;
详情:
该回调用于提示有远端用户离开频道。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
uid 离线用户或主播的用户 ID。
reason 远端用户(通信场景)或主播(直播场景)下线的原因:
USER_OFFLINE_QUIT(0):用户主动离开。此时离开频道的用户会发送一个类似“再见”的消息。收到该消息是,SDK 判定该用户离开频道。
USER_OFFLINE_DROPPED(1):因过长时间收不到对方数据包,SDK 判定该远端用户超时掉线。注意:在网络连接不稳定时,该判定 可能会有误。建议使用实时消息 SDK 来做可靠的掉线检测。
USER_OFFLINE_BECOME_AUDIENCE(2):用户的角色从主播切换为观众。

remoteAudioStats(通话中远端音频流的统计信息回调)

remoteAudioStats
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
remoteAudioStats:(AgoraRtcRemoteAudioStats * _Nonnull)stats;
详情:
该回调针对每个发送音频流的远端用户/主播每 2 秒触发一次。如果远端有多个用户/主播发送音频流,该回调每 2 秒会被触发多次。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
stats 接收到的远端音频统计数据,详见 AgoraRtcRemoteAudioStats

reportAudioVolumeIndicationOfSpeakers(用户音量提示回调)

reportAudioVolumeIndicationOfSpeakers
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
reportAudioVolumeIndicationOfSpeakers:(NSArray<AgoraRtcAudioVolumeInfo *> * _Nonnull)speakers
totalVolume:(NSInteger)totalVolume;
详情:
该回调默认禁用,您可以通过 enableAudioVolumeIndication 开启。 开启后,无论当前房间中是否有人说话,SDK 都会按照您设定的时间间隔定时抛出此事件回调。每次会触发两个reportAudioVolumeIndicationOfSpeakers 回调,一个报告本地发流用户的音量相关信息,另一个报告远端用户的音量相关信息。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
speakers 用户音量信息,详见 AgoraRtcAudioVolumeInfo 数组。如果 speakers 为空,则表示远端用户不发流或没有远端用户。
totalVolume 所有远端用户的总音量大,取值范围 0 - 255。

firstLocalAudioFramePublished(已发布本地音频首帧回调)

firstLocalAudioFramePublished
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine firstLocalAudioFramePublished:(NSInteger)elapsed;
详情:
当 SDK 成功地向云端送出自己的第一帧音频数据帧以后,就会抛出 firstLocalAudioFramePublished 事件回调。在以下三个时机会触发该回调:
当您成功进入房间并通过 enableLocalAudio 开启本地音频采集之后。
调用 muteLocalVideoStream(YES),再调用 muteLocalVideoStream(NO) 后。
在房间内,调用 disableVideo,再调用 enableVideo 后。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。

localAudioStats(通话中本地音频流的统计信息回调)

localAudioStats
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
localAudioStats:(AgoraRtcLocalAudioStats * _Nonnull)stats;
详情:
SDK 每 2 秒触发该回调一次。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
stats 本地音频统计数据。详见 AgoraRtcLocalAudioStats

remoteAudioStateChangedOfUid(远端音频流状态发生改变回调)

remoteAudioStateChangedOfUid
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
remoteAudioStateChangedOfUid:(NSUInteger)uid state:(AgoraAudioRemoteState)state reason:(AgoraAudioRemoteReason)reason elapsed:(NSInteger)elapsed;
详情:
远端用户(通信场景)或主播(直播场景)的音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
uid 发生音频状态改变的远端用户 ID。
state 远端音频流状态,远端音频流状态,详见 AgoraAudioRemoteState
注意:
state仅存在AgoraAudioRemoteStateStopped、AgoraAudioRemoteStateStarting、AgoraAudioRemoteStateDecoding三个状态。
reason 远端音频流状态改变的具体原因, 详见 AgoraAudioRemoteReason
elapsed 从本地用户调用 joinChannel [2/2] 方法到发生本事件经历的时间,单位为毫秒。

didAudioMuted(远端用户(通信场景)/主播(直播场景)停止或恢复发送音频流回调)

didAudioMuted
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didAudioMuted:(BOOL)muted byUid:(NSUInteger)uid;
详情:
该回调是由远端用户调用 muteLocalAudioStream 方法关闭或开启音频发送触发的。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
uid 用户 ID。
muted 该用户是否静音:
true: 该用户已将音频静音。
false: 该用户取消了音频静音。

firstLocalVideoFrameWithSize(已显示本地视频首帧回调)

firstLocalVideoFrameWithSize
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
firstLocalVideoFrameWithSize:(CGSize)size
elapsed:(NSInteger)elapsed
sourceType:(AgoraVideoSourceType)sourceType;
详情:
本地视频首帧显示在本地视图上时,SDK 会触发此回调。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
size 本地视频首帧的宽高。
elapsed 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。
sourceType 视频源类型,详见 AgoraVideoSourceType ,目前仅实现了 AgoraVideoSourceTypeCamera 类型的流。

firstLocalVideoFramePublishedWithElapsed(已发布本地视频首帧回调)

firstLocalVideoFramePublishedWithElapsed
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
firstLocalVideoFramePublishedWithElapsed:(NSInteger)elapsed
sourceType:(AgoraVideoSourceType)sourceType;
详情:
当 SDK 成功地向云端送出自己的第一帧视频数据帧以后,就会抛出该事件回调。以下三个时机会触发该回调:
当您成功进入房间并通过 startPreview 开启本地视频采集之后。
调用 muteLocalVideoStream(YES),再调用 muteLocalVideoStream(NO) 后。
在房间内调用 disableVideo,再调用 enableVideo 后。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
elapsed 从调用 joinChannel [2/2] 方法到触发该回调的时间间隔(毫秒)。
sourceType 视频源类型,详见 AgoraVideoSourceType ,目前仅实现了AgoraVideoSourceTypeCamera类型的流。

firstRemoteVideoFrameOfUid(渲染器已接收首帧远端视频回调)

firstRemoteVideoFrameOfUid
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
firstRemoteVideoFrameOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed;
详情:
渲染器已接收首帧远端视频回调。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
uid 远端用户 ID。
size 视频流尺寸。
elapsed 从调用 joinChannel 方法到触发该回调的时间间隔(毫秒)。

localVideoStateChangedOfState(本地视频状态发生改变回调)

localVideoStateChangedOfState
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine localVideoStateChangedOfState:(AgoraVideoLocalState)state reason:(AgoraLocalVideoStreamReason)reason sourceType:(AgoraVideoSourceType)sourceType;
详情:
目前只有摄像头准备就绪时会触发该回调。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
state 本地视频状态,详见 AgoraVideoLocalState
注意:
state只会有 AgoraVideoLocalStateCapturing 这一个状态
reason 本地视频状态改变的具体原因,详见 AgoraLocalVideoStreamReason
注意:
reason只会有 AgoraLocalVideoStreamReasonOK 这一个reason。
sourceType 视频源类型,详见 AgoraVideoSourceType ,目前仅实现了 AgoraVideoSourceTypeCamera 类型的流。

localVideoStats(本地视频流统计信息回调)

localVideoStats
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
localVideoStats:(AgoraRtcLocalVideoStats * _Nonnull)stats
sourceType:(AgoraVideoSourceType)sourceType;
详情:
该回调描述本地设备发送视频流的统计信息,每 2 秒触发一次。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
stats 本地视频流统计信息。详见 AgoraRtcLocalVideoStats
source 视频源的类型。详见 AgoraVideoSourceType。目前仅实现了AgoraVideoSourceTypeCamera类型的流。

remoteVideoStateChangedOfUid(远端视频状态发生改变回调)

remoteVideoStateChangedOfUid
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
remoteVideoStateChangedOfUid:(NSUInteger)uid state:(AgoraVideoRemoteState)state reason:(AgoraVideoRemoteReason)reason elapsed:(NSInteger)elapsed;
详情:
远端视频状态发生改变回调。
参数:
engine 内部对象,注意,实际类型非AgoraRtcEngineKit。
uid 发生视频状态改变的远端用户 ID。
state 远端视频流状态。
注意:
state只有AgoraVideoRemoteStateStopped和AgoraVideoRemoteStateStarting两个状态。
reason 端视频流状态改变的具体原因,该参数不生效。
elapsed 从本地用户调用 joinChannel 方法到发生本事件经历的时间,单位为毫秒。

remoteVideoStats(通话中远端视频流的统计信息回调)

remoteVideoStats
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
remoteVideoStats:(AgoraRtcRemoteVideoStats * _Nonnull)stats;
详情:
该回调描述远端用户在通话中端到端的视频流统计信息, 针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播, 该回调每 2 秒会被触发多次。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
stats 远端视频统计数据,详见 AgoraRtcRemoteVideoStats

videoSizeChangedOfSourceType(本地或远端视频大小和旋转信息发生改变回调)

videoSizeChangedOfSourceType
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine videoSizeChangedOfSourceType:(AgoraVideoSourceType)sourceType uid:(NSString * _Nonnull)uid size:(CGSize)size rotation:(NSInteger)rotation NS_SWIFT_NAME(rtcEngine(_:videoSizeChangedOf:uid:size:rotation:));
详情:
该回调表示该路画面大小发生了调整,调整的原因可能是该用户调用了 setVideoEncoderParam 重新设置了画面尺寸。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
source 视频源的类型,详见 AgoraVideoSourceType 。目前仅实现了 AgoraVideoSourceTypeCamera 类型的流。
uid 图像尺寸和旋转信息发生变化的用户 ID
size 视频流的尺寸。
rotation 旋转信息,旋转信息,取值范围 [0,360)。
注意:
rotation参数值始终为 0。

didAudioRouteChanged(音频路由已发生变化回调)

didAudioRouteChanged
- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine didAudioRouteChanged:(AgoraAudioOutputRouting)routing;
详情:
当音频路由发生变化时,触发该回调。
参数:
engine 内部对象,注意,实际类型非 AgoraRtcEngineKit。
routing 当前的音频路由。
注意:
routing 仅存在 AgoraAudioOutputRoutingSpeakerphone、AgoraAudioOutputRoutingEarpiece 和 AgoraAudioOutputRoutingDefault 三个状态。

setVideoFrameDelegate(注册原始视频观测器对象)

setVideoFrameDelegate
- (BOOL)setVideoFrameDelegate:(id<AgoraVideoFrameDelegate> _Nullable)delegate;
详情:
设置该回调之后,SDK 会把采集到的视频帧通过您设置的 listener 回调出来,用于第三方美颜组件进行二次处理,之后 SDK 会将处理后的视频帧进行编码和发送。
参数:
observer 自定义预处理回调,当您使用 AllInOneRTCEngine 创建的实例为 TRTCCloud 类型时,需要注册TRTCVideoFrameDelegate 类,您可以根据需要注册 TRTCVideoFrameDelegate 类中的回调。在成功注册视频观测器后,SDK 会在捕捉到每个视频帧时,触发您所注册的上述回调。而当您创建的实例为 RtcEngine 时,则需要注册 AgoraVideoFrameDelegate 类。