原始音频数据
setAudioFrameDelegate:
注册音频观测器对象。
- (BOOL)setAudioFrameDelegate:(id<AgoraAudioFrameDelegate> _Nullable)delegate;
该方法用于注册音频观测器对象,即注册回调。当需要 SDK 触发 onMixedAudioFrame:channelId:、onRecordAudioFrame:channelId:、onPlaybackAudioFrame:、onPlaybackAudioFrameBeforeMixing:channelId:uid: 和 onEarMonitoringAudioFrame: 回调时,需要调用该方法注册回调。
调用时机
该方法需要在加入频道前调用。
调用限制
无。
参数
- delegate
接口对象实例。详见 AgoraAudioFrameDelegate。如果传入 nil,则表示取消注册。建议在收到 rtcEngine:didLeaveChannelWithStats: 后调用,来释放音频观测器对象。
返回值
YES
:方法调用成功。NO
:方法调用失败。详见错误码了解详情和解决建议。
setEarMonitoringAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall:
设置耳返的音频数据格式。
- (int)setEarMonitoringAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
channel:(NSInteger)channel
mode:(AgoraAudioRawFrameOperationMode)mode
samplesPerCall:(NSInteger)samplesPerCall;
详情
该方法用于设置 onEarMonitoringAudioFrame: 回调的耳返音频数据格式。
- 调用该方法前,你需要先调用 enableInEarMonitoring:includeAudioFilters:,将 includeAudioFilters 设置为 AgoraEarMonitoringFilterBuiltInAudioFilters 或 AgoraEarMonitoringFilterNoiseSuppression。
- SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onEarMonitoringAudioFrame: 回调。
参数
- sampleRate
- onEarMonitoringAudioFrame: 中报告音频的采样率 (Hz),可设置为 8000、 16000、 32000、44100 或 48000。
- channel
- onEarMonitoringAudioFrame: 中报告音频的声道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
- mode
音频帧的使用模式,详见 AgoraAudioRawFrameOperationMode。
- samplesPerCall
- onEarMonitoringAudioFrame: 中报告的音频的采样点数,如旁路推流应用中通常为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setMixedAudioFrameParametersWithSampleRate:channel:samplesPerCall:
设置采集和播放音频混音后的原始音频数据格式。
- (int)setMixedAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
channel:(NSInteger)channel
samplesPerCall:(NSInteger)samplesPerCall;
SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onMixedAudioFrame:channelId: 回调。
调用时机
该方法需要在加入频道前调用。
调用限制
无。
参数
- sampleRate
- 音频数据的采样率 (Hz),可设置为 8000、 16000、 32000、44100 或 48000。
- channel
- 音频数据的声道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
- samplesPerCall
- 音频数据的采样点数,如旁路推流应用中通常为 1024。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setPlaybackAudioFrameBeforeMixingParametersWithSampleRate:channel:
设置混音前的原始音频播放数据格式。
- (int)setPlaybackAudioFrameBeforeMixingParametersWithSampleRate:(NSInteger)sampleRate
channel:(NSInteger)channel;
SDK 会根据该采样间隔触发 onPlaybackAudioFrameBeforeMixing:channelId:uid: 回调。
调用时机
该方法需要在加入频道前调用。
调用限制
无。
参数
- sampleRate
- 音频数据的采样率 (Hz),可设置为 8000、 16000、 32000、44100 或 48000。
- channel
- 音频数据的声道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setPlaybackAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall:
设置播放的原始音频数据格式。
- (int)setPlaybackAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
channel:(NSInteger)channel
mode:(AgoraAudioRawFrameOperationMode)mode
samplesPerCall:(NSInteger)samplesPerCall;
SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onPlaybackAudioFrame: 回调。
调用时机
该方法需要在加入频道前调用。
调用限制
无。
参数
- sampleRate
- 音频数据的采样率 (Hz),可设置为 8000、 16000、 32000、44100 或 48000。
- channel
- 音频数据的声道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
- mode
音频帧的使用模式,详见 AgoraAudioRawFrameOperationMode。
- samplesPerCall
- 音频数据的采样点数,如旁路推流应用中通常为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
setRecordingAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall:
设置采集的原始音频数据格式。
- (int)setRecordingAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
channel:(NSInteger)channel
mode:(AgoraAudioRawFrameOperationMode)mode
samplesPerCall:(NSInteger)samplesPerCall;
SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onRecordAudioFrame:channelId: 回调。
调用时机
该方法需要在加入频道前调用。
调用限制
无。
参数
- sampleRate
- 音频数据的采样率 (Hz),可设置为 8000、 16000、 32000、44100 或 48000。
- channel
- 音频数据的声道数,可设置为 1 或 2:
- 1: 单声道。
- 2: 双声道。
- mode
音频帧的使用模式,详见 AgoraAudioRawFrameOperationMode。
- samplesPerCall
- 音频数据的采样点数,如旁路推流应用中通常为 1024。
返回值
- 0:方法调用成功。
- < 0:方法调用失败。详见错误码了解详情和解决建议。
getEarMonitoringAudioParams
设置 onEarMonitoringAudioFrame:
回调数据的格式。
- (AgoraAudioParams* _Nonnull)getEarMonitoringAudioParams NS_SWIFT_NAME(getEarMonitoringAudioParams());
详情
你需要在调用 setAudioFrameDelegate: 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置耳返的音频数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onEarMonitoringAudioFrame: 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
耳返的音频数据,详见 AgoraAudioParams。
所属接口类getMixedAudioParams
设置 onMixedAudioFrame:channelId:
回调数据的格式。
- (AgoraAudioParams* _Nonnull)getMixedAudioParams NS_SWIFT_NAME(getMixedAudioParams());
详情
你需要在调用 setAudioFrameDelegate: 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置 SDK 采集和播放音频混音后的数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onMixedAudioFrame:channelId: 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
SDK 采集和播放音频混音后的音频数据,详见 AgoraAudioParams。
所属接口类getObservedAudioFramePosition
设置音频观测位置。
- (AgoraAudioFramePosition)getObservedAudioFramePosition NS_SWIFT_NAME(getObservedAudioFramePosition());
详情
你可以根据场景需求,通过修改 getObservedAudioFramePosition 的返回值,设置你需要观测的某个或多个位置。
注解观测多个位置时,需要使用 |(或运算符)。为降低设备耗能,你可以根据实际需求适当减少观测位置。
返回值
- AgoraAudioFramePositionPlayback (0x0001):该位置可观测所有远端用户混音后的播放音频,对应 onPlaybackAudioFrame: 回调。
- AgoraAudioFramePositionRecord (0x0002):该位置可观测采集的本地用户的音频,对应 onRecordAudioFrame:channelId: 回调。
- AgoraAudioFramePositionMixed (0x0004):该位置可观测本地和所有远端用户混音后的音频,对应 onMixedAudioFrame:channelId: 回调。
- AgoraAudioFramePositionBeforeMixing (0x0008):该位置可观测单个远端用户混音前的音频,对应 onPlaybackAudioFrameBeforeMixing:channelId:uid: 回调。
- 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:channelId:
回调数据的格式。
- (AgoraAudioParams* _Nonnull)getRecordAudioParams NS_SWIFT_NAME(getRecordAudioParams());
详情
你需要在调用 setAudioFrameDelegate: 方法时注册该回调。成功注册音频数据观测器后,SDK 会触发该回调,你可以在该回调的返回值中设置 SDK 采集的音频数据格式。
SDK 会通过你在返回值中设置的 AgoraAudioParams 计算采样间隔触发 onRecordAudioFrame:channelId: 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。
请确保采样间隔不小于 0.01 秒。
返回值
SDK 采集的音频数据,详见 AgoraAudioParams。
所属接口类onEarMonitoringAudioFrame:
获得耳返的原始音频数据。
- (BOOL)onEarMonitoringAudioFrame:(AgoraAudioFrame* _Nonnull)frame;
详情
- 方法一:调用 setEarMonitoringAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall: 设置音频数据格式后,调用 setAudioFrameDelegate: 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onEarMonitoringAudioFrame: 回调。
- 方法二:调用 setAudioFrameDelegate: 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getEarMonitoringAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onEarMonitoringAudioFrame: 回调。
- 方法一的优先级高于方法二,如果已使用方法一设置了音频数据格式,则使用方法二的设置不生效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
所属接口类onPlaybackAudioFrame:
获得播放的原始音频数据。
- (BOOL)onPlaybackAudioFrame:(AgoraAudioFrame* _Nonnull)frame;
详情
- 方法一:调用 setPlaybackAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall: 设置音频数据格式后,调用 setAudioFrameDelegate: 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onPlaybackAudioFrame: 回调。
- 方法二:调用 setAudioFrameDelegate: 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getPlaybackAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onPlaybackAudioFrame: 回调。
- 方法一的优先级高于方法二,如果使用方法一设置音频数据格式,方法二设置无效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
- channelId
- 频道 ID。
返回值
无实际含义。
所属接口类onPlaybackAudioFrameBeforeMixing:channelId:uid:
获取所订阅的远端用户混音前的声音。
- (BOOL)onPlaybackAudioFrameBeforeMixing:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId uid:(NSUInteger)uid NS_SWIFT_NAME(onPlaybackAudioFrame(beforeMixing:channelId:uid:));
参数
- uid
- 订阅的远端用户的 ID。
- frame
- 音频原始数据。详见 AgoraAudioFrame。
返回值
无实际含义。
所属接口类onRecordAudioFrame:channelId:
获得采集的原始音频数据。
- (BOOL)onRecordAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId NS_SWIFT_NAME(onRecordAudioFrame(_:channelId:));
详情
- 方法一:调用 setRecordingAudioFrameParametersWithSampleRate:channel:mode:samplesPerCall: 设置音频数据格式后,调用 setAudioFrameDelegate: 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onRecordAudioFrame:channelId: 回调。
- 方法二:调用 setAudioFrameDelegate: 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getRecordAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onRecordAudioFrame:channelId: 回调。
- 方法一的优先级高于方法二,如果使用方法一设置音频数据格式,方法二设置无效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
- channelId
- 频道 ID。
返回值
无实际含义。
所属接口类onMixedAudioFrame:channelId:
获取采集和播放音频混音后的数据。
- (BOOL)onMixedAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId NS_SWIFT_NAME(onMixedAudioFrame(_:channelId:));
详情
- 方法一:调用 setMixedAudioFrameParametersWithSampleRate:channel:samplesPerCall: 设置音频数据格式后,调用 setAudioFrameDelegate: 注册音频观测器对象,SDK 会根据该方法中的参数计算采样间隔,并根据该采样间隔触发 onMixedAudioFrame:channelId: 回调。
- 方法二:调用 setAudioFrameDelegate: 注册音频观测器对象后,在 getObservedAudioFramePosition 回调的返回值中设置具体的音频观测位置,然后在 getMixedAudioParams 回调的返回值中设置音频数据格式,SDK 会根据该回调的返回值计算采样间隔,并根据该采样间隔触发 onMixedAudioFrame:channelId: 回调。
- 方法一的优先级高于方法二,如果使用方法一设置音频数据格式,方法二设置无效。
参数
- frame
- 音频原始数据。详见 AgoraAudioFrame。
- channelId
- 频道 ID。
返回值
无实际含义。
所属接口类