API 概览
声网通过全球部署的 SD-RTN™,提供可以灵活搭配的 API 组合,实现质量可靠的实时音视频通信。
初始化相关
| 方法/回调 | 描述 |
|---|---|
| sharedEngineWithAppId:delegate: | 创建并初始化 AgoraRtcEngineKit。 |
| sharedEngineWithConfig:delegate: | 创建并初始化 AgoraRtcEngineKit。 |
| destroy | 销毁 AgoraRtcEngineKit 对象。 |
| destroy: | 销毁 AgoraRtcEngineKit 实例并释放相关资源。 |
频道相关
发布和订阅
音频基础功能
| 方法/回调 | 描述 |
|---|---|
| adjustUserPlaybackSignalVolume:volume: | 调节本地播放的指定远端用户信号音量。 |
| adjustUserPlaybackSignalVolumeEx:volume:connection: | 调节本地播放的指定远端用户信号音量。 |
| adjustPlaybackSignalVolume: | 调节本地播放的所有远端用户信号音量。 |
| enableAudio | 启用音频模块。 |
| disableAudio | 关闭音频模块。 |
| enableAudioVolumeIndication:smooth:reportVad: | 启用用户音量提示。 |
| enableAudioVolumeIndicationEx:smooth:reportVad:connection: | 启用用户音量提示。 |
| setAudioProfile: | 设置音频编码属性。 |
| setAudioScenario: | 设置音频场景。 |
| setAudioSessionOperationRestriction: | 设置 SDK 对 Audio Session 的操作权限。 |
| rtcEngine:reportAudioVolumeIndicationOfSpeakers:totalVolume: | 用户音量提示回调。 |
| rtcEngine:activeSpeaker: | 监测到远端最活跃用户回调。 |
| rtcEngine:localAudioStateChanged:reason: | 本地音频状态发生改变回调。 |
| rtcEngine:firstLocalAudioFramePublished: | 已发布本地音频首帧回调。 |
| rtcEngine:firstRemoteAudioFrameOfUid:elapsed: | 已接收远端音频首帧回调。 |
| rtcEngine:didAudioMuted:byUid: | 远端用户(通信场景)/主播(直播场景)停止或恢复发送音频流回调。 |
| rtcEngine:remoteAudioStateChangedOfUid:state:reason:elapsed: | 远端音频流状态发生改变回调。 |
| rtcEngine:localAudioStats: | 通话中本地音频流的统计信息回调。 |
| rtcEngine:remoteAudioStats: | 通话中远端音频流的统计信息回调。 |
音频采集
| 方法/回调 | 描述 |
|---|---|
| enableLocalAudio: | 开启或关闭本地音频采集。 |
| adjustRecordingSignalVolume: | 调节音频采集信号音量。 |
| enableInEarMonitoring: | 开启耳返功能。 |
| enableInEarMonitoring:includeAudioFilters: | 开启耳返功能。 |
| setInEarMonitoringVolume: | 设置耳返音量。 |
音频前处理和后处理
原始音频数据
已编码音频数据
| 方法/回调 | 描述 |
|---|---|
| setAudioEncodedFrameDelegate:config: | 注册音频编码数据观测器。 |
| onRecordEncodedAudioFrame:info: | 获取本地用户的音频编码数据。 |
| onPlaybackEncodedAudioFrame:info: | 获取所有远端用户的音频编码数据。 |
| onMixedEncodedAudioFrame:info: | 获取本地和所有远端用户混音后的音频编码数据。 |
自定义音频采集和渲染
| 方法/回调 | 描述 |
|---|---|
| createCustomAudioTrack:config: | 创建一个自定义音频采集轨道。 |
| destroyCustomAudioTrack: | 销毁指定的音频轨道。 |
| enableExternalAudioSink:sampleRate:channels: | 设置外部音频渲染。 |
| pullPlaybackAudioFrameRawData:lengthInByte: | 拉取远端音频数据。 |
| pushExternalAudioFrameSampleBuffer:sampleRate:channels:trackId: | 将外部 CMSampleBuffer 音频帧通过自定义音频轨道推送到频道中。 |
| pushExternalAudioFrameRawData:samples:sampleRate:channels:trackId:timestamp: | 推送外部音频数据。 |
| pullPlaybackAudioFrameSampleBufferByLengthInByte: | 拉取 SampleBuffer 格式的远端音频数据。 |
| adjustCustomAudioPlayoutVolume:volume: | 调节自定义音频采集轨道在本地播放的音量。 |
| adjustCustomAudioPublishVolume:volume: | 调节自定义音频采集轨道在远端播放的音量。 |
| enableCustomAudioLocalPlayback:enabled: | 设置是否在本地播放外部音频源。 |
音频频谱
| 方法/回调 | 描述 |
|---|---|
| registerAudioSpectrumDelegate: | 注册音频频谱观测器。 |
| enableAudioSpectrumMonitor: | 开启音频频谱监测。 |
| disableAudioSpectrumMonitor | 关闭音频频谱监测。 |
| unregisterAudioSpectrumDelegate: | 取消注册音频频谱观测器。 |
| onLocalAudioSpectrum: | 获取本地音频频谱。 |
| onRemoteAudioSpectrum: | 获取远端音频频谱。 |
视频基础功能
视频采集
| 方法/回调 | 描述 |
|---|---|
| enableLocalVideo: | 开关本地视频采集。 |
| startCameraCapture:config: | 开始通过摄像头采集视频。 |
| stopCameraCapture: | 停止通过摄像头采集视频。 |
| setCameraStabilizationMode: | 设置摄像头防抖模式。 |
视频前处理和后处理
视频渲染
| 方法/回调 | 描述 |
|---|---|
| setRenderMode: | 设置播放器视图的渲染模式。 |
| setLocalRenderMode:mirror: | 更新本地视图显示模式。 |
| setRemoteRenderMode:mode:mirror: | 更新远端视图显示模式。 |
| setRemoteRenderModeEx:mode:mirror:connection: | 设置远端视图显示模式。 |
| setLocalRenderTargetFps | 设置本地视频渲染的最大帧率。 |
| setRemoteRenderTargetFps | 设置视频在远端渲染的最大帧率。 |
| setView: | 设置播放器渲染视图。 |
| setupLocalVideo: | 初始化本地视图。 |
| setupRemoteVideo: | 初始化远端用户视图。 |
| setupRemoteVideoEx:connection: | 初始化远端用户视图。 |
| enableInstantMediaRendering | 开启音视频帧加速渲染。 |
| startMediaRenderingTracing | 开启视频帧渲染数据打点。 |
| startMediaRenderingTracingEx: | 开启视频帧渲染数据打点。 |
| rtcEngine:didTranscodedStreamLayoutInfoUpdatedWithUserId:videoLayoutInfo: | 已接收携带布局信息的合图视频流回调。 |
| rtcEngine:videoRenderingTracingResultOfUid:currentEvent:tracingInfo: | 视频帧渲染事件回调。 |
原始视频数据
| 方法/回调 | 描述 |
|---|---|
| setVideoFrameDelegate: | 注册原始视频观测器对象。 |
| onCaptureVideoFrame:sourceType: | 获取本地设备采集到的视频数据。 |
| AgoraRtcMediaPlayer:didReceiveVideoFrame: | 已获取视频帧回调。 |
| onPreEncodeVideoFrame:sourceType: | 获取本地视频编码前的视频数据。 |
| onRenderVideoFrame:uid:channelId: | 获取远端发送的视频数据。 |
| getObservedFramePosition | 设置视频观测位置。 |
| getVideoFrameProcessMode | 设置视频处理模式。 |
| getMirrorApplied | 设置视频数据镜像。 |
| getRotationApplied | 设置视频数据旋转。 |
| getVideoFormatPreference | 设置 SDK 输出的原始视频数据格式。 |
已编码视频数据
| 方法/回调 | 描述 |
|---|---|
| setEncodedVideoFrameDelegate: | 为编码后的视频图像注册视频帧接收观测器。 |
| onEncodedVideoFrameReceived:length:info: | 报告接收端已收到远端发送的待解码视频帧。 |
自定义视频采集和渲染
| 方法/回调 | 描述 |
|---|---|
| createCustomVideoTrack | 创建一个自定义的视频轨道。 |
| destroyCustomVideoTrack: | 销毁指定的视频轨道。 |
| setExternalVideoSource:useTexture:sourceType: | 设置外部视频源。 |
| pushExternalVideoFrame:videoTrackId: | 将外部原始视频帧通过自定义视频轨道发布到频道中。 |
| pushExternalVideoFrame: | 推送外部原始视频帧到 SDK。 |
音乐文件播放
| 方法/回调 | 描述 |
|---|---|
| startAudioMixing:loopback:cycle: | 开始播放音乐文件。 |
| startAudioMixing:loopback:cycle:startPos: | 开始播放音乐文件。 |
| stopAudioMixing | 停止播放音乐文件。 |
| pauseAudioMixing | 暂停播放音乐文件。 |
| resumeAudioMixing | 恢复播放音乐文件。 |
| adjustAudioMixingVolume: | 调节音乐文件的播放音量。 |
| adjustAudioMixingPlayoutVolume: | 调节音乐文件在本地播放的音量。 |
| adjustAudioMixingPublishVolume: | 调节音乐文件远端播放音量。 |
| getAudioMixingPlayoutVolume | 获取音乐文件的本地播放音量。 |
| getAudioMixingPublishVolume | 获取音乐文件的远端播放音量。 |
| setAudioMixingPlaybackSpeed: | 设置当前音乐文件的播放速度。 |
| getAudioMixingDuration | 获取音乐文件总时长。 |
| getAudioMixingCurrentPosition | 获取音乐文件的播放进度。 |
| setAudioMixingPitch: | 调整本地播放的音乐文件的音调。 |
| setAudioMixingPosition: | 设置音乐文件的播放位置。 |
| setAudioMixingDualMonoMode: | 设置当前音频文件的声道模式。 |
| getAudioTrackCount | 获取当前音乐文件的音轨索引。 |
| selectAudioTrack: | 指定当前音乐文件的播放音轨。 |
| selectMultiAudioTrack:publishTrackIndex: | 选择本地播放和发送至远端的音轨。 |
| rtcEngine:audioMixingStateChanged:reasonCode: | 音乐文件的播放状态已改变回调。 |
| rtcEngine:audioMixingPositionChanged: | 音乐文件播放进度回调。 |
音效文件播放
虚拟节拍器
| 方法/回调 | 描述 |
|---|---|
| startRhythmPlayer:sound2:config: | 开启虚拟节拍器。 |
| stopRhythmPlayer | 关闭虚拟节拍器。 |
| configRhythmPlayer: | 配置虚拟节拍器。 |
| rtcEngine:didRhythmPlayerStateChanged:reason: | 虚拟节拍器状态发生改变回调。 |
媒体播放器
更多有关媒体播放器的方法,详见内置媒体播放器。
| 方法/回调 | 描述 |
|---|---|
| createMediaPlayerWithDelegate: | 创建媒体播放器实例。 |
| createMediaPlayerCacheManager | 创建 AgoraRtcMediaPlayerCacheManagerProtocol 实例。 |
| AgoraRtcMediaPlayerProtocol | 提供媒体播放器功能的类,支持多实例。 |
| AgoraRtcMediaPlayerCacheManagerProtocol | 该类提供管理媒体播放器中缓存媒体文件的方法。 |
| AgoraRtcMediaPlayerDelegate | 提供媒体播放器的回调。 |
媒体播放器缓存
| 方法/回调 | 描述 |
|---|---|
| enableAutoRemoveCache: | 设置是否开启自动清除缓存文件功能。 |
| removeAllCaches | 删除媒体播放器中所有已缓存的媒体文件。 |
| removeCacheByUri: | 删除指定的已缓存媒体文件。 |
| removeOldCache | 删除媒体播放器中近期最少使用的一个缓存媒体文件。 |
| setCacheDir: | 设置待缓存的媒体文件的储存路径。 |
| setMaxCacheFileCount: | 设置缓存媒体文件数量的上限。 |
| setMaxCacheFileSize: | 设置缓存媒体文件的总缓存大小的上限。 |
| sharedInstance | 获取 AgoraRtcMediaPlayerCacheManagerProtocol 实例。 |
| cacheDir | 获取缓存文件的储存路径。 |
| cacheFileCount | 获取当前已缓存的媒体文件的总数量。 |
| maxCacheFileCount | 获取所设置的缓存文件数量上限。 |
| maxCacheFileSize | 获取所设置的缓存文件总缓存的上限。 |
| AgoraRtcMediaPlayer:cacheStats: | 报告当前缓存中的媒体资源的相关信息。 |
版权音乐
音视频录制
| 方法/回调 | 描述 |
|---|---|
| createMediaRecorder: | 创建音视频录制对象。 |
| setMediaRecorderDelegate: | 注册 AgoraMediaRecorderDelegate 观测器。 |
| startRecording: | 开启音视频流录制。 |
| stopRecording | 停止音视频流录制。 |
| startAudioRecording:quality: | 开始客户端录音。 |
| startAudioRecordingWithConfig: | 开始客户端录音并进行录音配置。 |
| stopAudioRecording | 停止客户端录音。 |
| enableMainQueueDispatch: | 设置是否分发回调至主队列。 |
| destroyMediaRecorder: | 销毁音视频录制对象。 |
| mediaRecorder:stateDidChanged:uid:state:reason: | 录制状态发生改变回调。 |
| mediaRecorder:informationDidUpdated:uid:info: | 录制信息更新回调。 |
跨频道媒体流转发
| 方法/回调 | 描述 |
|---|---|
| startOrUpdateChannelMediaRelay: | 开始或更新跨频道媒体流转发。 |
| startOrUpdateChannelMediaRelayEx:connection: | 开始或更新跨频道媒体流转发。 |
| stopChannelMediaRelay | 停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。 |
| stopChannelMediaRelayEx: | 停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。 |
| pauseAllChannelMediaRelay | 暂停向所有目标频道转发媒体流。 |
| pauseAllChannelMediaRelayEx: | 暂停向所有目标频道转发媒体流。 |
| resumeAllChannelMediaRelay | 恢复向所有目标频道转发媒体流。 |
| resumeAllChannelMediaRelayEx: | 恢复向所有目标频道转发媒体流。 |
| rtcEngine:channelMediaRelayStateDidChange:error: | 跨频道媒体流转发状态发生改变回调。 |
旁路推流
| 方法/回调 | 描述 |
|---|---|
| startRtmpStreamWithoutTranscoding: | 开始非转码推流。 |
| startRtmpStreamWithoutTranscodingEx:connection: | 开始非转码推流。 |
| startRtmpStreamWithTranscoding:transcoding: | 开始旁路推流并设置转码属性。 |
| startRtmpStreamWithTranscodingEx:transcoding:connection: | 开始旁路推流并设置转码属性。 |
| updateRtmpTranscoding: | 更新旁路推流转码属性。 |
| updateRtmpTranscodingEx:connection: | 更新旁路推流转码属性。 |
| stopRtmpStream: | 结束旁路推流。 |
| stopRtmpStreamEx:connection: | 结束旁路推流。 |
| rtcEngine:rtmpStreamingEventWithUrl:eventCode: | 旁路推流事件回调。 |
| rtcEngine:rtmpStreamingChangedToState:state:reason: | 旁路推流状态发生改变回调。 |
| rtcEngineTranscodingUpdated: | 旁路推流转码设置已被更新回调。 |
直推 CDN
| 方法/回调 | 描述 |
|---|---|
| startDirectCdnStreaming:publishUrl:mediaOptions: | 设置主播端开始直接向 CDN 推流。 |
| stopDirectCdnStreaming | 设置主播端停止直接向 CDN 推流。 |
| setDirectCdnStreamingAudioConfiguration: | 设置主播端直接向 CDN 推流时的音频编码属性。 |
| setDirectCdnStreamingVideoConfiguration: | 设置主播端直接向 CDN 推流时的视频编码属性。 |
| onDirectCdnStreamingStateChanged:reason:message: | CDN 推流状态改变回调。 |
| onDirectCdnStreamingStats: | CDN 推流统计数据回调。 |
数据流
| 方法/回调 | 描述 |
|---|---|
| createDataStream:reliable:ordered: | 创建数据流。 |
| createDataStream:config: | 创建数据流。 |
| createDataStreamEx:config:connection: | 创建数据流。 |
| sendStreamMessage:data: | 发送数据流。 |
| rtcEngine:receiveStreamMessageFromUid:streamId:data: | 接收到对方数据流消息的回调。 |
| rtcEngine:didOccurStreamMessageErrorFromUid:streamId:error:missed:cached: | 接收对方数据流消息发生错误的回调。 |
Metadata (SEI)
| 方法/回调 | 描述 |
|---|---|
| setMediaMetadataDelegate:withType: | 注册媒体 metadata 观测器用于接收或发送 metadata。 |
| setMediaMetadataDataSource:withType: | 设置 metadata 的 Data source。 |
| metadataMaxSize | 请求最大的 metadata 大小。 |
| readyToSendMetadataAtTimestamp:sourceType: | 发送端已准备好发送 metadata。 |
| AgoraRtcMediaPlayer:didReceiveData:length: | 报告已获取媒体附属信息。 |
| didMetadataReceived: | 接收端已收到 metadata。 |
音频路由
| 方法/回调 | 描述 |
|---|---|
| setDefaultAudioRouteToSpeakerphone: | 设置默认的音频路由。 |
| setEnableSpeakerphone: | 开启或关闭扬声器播放。 |
| isSpeakerphoneEnabled | 检查扬声器状态启用状态。 |
| rtcEngine:didAudioRouteChanged: | 音频路由已发生变化回调。 |
视频设备管理
| 方法/回调 | 描述 |
|---|---|
| enableMultiCamera:config: | 开启或关闭多路摄像头采集。 |
| switchCamera | 切换前置/后置摄像头。 |
| setCameraCapturerConfiguration: | 设置摄像头采集配置。 |
| isCameraZoomSupported | 检测设备是否支持摄像头缩放功能。 |
| cameraMaxZoomFactor | 获取摄像头支持的最大放大倍率。 |
| setCameraZoomFactor: | 设置摄像头放大比例。 |
| isCameraTorchSupported | 检测设备是否支持闪光灯常开。 |
| setCameraTorchOn: | 设置是否打开闪光灯。 |
| isCameraExposureSupported | 查询当前摄像头是否支持曝光调节。 |
| setCameraExposureFactor: | 设置当前摄像头的曝光系数。 |
| setCameraFocusPositionInPreview: | 设置手动对焦位置,并触发对焦。 |
| isCameraAutoFocusFaceModeSupported | 检测设备是否支持人脸对焦功能。 |
| setCameraAutoFocusFaceModeEnabled: | 设置是否开启人脸对焦功能。 |
| isCameraExposurePositionSupported | 检测设备是否支持手动曝光功能。 |
| isCameraAutoExposureFaceModeSupported | 检测设备是否支持自动曝光功能。 |
| setCameraExposurePosition: | 设置手动曝光位置。 |
| setCameraAutoExposureFaceModeEnabled | 设置是否开启自动曝光功能。 |
| rtcEngine:cameraFocusDidChangedToRect: | 相机对焦区域已改变回调。 |
| rtcEngine:cameraExposureDidChangedToRect: | 摄像头曝光区域已改变回调。 |
| queryCameraFocalLengthCapability | 查询摄像头支持的焦距能力。 |
| queryCodecCapability | 查询 SDK 支持的视频编解码能力。 |
音频设备管理
| 方法/回调 | 描述 |
|---|---|
| startPlaybackDeviceTest: | 启动音频播放设备测试。 |
| stopPlaybackDeviceTest | 停止音频播放设备测试。 |
| startRecordingDeviceTest: | 启动音频采集设备测试。 |
| stopRecordingDeviceTest | 停止音频采集设备测试。 |
插件相关
| 方法/回调 | 描述 |
|---|---|
| registerExtensionWithVendor:extension:sourceType: | 注册插件。 |
| enableExtensionWithVendor:extension:enabled:sourceType: | 启用/禁用插件。 |
| getExtensionPropertyWithVendor:extension:key: | 获取插件的详细信息。 |
| getExtensionPropertyWithVendor:extension:key:sourceType: | 获取插件的详细信息。 |
| setExtensionPropertyWithVendor:extension:key:value: | 设置插件的属性。 |
| setExtensionProviderPropertyWithVendor:key:value: | 设置插件服务商的属性。 |
| onExtensionStartedWithContext: | 插件已启用成功回调。 |
| onExtensionStoppedWithContext: | 插件已禁用回调。 |
| onEventWithContext:key:value: | 插件事件回调。 |
| onExtensionErrorWithContext:error:message: | 插件出错回调。 |