Agora Objective-C API Overview

声网通过全球部署的虚拟网络,提供可以灵活搭配的 API 组合,为移动端到移动端以及移动端到 Web 端提供质量可靠的实时音视频通信。

方法

AgoraRtcEngineKit 是 Agora SDK 的入口类,提供所有可供 App 调用的方法。

根据方法实现的功能,我们把所有方法分为以下几类。

核心方法

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播 。

方法 功能
sharedEngineWithAppId 初始化引擎
destroy 销毁 RtcEngine 实例
setChannelProfile 设置频道模式
setClientRole 设置直播场景的用户角色
joinChannelByToken 加入频道
leaveChannel 离开频道
renewToken 更新 Token
enableWebSdkInteroperability 直播场景下打开与 Web SDK 的互通
getConnectionState 获取网络连接状态

核心音频方法

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
enableAudio 启用音频模块
disableAudio 关闭音频模块
setAudioProfile 设置音频编码配置
adjustRecordingSignalVolume 调节录音音量
adjustPlaybackSignalVolume 调节播放音量
enableAudioVolumeIndication 启用说话者音量提示
enableLocalAudio 开关本地音频采集
muteLocalAudioStream 开关本地音频发送
muteRemoteAudioStream 接收/停止接收指定音频流
muteAllRemoteAudioStreams 接收/停止接收所有音频流
setDefaultMuteAllRemoteAudioStreams 设置是否默认接收音频流

核心视频方法

本组方法适用于声网如下产品: 视频通话和互动直播。

方法 功能
enableVideo 启用视频模块
disableVideo 关闭视频模块
setVideoEncoderConfiguration 设置视频编码配置
setupLocalVideo 设置本地视图
setupRemoteVideo 设置远端用户视图
setLocalRenderMode 设置本地视图显示模式
setRemoteRenderMode 设置远端视图显示模式
startPreview 开启视频预览
stopPreview 停止视频预览
enableLocalVideo 开关本地视频采集
muteLocalVideoStream 开关本地视频发送
muteRemoteVideoStream 接收/停止接收指定视频流
muteAllRemoteVideoStreams 接收/停止接收所有视频流
setDefaultMuteAllRemoteVideoStreams 设置是否默认接收视频流

音频播放路由

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

本组方法仅适用于 iOS,不适用于 macOS。

方法 功能
setDefaultAudioRouteToSpeakerphone 设置默认的音频播放路由
setEnableSpeakerphone 启用/关闭扬声器播放
isSpeakerphoneEnabled 查询扬声器启用状态

耳返设置

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

本组方法仅适用于 iOS,不适用于 macOS。

方法 功能
enableInEarMonitoring 开启耳返功能
setInEarMonitoringVolume 设置耳返音量

语音音效设置

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
setLocalVoicePitch 设置本地语音音调
setLocalVoiceEqualizationOfBandFrequency 设置本地语音音效均衡
setLocalVoiceReverbOfType 设置本地音效混响

音乐文件播放及混音设置

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
startAudioMixing 开始播放音乐文件
stopAudioMixing 停止播放音乐文件
pauseAudioMixing 暂停播放音乐文件
resumeAudioMixing 恢复播放音乐文件
adjustAudioMixingVolume 调节音乐文件播放音量
adjustAudioMixingPlayoutVolume 调节音乐文件的本地播放音量。
adjustAudioMixingPublishVolume 调节音乐文件的远端播放音量。
getAudioMixingDuration 获取音乐文件播放时长
getAudioMixingCurrentPosition 获取音乐文件播放进度
setAudioMixingPosition 设置音乐文件的播放位置

音效文件播放管理

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
getEffectsVolume 获取音效文件播放音量
setEffectsVolume 设置音效文件播放音量
setVolumeOfEffect 实时调整音效文件播放音量
playEffect 播放指定音效文件
stopEffect 停止播放指定音效文件
stopAllEffects 停止播放所有音效文件
preloadEffect 将指定音效文件预加载至内存
unloadEffect 从内存释放某个预加载的音效文件
pauseEffect 暂停音效文件播放
pauseAllEffects 暂停所有音效文件播放
resumeEffect 恢复播放指定音效文件
resumeAllEffects 恢复播放所有音效文件

