音频观测器
介绍跟音频观测器相关的方法和回调。
getEarMonitoringAudioParams
设置 onEarMonitoringAudioFrame 回调数据的格式。
- (AgoraAudioParams* _Nonnull)getEarMonitoringAudioParams NS_SWIFT_NAME(getEarMonitoringAudioParams());
- 自从
- v4.0.1
你需要在调用 setAudioFrameDelegate 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置耳返的音频数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onEarMonitoringAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
耳返的音频数据,详见 AgoraAudioParams。
getMixedAudioParams
设置 onMixedAudioFrame 回调数据的格式。
- (AgoraAudioParams* _Nonnull)getMixedAudioParams NS_SWIFT_NAME(getMixedAudioParams());
你需要在调用 setAudioFrameDelegate 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置 SDK 采集和播放音频混音后的数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onMixedAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
SDK 采集和播放音频混音后的音频数据,详见 AgoraAudioParams。
getObservedAudioFramePosition
设置音频观测位置。
- (AgoraAudioFramePosition)getObservedAudioFramePosition NS_SWIFT_NAME(getObservedAudioFramePosition());
你可以根据场景需求,通过修改 getObservedAudioFramePosition 的返回值,设置你需要观测的某个或多个位置。
注解观测多个位置时,需要使用 |(或运算符)。为降低设备耗能,你可以根据实际需求适当减少观测位置。
返回值
- AgoraAudioFramePositionPlayback (0x0001):该位置可观测所有远端用户混音后的播放音频,对应 onPlaybackAudioFrame 回调。
- AgoraAudioFramePositionRecord (0x0002):该位置可观测采集的本地用户的音频,对应 onRecordAudioFrame 回调。
- AgoraAudioFramePositionMixed (0x0004):该位置可观测本地和所有远端用户混音后的音频,对应 onMixedAudioFrame 回调。
- AgoraAudioFramePositionBeforeMixing (0x0008):该位置可观测单个远端用户混音前的音频,对应 onPlaybackAudioFrameBeforeMixing 回调。
- AgoraAudioFramePositionEarMonitoring (0x0010):该位置可观测单个远端用户混音前的音频,对应 onEarMonitoringAudioFrame 回调。
getPlaybackAudioParams
设置 onPlaybackAudioFrame 回调数据的格式。
- (AgoraAudioParams* _Nonnull)getPlaybackAudioParams NS_SWIFT_NAME(getPlaybackAudioParams());
你需要在调用 setAudioFrameDelegate 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置 SDK 播放的音频数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onPlaybackAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
SDK 播放的音频数据,详见 AgoraAudioParams。
getRecordAudioParams
设置 onRecordAudioFrame 回调数据的格式。
- (AgoraAudioParams* _Nonnull)getRecordAudioParams NS_SWIFT_NAME(getRecordAudioParams());
你需要在调用 setAudioFrameDelegate 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置 SDK 采集的音频数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onRecordAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
SDK 采集的音频数据,详见 AgoraAudioParams。
registerAudioSpectrumDelegate
注册音频频谱观测器。
- (int)registerAudioSpectrumDelegate:(id<AgoraAudioSpectrumDelegate> _Nullable )delegate;
成功注册音频频谱观测器并调用 enableAudioSpectrumMonitor 开启音频频谱监测后,SDK 会按照你设置的时间间隔报告你在 AgoraAudioSpectrumDelegate 类中实现的回调。
参数
- delegate
-
音频频谱观测器。详见 AgoraAudioSpectrumDelegate。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
registerAudioEncodedFrameObserver
注册音频编码数据观测器。
- (int)setAudioEncodedFrameDelegate:(id<AgoraAudioEncodedFrameDelegate> _Nonnull)delegate config:(AgoraAudioEncodedFrameDelegateConfig * _Nonnull) config;
- 请在加入频道后调用该方法。
- 由于该方法和 startAudioRecording [2/2] 都会设置音频内容和音质,Agora 不推荐该方法和 startAudioRecording [2/2] 一起使用。否则,只有后调用的方法会生效。
参数
- config
- 编码后音频的观测器设置。详见 AgoraAudioEncodedFrameDelegateConfig。
- delegate
- 编码后音频的观测器。详见 AgoraAudioEncodedFrameDelegate。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
setAudioFrameDelegate
注册音频观测器对象。
- (BOOL)setAudioFrameDelegate:(id<AgoraAudioFrameDelegate> _Nullable)delegate;
该方法用于注册音频观测器对象,即注册回调。当需要 SDK 给出 onMixedAudioFrame、onRecordAudioFrame、onPlaybackAudioFrame 或 onEarMonitoringAudioFrame 等回调时,需要使用该方法注册回调。
参数
- delegate
-
接口对象实例。详见 AgoraAudioFrameDelegate。如果传入 nil,则表示取消注册。Agora 建议在收到 didLeaveChannelWithStats 后调用,来释放音频观测器对象。
返回值
YES
:方法调用成功。NO
:方法调用失败。
setMixedAudioFrameParametersWithSampleRate
设置 onMixedAudioFrame 报告的音频数据格式。
- (int)setMixedAudioFrameParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel samplesPerCall:(NSInteger)samplesPerCall;
参数
- sampleRate
-
音频数据采样率 (Hz),可设置为
8000
、16000
、32000
、44100
或48000
。
- channel
-
音频数据声道数,可设置为
1
(单声道) 或2
(双声道)。
- samplesPerCall
-
音频数据采样点数。旁路推流场景下通常设为
1024
。
SDK 会根据该方法设置的采样间隔(秒)定期触发 onMixedAudioFrame 回调。 采样间隔 = samplesPerCall
/(sampleRate
x channel
)。请确保你的取值能满足采样间隔大于或等于 0.01 秒。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
setPlaybackAudioFrameBeforeMixingParametersWithSampleRate
设置 onPlaybackAudioFrameBeforeMixing 报告的音频数据格式。
- (int)setPlaybackAudioFrameBeforeMixingParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel;
参数
- sampleRate
-
音频数据采样率 (Hz),可设置为
8000
、16000
、32000
、44100
或48000
。
- channel
-
音频数据声道数,可设置为
1
(单声道) 或2
(双声道) 。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
setPlaybackAudioFrameParametersWithSampleRate
设置播放的音频格式。
- (int)setPlaybackAudioFrameParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel mode:(AgoraAudioRawFrameOperationMode)mode samplesPerCall:(NSInteger)samplesPerCall;
该方法设置 onPlaybackAudioFrame 回调数据的格式。
- 该方法需要在加入频道前调用。
- SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onPlaybackAudioFrame 回调。
参数
- sampleRate
- onPlaybackAudioFrame 中返回数据的采样率,可设置为 8000、 16000、 32000、44100 或 48000。
- channel
-
onPlaybackAudioFrame 中返回数据的通道数,可设置为 1 或 2:
- 1: 单声道
- 2: 双声道
- mode
-
音频帧的使用模式,详见 AgoraAudioRawFrameOperationMode。
- samplesPerCall
- onPlaybackAudioFrame 中返回数据的采样点数,如旁路推流应用中通常为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
setRecordingAudioFrameParametersWithSampleRate
设置采集的原始音频数据格式。
- (int)setRecordingAudioFrameParametersWithSampleRate:(NSInteger)sampleRate channel:(NSInteger)channel mode:(AgoraAudioRawFrameOperationMode)mode samplesPerCall:(NSInteger)samplesPerCall;
该方法设置 onRecordAudioFrame 回调的采集音频格式。
- 该方法需要在加入频道前调用。
- SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onRecordAudioFrame 回调。
参数
- sampleRate
- onRecordAudioFrame 中返回数据的采样率,可设置为 8000、 16000、 32000、44100 或 48000。
- channel
-
onRecordAudioFrame 中返回数据的通道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
- mode
-
音频帧的使用模式,详见 AgoraAudioRawFrameOperationMode。
- samplesPerCall
- onRecordAudioFrame 中返回数据的采样点数,如旁路推流应用中通常为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。
unregisterAudioSpectrumDelegate
取消注册音频频谱观测器。
- (int) unregisterAudioSpectrumDelegate:(id<AgoraAudioSpectrumDelegate> _Nullable)delegate;
调用 registerAudioSpectrumDelegate 后,如果你想取消注册音频频谱观测器,请调用该方法。
参数
- delegate
- 音频频谱观测器。详见 AgoraAudioSpectrumDelegate。
返回值
- 0: 方法调用成功
- < 0: 方法调用失败
onEarMonitoringAudioFrame
获得耳返的原始音频数据。
- (BOOL)onEarMonitoringAudioFrame:(AgoraAudioFrame* _Nonnull)frame;
- 方法一:调用 setEarMonitoringAudioFrameParametersWithSampleRate 设置音频数据格式后,调用 setAudioFrameDelegate 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onEarMonitoringAudioFrame 回调。
- 方法二:调用 setAudioFrameDelegate 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getEarMonitoringAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onEarMonitoringAudioFrame 回调。
- 方法一的优先级高于方法二,如果已使用方法一设置了音频数据格式,则使用方法二的设置不生效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
didReceiveAudioFrame
已获取音频帧回调。
- (void)AgoraRtcMediaPlayer:(id<AgoraRtcMediaPlayerProtocol> _Nonnull)playerKit didReceiveAudioFrame:(CMSampleBufferRef _Nonnull)audioFrame;
注册音频数据观测器后,每次接收到一帧音频帧时,都会触发该回调,报告音频帧信息。
参数
- audioFrame
- 音频帧信息(CMSampleBufferRef)。
- playerKit
- 详见 AgoraRtcMediaPlayerProtocol。
onLocalAudioSpectrum
获取本地音频频谱。
- (BOOL)onLocalAudioSpectrum:(NSArray<NSNumber *> * _Nullable)audioSpectrumData;
成功调用 registerAudioSpectrumDelegate 实现 AgoraAudioSpectrumDelegate 中的 onLocalAudioSpectrum 回调并调用 enableAudioSpectrumMonitor 开启音频频谱监测后,SDK 会按照你设置的时间间隔触发该回调,报告编码后的本地音频数据的频谱。
参数
- audioSpectrumData
- 本地用户的音频频谱数据。Agora 将声音频率分为 256 个频域,通过该参数报告各频域的能量值,每个能量值的取值范围为 [-300,1],单位为 dBFS。
返回值
YES
: 接收。NO
: 不接收。
onMixedEncodedAudioFrame
获取本地和所有远端用户混音后的音频编码数据。
- (void)onMixedEncodedAudioFrame:(NSData* _Nonnull)frameData info:(AgoraEncodedAudioFrameInfo* _Nonnull) info;
调用 registerAudioEncodedFrameObserver 并将音频编码内容设为 AgoraAudioEncodedFrameObserverPositionMixed 后,你可以通过该回调获取本地和所有远端用户混音、编码后的音频数据。
参数
- frameData
- 音频 buffer。
- info
- 编码后音频的信息。详见 AgoraEncodedAudioFrameInfo。
onMixedAudioFrame
获取采集和播放音频混音后的数据。
- (BOOL)onMixedAudioFrame:(AgoraAudioFrame* _Nonnull)frame;
- 方法一:调用 setMixedAudioFrameParametersWithSampleRate 设置音频数据格式后,调用 setAudioFrameDelegate 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onMixedAudioFrame 回调。
- 方法二:调用 setAudioFrameDelegate 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getMixedAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onMixedAudioFrame 回调。
- 方法一的优先级高于方法二,如果使用方法一设置音频数据格式,方法二设置无效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
onPlaybackEncodedAudioFrame
获取所有远端用户的音频编码数据。
- (void)onPlaybackEncodedAudioFrame:(NSData* _Nonnull)frameData info:(AgoraEncodedAudioFrameInfo* _Nonnull) info;
调用 registerAudioEncodedFrameObserver 并将音频编码内容设为 AgoraAudioEncodedFrameObserverPositionPlayback 后,你可以通过该回调获取所有远端用户的音频编码数据。
参数
- frameData
- 音频 buffer。
- info
- 编码后音频的信息。详见 AgoraEncodedAudioFrameInfo。
onPlaybackAudioFrame
获得播放的原始音频数据。
- (BOOL)onPlaybackAudioFrame:(AgoraAudioFrame* _Nonnull)frame;
- 方法一:调用 setPlaybackAudioFrameParametersWithSampleRate 设置音频数据格式后,调用 setAudioFrameDelegate 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onPlaybackAudioFrame 回调。
- 方法二:调用 setAudioFrameDelegate 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getPlaybackAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onPlaybackAudioFrame 回调。
- 方法一的优先级高于方法二,如果使用方法一设置音频数据格式,方法二设置无效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
onPlaybackAudioFrameBeforeMixing
获得混音前的指定用户的声音。
- (BOOL)onPlaybackAudioFrameBeforeMixing:(AgoraAudioFrame* _Nonnull)frame uid:(NSUInteger)uid;
参数
- uid
- 指定用户的用户 ID。
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
onRecordEncodedAudioFrame
获取本地用户的音频编码数据。
- (void)onRecordEncodedAudioFrame:(NSData* _Nonnull)frameData info:(AgoraEncodedAudioFrameInfo* _Nonnull) info;
调用 registerAudioEncodedFrameObserver 并将音频编码内容设为 AgoraAudioEncodedFrameObserverPositionRecord 后,你可以通过该回调获取本地用户的音频编码数据。
参数
- frameData
- 音频 buffer。
- info
- 编码后音频的信息。详见 AgoraEncodedAudioFrameInfo。
onRecordAudioFrame
获得采集的原始音频数据。
- (BOOL)onRecordAudioFrame:(AgoraAudioFrame* _Nonnull)frame;
- 方法一:调用 setRecordingAudioFrameParametersWithSampleRate 设置音频数据格式后,调用 setAudioFrameDelegate 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onRecordAudioFrame 回调。
- 方法二:调用 setAudioFrameDelegate 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getRecordAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onRecordAudioFrame 回调。
- 方法一的优先级高于方法二,如果使用方法一设置音频数据格式,方法二设置无效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
onRemoteAudioSpectrum
获取远端音频频谱。
- (BOOL)onRemoteAudioSpectrum:(NSArray<AgoraAudioSpectrumInfo *> * _Nullable)AudioSpectrumInfo;
成功调用 registerAudioSpectrumDelegate 实现 AgoraAudioSpectrumDelegate 中的 onRemoteAudioSpectrum 回调并调用 enableAudioSpectrumMonitor 开启音频频谱监测后,SDK 会按照你设置的时间间隔触发该回调,报告接收到的远端音频数据的频谱。
参数
- AudioSpectrumInfo
- 远端用户的音频频谱信息,详见 AgoraAudioSpectrumInfo。 数组数量等于 SDK 监测到的远端用户数量,数组为空表示没有监测到远端用户的音频频谱。
返回值
YES
: 接收。NO
: 不接收。