音频录制

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
startAudioRecording 开始客户端录音
stopAudioRecording 停止客户端录音

开启声卡采集

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
enableLoopbackRecording 开启声卡采集(仅适用于 macOS)

音频其他方法

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
setAudioSessionOperationRestriction 设置 SDK 对 Audio Session 的控制权限 (仅适用于 iOS)

网络相关测试

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
startEchoTest 开始语音通话回路测试
stopEchoTest 停止语音通话回路测试
enableLastmileTest 启用网络测试
disableLastmileTest 关闭网络测试

自定义视频模块

本组方法适用于声网如下产品: 视频通话和互动直播。

方法 功能
setVideoSource 设置自定义视频源
setLocalVideoRenderer 设置本地自定义视频渲染器
setRemoteVideoRenderer 设置远端自定义视频渲染器
videoSource 获取当前视频源
localVideoRenderer 获取本地视频渲染器
remoteVideoRendererOfUserId 获取远端视频渲染器

音频自采集(仅适用于 Push 模式)

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
enableExternalAudioSourceWithSampleRate 开启外部音频采集
disableExternalAudioSource 关闭外部音频采集
pushExternalAudioFrameRawData 推送外部原始音频帧
pushExternalAudioFrameSampleBuffer 推送外部 CMSampleBuffer 音频帧

音频自渲染

N/A

视频自采集(仅适用于 Push 模式)

本组方法适用于声网如下产品: 视频通话和互动直播。

方法 功能
setExternalVideoSource 配置外部视频源
pushExternalVideoFrame 推送外部视频帧

原始音频数据处理

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

详见修改原始音视频数据

方法 功能
setRecordingAudioFrameParametersWithSampleRate 设置录制的声音格式
setPlaybackAudioFrameParametersWithSampleRate 设置播放的声音格式
setMixedAudioFrameParametersWithSampleRate 设置录制和播放声音混音后的数据格式

原始视频数据处理

N/A

直播视频水印

本组方法仅适用于声网的互动直播产品。

方法 功能
addVideoWatermark 添加本地视频水印
clearVideoWatermarks 删除已添加的视频水印

直播音视频流回退

本组方法仅适用于声网的互动直播产品。

方法 功能
setLocalPublishFallbackOption 设置弱网条件下发布的音视频流回退选项
setRemoteSubscribeFallbackOption 设置弱网条件下订阅的音视频流回退选项

视频双流模式

本组方法适用于声网如下产品: 视频通话和互动直播。

方法 功能
enableDualStreamMode 开关视频双流模式
setRemoteVideoStream 设置订阅的视频流类型
setRemoteDefaultVideoStreamType 设置默认订阅的视频流类型

加密

本组方法适用于声网如下产品: 语音通话、视频通话和互动直播。

方法 功能
setEncryptionSecret 启用内置加密,并设置数据加密密钥
setEncryptionMode 设置内置的加密方案

直播导入在线媒体流

本组方法仅适用于声网的互动直播产品。

方法 功能
addInjectStreamUrl 导入在线媒体流 URL
removeInjectStreamUrl 删除导入的在线媒体流

CDN 旁路推流

本组方法仅适用于声网的互动直播产品。

方法 功能
addPublishStreamUrl 增加旁路推流地址
removePublishStreamUrl 删除旁路推流地址
setLiveTranscoding 设置直播转码

数据流

本组方法适用于声网如下产品:语音通话、视频通话和互动直播。

方法 功能
createDataStream 创建数据流
sendStreamMessage 发送数据流

其他视频控制

本组方法适用于声网如下产品:视频通话和互动直播。

方法 功能
setVideoQualityParameters 设置视频质量偏好选项(仅适用于直播模式)
setLocalVideoMirrorMode 设置本地视频镜像模式

摄像头控制

本组方法适用于声网如下产品:视频通话和互动直播。

本组方法仅适用于 iOS,不适用于 macOS。

方法 功能
switchCamera 切换前置/后置摄像头
isCameraZoomSupported 检测设备是否支持摄像头缩放功能
isCameraTorchSupported 检测设备是否支持闪光灯常开
isCameraFocusPositionInPreviewSupported 检测设备是否支持手动对焦功能
isCameraExposurePositionSupported 检测设备是否支持手动曝光功能
isCameraAutoFocusFaceModeSupported 检测设备是否支持人脸对焦功能
setCameraZoomFactor 设置摄像头缩放比例
setCameraFocusPositionInPreview 设置手动对焦位置,并触发对焦
setCameraExposurePosition 设置手动曝光位置
setCameraTorchOn 设置是否打开闪光灯
setCameraAutoFocusFaceModeEnabled 设置是否开启人脸对焦功能

屏幕共享

本组方法适用于声网如下产品: 视频通话和互动直播。

本组方法仅适用于macOS,不适用于 iOS。

方法 功能
startScreenCapture 开始屏幕共享
stopScreenCapture 停止屏幕共享
updateScreenCaptureRegion 更新屏幕共享区域

音视频设备管理

本组方法仅适用于 macOS,不适用于 iOS。

方法 功能
monitorDeviceChange 监控设备改变
enumerateDevices 获取系统中所有的音视频设备
getDeviceInfo 获取当前设备名称
setDevice 指定设备
getDeviceVolume 获取设备音量
setDeviceVolume 设置设备音量
startRecordingDeviceTest 启动麦克风测试
stopRecordingDeviceTest 停止麦克风测试
startPlaybackDeviceTest 启动播放设备测试
stopPlaybackDeviceTest 停止播放设备测试
startCaptureDeviceTest 启动视频采集设备测试
stopCaptureDeviceTest 停止视频采集设备测试

其他方法

本组方法适用于声网如下产品: 视频通话和互动直播。

方法 功能
getCallId 获取通话 ID
rate 给通话评分
complain 投诉通话质量
enableMainQueueDispatch 分发/不分发回调至主队列
getSdkVersion 查询 SDK 版本号
setLogFile 设置日志文件
setLogFilter 设置日志输出等级
getNativeHandle 获取 SDK 引擎的 C++ 句柄
delegate 设置/获取回调事件

定制方法 (Technical Preview)

方法 功能
setParameters 通过 JSON 配置 SDK 提供技术预览或特别定制功能
getParameter 获取 Agora SDK 可供自定义的参数

回调

AgoraRtcEngineDelegate 接口类采用 Delegate 方法向 App 发送回调通知。

核心事件回调

回调 事件
didOccurWarning 发生警告
didOccurError 发生错误
didApiCallExecute API 方法已执行
didJoinChannel 已加入频道
didRejoinChannel 已重新加入频道
didLeaveChannel 已离开频道
didClientRoleChanged 用户角色已切换
didJoinedOfUid 远端用户已加入频道
didOfflineOfUid 远端用户已离开频道
connectionChangedToState 网络连接状态已改变
rtcEngineConnectionDidLost 网络连接丢失
tokenPrivilegeWillExpire Token 服务即将过期
rtcEngineRequestToken Token 已过期

媒体事件回调

回调 事件
didMicrophoneEnabled 麦克风状态已改变
reportAudioVolumeIndicationOfSpeakers 提示频道内谁在说话以及说话者的音量
activeSpeaker 监测到活跃用户
firstLocalAudioFrame 已发送本地音频首帧
firstRemoteAudioFrameOfUid 已接收远端音频首帧
rtcEngineVideoDidStop 视频功能已停止
firstLocalVideoFrameWithSize 已发送本地视频首帧
firstRemoteVideoDecodedOfUid 已完成远端视频首帧解码
firstRemoteVideoFrameOfUid 已显示远端视频首帧
didAudioMuted 远端用户音频已静音/取消静音
didVideoMuted 远端用户暂停/重新发送视频流
didVideoEnabled 远端用户启用/关闭视频功能
didLocalVideoEnabled 远端用户启用/关闭本地视频
videoSizeChangedOfUid 本地或远端视频大小和旋转信息发生改变
remoteVideoStateChangedOfUid 远端用户视频流状态发生改变

音视频流回退事件回调

回调 事件
didLocalPublishFallbackToAudioOnly 本地发布流已回退为音频流或恢复为音视频流
didRemoteSubscribeFallbackToAudioOnly 远端订阅流已回退为音频流或恢复为音视频流

媒体设备事件回调

回调 事件
stateChanged 设备状态改变(仅适用于 macOS)
didAudioRouteChanged 语音路由已改变
rtcEngineCameraDidReady 摄像头启用
cameraFocusDidChangedToRect 摄像头对焦区域已改变(仅适用于 iOS)
cameraExposureDidChangedToRect 摄像头曝光区域已改变(仅适用于 iOS)

数据统计事件回调

回调 事件
remoteAudioStats 报告通话中远端音频流的统计信息
reportRtcStats 报告 Rtc Engine 统计信息
lastmileQuality 报告本地用户的网络质量
networkQuality 报告网络上下行质量
localVideoStats 报告本地视频统计信息
remoteVideoStats 报告远端视频统计信息
audioTransportStatsOfUid 报告远端音频传输统计信息
videoTransportStatsOfUid 报告远端视频传输统计信息

音频播放事件回调

回调 事件
rtcEngineLocalAudioMixingDidFinish 本地音乐文件播放已结束
rtcEngineRemoteAudioMixingDidStart 远端音乐文件播放已开始
rtcEngineRemoteAudioMixingDidFinish 远端音乐文件播放已结束
rtcEngineDidAudioEffectFinish 本地音效文件播放已结束

CDN 旁路推流事件回调

回调 事件
streamPublishedWithUrl 旁路推流已开启
streamUnpublishedWithUrl 旁路推流已停止
rtcEngineTranscodingUpdated 旁路推流设置已被更新

直播导入在线媒体流事件回调

回调 事件
streamInjectedStatusOfUrl 导入在线媒体流状态

数据流事件回调

回调 事件
receiveStreamMessageFromUid 接收到对方数据流消息
didOccurStreamMessageErrorFromUid 接收对方数据流消息发生错误

原始音频数据事件回调

N/A

原始视频数据事件回调

N/A

其他回调

回调 事件
rtcEngineMediaEngineDidLoaded 媒体引擎成功加载
rtcEngineMediaEngineDidStartCall 媒体引擎成功启动

已废弃回调

从 1.1 版本开始,Agora SDK 使用 Delegate 代替原有的 Block 回调。

原有的 Block 回调被标为废弃,目前仍然可以使用,但是 Agora 建议用相应的 Delegate 方法代替。

如果同一个回调 Block 和 Delegate 方法都有定义,则 SDK 只回调 Block 方法。

回调 事件
audioVolumeIndicationBlock 提示频道内谁在说话以及说话者的音量
firstLocalVideoFrameBlock 本地首帧视频已显示
firstRemoteVideoDecodedBlock 已收到第一帧远端视频流并解码
firstRemoteVideoFrameBlock 远端首帧视频已显示
userJoinedBlock 有用户加入了频道
userOfflineBlock 有用户离开了频道(或掉线)
userMuteAudioBlock 其他用户音频已静音/取消静音
userMuteVideoBlock 其他用户停止/恢复发送视频
localVideoStatBlock 报告本地视频统计信息
remoteVideoStatBlock 报告远端视频统计信息
cameraReadyBlock 摄像头已启用
connectionLostBlock 网络连接丢失
rejoinChannelSuccessBlock 有用户重新加入频道
rtcStatsBlock 报告 Rtc Engine 统计信息
leaveChannelBlock 已离开频道
audioQualityBlock 报告语音质量
networkQualityBlock 报告频道内网络质量
lastmileQualityBlock 报告本地用户网络质量
mediaEngineEventBlock Media engine 事件