# 原始音频数据 (/zh-CN/api-reference/rtc/ios/audio/audio-raw)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_audio_raw"></a>

<a id="api_iaudioframeobserver_getearmonitoringaudioparams"></a>

<a id="ariaid-title2"></a>

## getEarMonitoringAudioParams [#getearmonitoringaudioparams]

设置 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调的音频格式。

<a id="api_iaudioframeobserver_getearmonitoringaudioparams__prototype"></a>

```objc
- (AgoraAudioParams* _Nonnull)getEarMonitoringAudioParams NS_SWIFT_NAME(getEarMonitoringAudioParams());
```

<a id="api_iaudioframeobserver_getearmonitoringaudioparams__detailed_desc"></a>

你需要在调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 方法注册回调后，才能设置音频格式。成功注册音频观测器后，SDK 会触发该回调，你可以在该回调的返回值中设置音频格式。

:::note
注： SDK 会根据你在返回值中设置的 [AgoraAudioParams](/zh-CN/api-reference/rtc/ios/class-audioparams) 计算采样间隔，并以该间隔触发 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调。采样间隔（秒） = `samplePerCall` / (`sampleRate` × `channel`)。确保采样间隔 ≥ 0.01 秒。
:::

<a id="api_iaudioframeobserver_getearmonitoringaudioparams__return_values"></a>

### 返回值 [#返回值]

方法调用成功，返回耳返音频数据格式对象，详见 [AgoraAudioParams](/zh-CN/api-reference/rtc/ios/class-audioparams)。

### 所属接口类 [#所属接口类]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="api_iaudioframeobserver_getmixedaudioparams"></a>

<a id="ariaid-title3"></a>

## getMixedAudioParams [#getmixedaudioparams]

设置 [onMixedAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onmixedaudioframe) 回调的音频格式。

<a id="api_iaudioframeobserver_getmixedaudioparams__prototype"></a>

```objc
- (AgoraAudioParams* _Nonnull)getMixedAudioParams NS_SWIFT_NAME(getMixedAudioParams());
```

<a id="api_iaudioframeobserver_getmixedaudioparams__detailed_desc"></a>

你需要在调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 方法时注册该回调。在成功注册音频观测器后，SDK 会触发该回调，你可以在该回调的返回值中设置音频格式。

:::note
注： SDK 会根据你在返回值中设置的采样间隔触发 [onMixedAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onmixedaudioframe) 回调。采样间隔的计算公式为：采样间隔（秒） = `samplePerCall` /（`sampleRate` × `channel`）。确保采样间隔 ≥ 0.01 秒。
:::

<a id="api_iaudioframeobserver_getmixedaudioparams__return_values"></a>

### 返回值 [#返回值-1]

方法调用成功，返回混合后的采集和播放音频数据对象，详见 [AgoraAudioParams](/zh-CN/api-reference/rtc/ios/class-audioparams)。

### 所属接口类 [#所属接口类-1]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="api_iaudioframeobserver_getobservedaudioframeposition"></a>

<a id="ariaid-title4"></a>

## getObservedAudioFramePosition [#getobservedaudioframeposition]

设置音频数据观察位置。

<a id="api_iaudioframeobserver_getobservedaudioframeposition__prototype"></a>

```objc
- (AgoraAudioFramePosition)getObservedAudioFramePosition NS_SWIFT_NAME(getObservedAudioFramePosition());
```

<a id="api_iaudioframeobserver_getobservedaudioframeposition__detailed_desc"></a>

成功注册音频数据观察器后，SDK 会在每个特定的音频帧处理节点使用该回调，以判断是否触发以下回调：

- [onRecordAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onrecordaudioframe)
- [onPlaybackAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframe)
- [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing)
- [onMixedAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onmixedaudioframe)
- [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe)

你可以根据场景需求，通过修改 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 的返回值设置需要观察的一个或多个位置。当你需要观察多个位置时，需使用 |（或运算符）。为节省系统资源，建议减少观察位置的数量。

<a id="api_iaudioframeobserver_getobservedaudioframeposition__return_values"></a>

### 返回值 [#返回值-2]

返回一个位掩码，用于设置观察位置，具体取值如下，详见 `AgoraAudioFramePosition`：

- `AgoraAudioFramePositionPlayback`（0x0001）：该位置可观察所有远端用户混音后的播放音频。对应 `onPlaybackAudioFrame:` 回调。
- `AgoraAudioFramePositionRecord`（0x0002）：该位置可观察本地用户采集的音频。对应 [onRecordAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onrecordaudioframe) 回调。
- `AgoraAudioFramePositionMixed`（0x0004）：该位置可观察本地用户与所有远端用户混音后的播放音频。对应 [onMixedAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onmixedaudioframe) 回调。
- `AgoraAudioFramePositionBeforeMixing`（0x0008）：该位置可观察单个远端用户混音前的音频。对应 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调。
- `AgoraAudioFramePositionEarMonitoring`（0x0010）：该位置可观察本地用户的耳返音频。对应 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调。

### 所属接口类 [#所属接口类-2]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="api_iaudioframeobserver_getplaybackaudioparams"></a>

<a id="ariaid-title5"></a>

## getPlaybackAudioParams [#getplaybackaudioparams]

设置 [onPlaybackAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframe) 回调的音频格式。

<a id="api_iaudioframeobserver_getplaybackaudioparams__prototype"></a>

```objc
- (AgoraAudioParams* _Nonnull)getPlaybackAudioParams NS_SWIFT_NAME(getPlaybackAudioParams());
```

<a id="api_iaudioframeobserver_getplaybackaudioparams__detailed_desc"></a>

你需要在调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 方法时注册回调。成功注册音频观察器后，SDK 会触发该回调，你可以在该回调的返回值中设置音频格式。

:::note
注： SDK 会根据你在返回值中设置的 [AgoraAudioParams](/zh-CN/api-reference/rtc/ios/class-audioparams) 计算采样间隔，并以此触发 [onPlaybackAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframe) 回调。采样间隔（秒）= `samplePerCall` / (`sampleRate` × `channel`)。确保采样间隔 ≥ 0.01 秒。
:::

<a id="api_iaudioframeobserver_getplaybackaudioparams__return_values"></a>

### 返回值 [#返回值-3]

方法调用成功，返回用于播放的音频参数对象，详见 [AgoraAudioParams](/zh-CN/api-reference/rtc/ios/class-audioparams)。

### 所属接口类 [#所属接口类-3]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="api_iaudioframeobserver_getrecordaudioparams"></a>

<a id="ariaid-title6"></a>

## getRecordAudioParams [#getrecordaudioparams]

设置 [onRecordAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onrecordaudioframe) 回调的音频格式。

<a id="api_iaudioframeobserver_getrecordaudioparams__prototype"></a>

```objc
- (AgoraAudioParams* _Nonnull)getRecordAudioParams NS_SWIFT_NAME(getRecordAudioParams());
```

<a id="api_iaudioframeobserver_getrecordaudioparams__detailed_desc"></a>

调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 方法注册回调后，SDK 会触发 [onRecordAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onrecordaudioframe) 回调。你可以在该回调的返回值中设置音频格式。

:::note
注： SDK 会根据你在返回值中设置的采样间隔计算公式触发 [onRecordAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onrecordaudioframe) 回调。采样间隔（秒） = `samplePerCall` / (`sampleRate` × `channel`)。确保采样间隔 ≥ 0.01 秒。
:::

<a id="api_iaudioframeobserver_getrecordaudioparams__return_values"></a>

### 返回值 [#返回值-4]

方法调用成功，返回采集的音频参数对象，详见 [AgoraAudioParams](/zh-CN/api-reference/rtc/ios/class-audioparams)。

### 所属接口类 [#所属接口类-4]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="api_irtcengine_registeraudioframeobserver"></a>

<a id="ariaid-title7"></a>

## setAudioFrameDelegate: [#setaudioframedelegate]

注册音频帧观察者对象。

<a id="api_irtcengine_registeraudioframeobserver__prototype"></a>

```objc
- (BOOL)setAudioFrameDelegate:(id<AgoraAudioFrameDelegate> _Nullable)delegate NS_SWIFT_NAME(setAudioFrameDelegate(_:));
```

<a id="api_irtcengine_registeraudioframeobserver__detailed_desc"></a>

调用此方法可注册音频帧观察者对象。当你需要 SDK 触发 `onMixedAudioFrame`、`onRecordAudioFrame`、`onPlaybackAudioFrame`、`onPlaybackAudioFrameBeforeMixing` 或 `onEarMonitoringAudioFrame` 回调时，需要通过此方法注册回调。

<a id="api_irtcengine_registeraudioframeobserver__timing"></a>

### 调用时机 [#调用时机]

该方法需要在加入频道前调用。

<a id="api_irtcengine_registeraudioframeobserver__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="delegate"></a>
<Parameter name="delegate">

观察者实例。将该参数设为 nil 可释放该实例。声网建议在收到 [rtcEngine\:didLeaveChannelWithStats:](/zh-CN/api-reference/rtc/ios/channel#callback_irtcengineeventhandler_onleavechannel) 回调后调用此方法释放音频观察者对象。详见 [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_registeraudioframeobserver__return_values"></a>

### 返回值 [#返回值-5]

- YES：方法调用成功。
- NO：方法调用失败。

### 所属接口类 [#所属接口类-5]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setearmonitoringaudioframeparameters"></a>

<a id="ariaid-title8"></a>

## setEarMonitoringAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall: [#setearmonitoringaudioframeparameterswithsampleratechannelmodesamplespercall]

设置耳返原始音频数据的格式。

<a id="api_irtcengine_setearmonitoringaudioframeparameters__prototype"></a>

```objc
- (int)setEarMonitoringAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
                                                  channel:(NSInteger)channel
                                                     mode:(AgoraAudioRawFrameOperationMode)mode
                                           samplesPerCall:(NSInteger)samplesPerCall NS_SWIFT_NAME(setEarMonitoringAudioFrameParametersWithSampleRate(_:channel:mode:samplesPerCall:));
```

<a id="api_irtcengine_setearmonitoringaudioframeparameters__detailed_desc"></a>

该方法用于设置 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调中报告的耳返音频数据格式。

:::note
注：

- 在调用该方法前，你需要先调用 `enableInEarMonitoring` 方法，并将 `includeAudioFilters` 设置为 `AgoraEarMonitoringFilterBuiltInAudioFilters` 或 `AgoraEarMonitoringFilterNoiseSuppression`。
- SDK 会根据该方法中设置的 `samplesPerCall`、`sampleRate` 和 `channel` 参数计算采样间隔。采样间隔（秒）= `samplesPerCall` /（`sampleRate` × `channel`）。请确保采样间隔 ≥ 0.01 秒。SDK 会根据采样间隔触发 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调。
:::

<a id="api_irtcengine_setearmonitoringaudioframeparameters__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="samplerate"></a>
<Parameter name="sampleRate">

在 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调中报告的音频数据的采样率，可设置为 8000、16000、32000、44100 或 48000 Hz。

</Parameter>
<a id="channel"></a>
<Parameter name="channel">

在 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调中报告的音频声道数。

- 1：单声道。
- 2：双声道。

</Parameter>
<a id="mode"></a>
<Parameter name="mode">

音频帧的使用模式，详见 [AgoraAudioRawFrameOperationMode](/zh-CN/api-reference/rtc/ios/enum-rawaudioframeopmodetype)。

</Parameter>
<a id="samplespercall"></a>
<Parameter name="samplesPerCall">

在 [onEarMonitoringAudioFrame:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onearmonitoringaudioframe) 回调中报告的数据采样数，例如媒体推流时为 1024。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setearmonitoringaudioframeparameters__return_values"></a>

### 返回值 [#返回值-6]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-6]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setmixedaudioframeparameters"></a>

<a id="ariaid-title9"></a>

## setMixedAudioFrameParametersWithSampleRate\:channel\:samplesPerCall: [#setmixedaudioframeparameterswithsampleratechannelsamplespercall]

设置用于音频采集和播放的混音后原始音频数据格式。

<a id="api_irtcengine_setmixedaudioframeparameters__prototype"></a>

```objc
- (int)setMixedAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
                                          channel:(NSInteger)channel
                                   samplesPerCall:(NSInteger)samplesPerCall NS_SWIFT_NAME(setMixedAudioFrameParametersWithSampleRate(_:channel:samplesPerCall:));
```

<a id="api_irtcengine_setmixedaudioframeparameters__detailed_desc"></a>

SDK 会根据你设置的 `samplesPerCall`、`sampleRate` 和 `channel` 参数计算采样间隔。采样间隔（秒） = `samplesPerCall` / (`sampleRate` × `channel`)，请确保采样间隔 ≥ 0.01 秒。SDK 会根据采样间隔触发 [onMixedAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onmixedaudioframe) 回调。

<a id="api_irtcengine_setmixedaudioframeparameters__timing"></a>

### 调用时机 [#调用时机-1]

请在加入频道前调用该方法。

<a id="api_irtcengine_setmixedaudioframeparameters__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="samplerate-1"></a>
<Parameter name="sampleRate">

回调中返回的采样率，可设置为 8000、16000、32000、44100 或 48000 Hz。

</Parameter>
<a id="channel-1"></a>
<Parameter name="channel">

音频声道数，可设置为 1 或 2。

- 1：单声道。
- 2：立体声。

</Parameter>
<a id="samplespercall-1"></a>
<Parameter name="samplesPerCall">

每次回调的数据采样数，例如媒体推流时为 1024。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setmixedaudioframeparameters__return_values"></a>

### 返回值 [#返回值-7]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-7]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters"></a>

<a id="ariaid-title10"></a>

## setPlaybackAudioFrameBeforeMixingParametersWithSampleRate\:channel: [#setplaybackaudioframebeforemixingparameterswithsampleratechannel]

设置混音前原始音频播放数据的格式。

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters__prototype"></a>

```objc
- (int)setPlaybackAudioFrameBeforeMixingParametersWithSampleRate:(NSInteger)sampleRate
                                                         channel:(NSInteger)channel NS_SWIFT_NAME(setPlaybackAudioFrameBeforeMixingParametersWithSampleRate(_:channel:));
```

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters__detailed_desc"></a>

你可以在加入频道前调用该方法，设置混音前原始音频播放数据的采样率和声道数。SDK 会根据采样间隔触发 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调。

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters__timing"></a>

### 调用时机 [#调用时机-2]

在加入频道前调用该方法。

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="samplerate-2"></a>
<Parameter name="sampleRate">

回调中返回的采样率。可设置为 8000、16000、32000、44100 或 48000 Hz。

</Parameter>
<a id="channel-2"></a>
<Parameter name="channel">

音频声道数。可设置为 1 或 2。

- 1：单声道。
- 2：立体声。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters__return_values"></a>

### 返回值 [#返回值-8]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-8]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters1"></a>

<a id="ariaid-title11"></a>

## setPlaybackAudioFrameBeforeMixingParametersWithSampleRate\:channel\:samplesPerCall: [#setplaybackaudioframebeforemixingparameterswithsampleratechannelsamplespercall]

设置 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调中音频数据的格式。

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters1__prototype"></a>

```objc
- (int)setPlaybackAudioFrameBeforeMixingParametersWithSampleRate:(NSInteger)sampleRate
                                                         channel:(NSInteger)channel
                                                  samplesPerCall:(NSInteger)samplesPerCall NS_SWIFT_NAME(setPlaybackAudioFrameBeforeMixingParametersWithSampleRate(_:channel:samplesPerCall:));
```

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters1__detailed_desc"></a>

用于设置 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调中返回的音频数据的采样率、声道数和每次回调的采样点数。

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters1__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="samplerate-3"></a>
<Parameter name="sampleRate">

设置 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调中返回的采样率（Hz）。可设置为以下值：8000、16000、32000、44100 或 48000。

</Parameter>
<a id="channel-3"></a>
<Parameter name="channel">

设置 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调中返回的音频数据的声道数。

- 1：单声道。
- 2：立体声。

</Parameter>
<a id="samplespercall-2"></a>
<Parameter name="samplesPerCall">

设置 [onPlaybackAudioFrameBeforeMixing\:channelId\:uid:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调中返回的数据的每次回调采样点数。例如，在 RTMP 推流场景中，建议设置为 1024。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters1__return_values"></a>

### 返回值 [#返回值-9]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-9]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setplaybackaudioframeparameters"></a>

<a id="ariaid-title12"></a>

## setPlaybackAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall: [#setplaybackaudioframeparameterswithsampleratechannelmodesamplespercall]

设置原始音频播放数据的格式。

<a id="api_irtcengine_setplaybackaudioframeparameters__prototype"></a>

```objc
- (int)setPlaybackAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
                                              channel:(NSInteger)channel
                                                 mode:(AgoraAudioRawFrameOperationMode)mode
                                       samplesPerCall:(NSInteger)samplesPerCall NS_SWIFT_NAME(setPlaybackAudioFrameParametersWithSampleRate(_:channel:mode:samplesPerCall:));
```

<a id="api_irtcengine_setplaybackaudioframeparameters__detailed_desc"></a>

SDK 会根据你设置的 `samplesPerCall`、`sampleRate` 和 `channel` 参数计算采样间隔。采样间隔（秒）= `samplesPerCall` / (`sampleRate` × `channel`)。请确保采样间隔 ≥ 0.01 秒。

<a id="api_irtcengine_setplaybackaudioframeparameters__timing"></a>

### 调用时机 [#调用时机-3]

请在加入频道前调用该方法。

<a id="api_irtcengine_setplaybackaudioframeparameters__related"></a>

### 相关回调 [#相关回调]

SDK 会根据采样间隔触发 `onPlaybackAudioFrame:` 回调。

<a id="api_irtcengine_setplaybackaudioframeparameters__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="samplerate-4"></a>
<Parameter name="sampleRate">

回调中返回的采样率。可设置为 8000、16000、24000、32000、44100 或 48000 Hz。

</Parameter>
<a id="channel-4"></a>
<Parameter name="channel">

音频声道数。可设置为以下取值：

- 1：单声道。
- 2：立体声。

</Parameter>
<a id="mode-1"></a>
<Parameter name="mode">

音频帧的使用模式。详见 [AgoraAudioRawFrameOperationMode](/zh-CN/api-reference/rtc/ios/enum-rawaudioframeopmodetype)。

</Parameter>
<a id="samplespercall-3"></a>
<Parameter name="samplesPerCall">

每次回调的数据采样数，例如媒体推流时为 1024。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setplaybackaudioframeparameters__return_values"></a>

### 返回值 [#返回值-10]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-10]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setrecordingaudioframeparameters"></a>

<a id="ariaid-title13"></a>

## setRecordingAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall: [#setrecordingaudioframeparameterswithsampleratechannelmodesamplespercall]

设置采集的原始音频数据格式。

<a id="api_irtcengine_setrecordingaudioframeparameters__prototype"></a>

```objc
- (int)setRecordingAudioFrameParametersWithSampleRate:(NSInteger)sampleRate
                                              channel:(NSInteger)channel
                                                 mode:(AgoraAudioRawFrameOperationMode)mode
                                       samplesPerCall:(NSInteger)samplesPerCall NS_SWIFT_NAME(setRecordingAudioFrameParametersWithSampleRate(_:channel:mode:samplesPerCall:));
```

<a id="api_irtcengine_setrecordingaudioframeparameters__detailed_desc"></a>

SDK 会根据你设置的 `samplesPerCall`、`sampleRate` 和 `channel` 参数计算采样间隔。采样间隔（单位：秒）= `samplesPerCall` / (`sampleRate` × `channel`)。请确保采样间隔 ≥ 0.01 秒。SDK 会根据采样间隔触发 [onRecordAudioFrame\:channelId:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#callback_iaudioframeobserver_onrecordaudioframe) 回调。

<a id="api_irtcengine_setrecordingaudioframeparameters__timing"></a>

### 调用时机 [#调用时机-4]

请在加入频道前调用该方法。

<a id="api_irtcengine_setrecordingaudioframeparameters__parameters"></a>

### 参数 [#参数-6]

<ParameterList>
<a id="samplerate-5"></a>
<Parameter name="sampleRate">

回调中返回的采样率。可设置为 8000、16000、32000、44100 或 48000 Hz。

</Parameter>
<a id="channel-5"></a>
<Parameter name="channel">

音频声道数。可设置为：

- 1：单声道。
- 2：双声道。

</Parameter>
<a id="mode-2"></a>
<Parameter name="mode">

音频帧的使用模式，详见 [AgoraAudioRawFrameOperationMode](/zh-CN/api-reference/rtc/ios/enum-rawaudioframeopmodetype)。

</Parameter>
<a id="samplespercall-4"></a>
<Parameter name="samplesPerCall">

每次回调的数据采样数，例如媒体推流时为 1024。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setrecordingaudioframeparameters__return_values"></a>

### 返回值 [#返回值-11]

- 0：方法调用成功。
- &lt; 0：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-11]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="callback_iaudioframeobserver_onearmonitoringaudioframe"></a>

<a id="ariaid-title14"></a>

## onEarMonitoringAudioFrame: [#onearmonitoringaudioframe]

获取耳返音频帧回调。

<a id="callback_iaudioframeobserver_onearmonitoringaudioframe__prototype"></a>

```objc
- (BOOL)onEarMonitoringAudioFrame:(AgoraAudioFrame* _Nonnull)frame NS_SWIFT_NAME(onEarMonitoringAudioFrame(_:));
```

<a id="callback_iaudioframeobserver_onearmonitoringaudioframe__detailed_desc"></a>

为了确保你获取的耳返音频数据符合预期，声网建议你通过以下两种方式之一设置耳返音频数据格式：

- 方法一：调用 [setEarMonitoringAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_setearmonitoringaudioframeparameters) 设置音频数据格式，并调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象。SDK 会根据设置的参数计算采样间隔，并按照采样间隔触发该回调。
- 方法二：调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象，并在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 回调的返回值中设置音频数据格式。SDK 会根据 [getEarMonitoringAudioParams](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getearmonitoringaudioparams) 回调的返回值计算采样间隔，并按照采样间隔触发该回调。

:::note
注：

- 方法一的优先级高于方法二。如果使用方法一设置音频数据格式，则方法二的设置无效。
:::

<a id="callback_iaudioframeobserver_onearmonitoringaudioframe__timing"></a>

### 触发时机 [#触发时机]

该回调在采样间隔到达时被触发。

<a id="callback_iaudioframeobserver_onearmonitoringaudioframe__parameters"></a>

### 参数 [#参数-7]

<ParameterList>
<a id="frame"></a>
<Parameter name="frame">

原始音频数据，详见 [AgoraAudioFrame](/zh-CN/api-reference/rtc/ios/class-audioframe)。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserver_onearmonitoringaudioframe__return_values"></a>

### 返回值 [#返回值-12]

- YES：回调处理成功。
- NO：回调处理失败。

### 所属接口类 [#所属接口类-12]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="callback_iaudioframeobserver_onmixedaudioframe"></a>

<a id="ariaid-title15"></a>

## onMixedAudioFrame\:channelId: [#onmixedaudioframechannelid]

获取混合后的采集和播放音频帧回调。

<a id="callback_iaudioframeobserver_onmixedaudioframe__prototype"></a>

```objc
- (BOOL)onMixedAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId  NS_SWIFT_NAME(onMixedAudioFrame(_:channelId:));
```

<a id="callback_iaudioframeobserver_onmixedaudioframe__detailed_desc"></a>

为了确保混合后的采集和播放音频帧的数据格式符合预期，声网建议你通过以下两种方式之一设置音频数据格式：

- 方法一：调用 [setMixedAudioFrameParametersWithSampleRate\:channel\:samplesPerCall:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_setmixedaudioframeparameters) 设置音频数据格式，并调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象。SDK 会根据方法中设置的参数计算采样间隔，并按照采样间隔触发该回调。
- 方法二：调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象，并在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 的返回值中设置音频数据格式。SDK 会根据 [getMixedAudioParams](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getmixedaudioparams) 的返回值计算采样间隔，并按照采样间隔触发该回调。

:::note
注：

- 方法一的优先级高于方法二。如果使用方法一设置音频数据格式，则方法二的设置无效。
:::

<a id="callback_iaudioframeobserver_onmixedaudioframe__timing"></a>

### 触发时机 [#触发时机-1]

该回调在获取混合后的采集和播放音频帧时被触发。

<a id="callback_iaudioframeobserver_onmixedaudioframe__parameters"></a>

### 参数 [#参数-8]

<ParameterList>
<a id="frame-1"></a>
<Parameter name="frame">

原始音频数据，详见 [AgoraAudioFrame](/zh-CN/api-reference/rtc/ios/class-audioframe)。

</Parameter>
<a id="channelid"></a>
<Parameter name="channelId">

频道 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserver_onmixedaudioframe__return_values"></a>

### 返回值 [#返回值-13]

- YES：回调处理成功。
- NO：回调处理失败。

### 所属接口类 [#所属接口类-13]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="callback_iaudioframeobserver_onplaybackaudioframe"></a>

<a id="ariaid-title16"></a>

## onPlaybackAudioFrame\:channelId: [#onplaybackaudioframechannelid]

获取用于播放的原始音频帧回调。

<a id="callback_iaudioframeobserver_onplaybackaudioframe__prototype"></a>

```objc
- (BOOL)onPlaybackAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId  NS_SWIFT_NAME(onPlaybackAudioFrame(_:channelId:));
```

<a id="callback_iaudioframeobserver_onplaybackaudioframe__detailed_desc"></a>

为了确保播放音频帧的数据格式符合预期，声网建议你通过以下两种方法之一设置音频数据格式：

- 方法一：调用 [setPlaybackAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_setplaybackaudioframeparameters) 设置音频数据格式，并调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象。SDK 会根据设置的参数计算采样间隔，并按照采样间隔触发该回调。
- 方法二：调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象，并在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 的返回值中设置音频数据格式。SDK 会根据 [getPlaybackAudioParams](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getplaybackaudioparams) 的返回值计算采样间隔，并按照采样间隔触发该回调。

:::note
注： [setPlaybackAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_setplaybackaudioframeparameters) 的优先级高于 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 和 [getPlaybackAudioParams](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getplaybackaudioparams)。如果使用方法一设置音频数据格式，则方法二的设置无效。
:::

<a id="callback_iaudioframeobserver_onplaybackaudioframe__timing"></a>

### 触发时机 [#触发时机-2]

该回调在 SDK 获取到用于播放的音频帧时被触发。

<a id="callback_iaudioframeobserver_onplaybackaudioframe__parameters"></a>

### 参数 [#参数-9]

<ParameterList>
<a id="frame-2"></a>
<Parameter name="frame">

原始音频数据，详见 [AgoraAudioFrame](/zh-CN/api-reference/rtc/ios/class-audioframe)。

</Parameter>
<a id="channelid-1"></a>
<Parameter name="channelId">

频道 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserver_onplaybackaudioframe__return_values"></a>

### 返回值 [#返回值-14]

- YES：处理成功。
- NO：处理失败。

### 所属接口类 [#所属接口类-14]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="callback_iaudioframeobserver_onplaybackaudioframebeforemixing"></a>

<a id="ariaid-title17"></a>

## onPlaybackAudioFrameBeforeMixing\:channelId\:uid: [#onplaybackaudioframebeforemixingchanneliduid]

获取已订阅远端用户在混音前的音频帧。

<a id="callback_iaudioframeobserver_onplaybackaudioframebeforemixing__prototype"></a>

```objc
- (BOOL)onPlaybackAudioFrameBeforeMixing:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId uid:(NSUInteger)uid  NS_SWIFT_NAME(onPlaybackAudioFrame(beforeMixing:channelId:uid:));
```

<a id="callback_iaudioframeobserver_onplaybackaudioframebeforemixing__detailed_desc"></a>

<a id="callback_iaudioframeobserver_onplaybackaudioframebeforemixing__parameters"></a>

### 参数 [#参数-10]

<ParameterList>
<a id="frame-3"></a>
<Parameter name="frame">

原始音频数据，详见 [AgoraAudioFrame](/zh-CN/api-reference/rtc/ios/class-audioframe)。

</Parameter>
<a id="channelid-2"></a>
<Parameter name="channelId">

频道 ID。

</Parameter>
<a id="uid"></a>
<Parameter name="uid">

远端用户 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserver_onplaybackaudioframebeforemixing__return_values"></a>

### 返回值 [#返回值-15]

- YES：回调处理成功。
- NO：回调处理失败。

### 所属接口类 [#所属接口类-15]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)

<a id="callback_iaudioframeobserver_onrecordaudioframe"></a>

<a id="ariaid-title18"></a>

## onRecordAudioFrame\:channelId: [#onrecordaudioframechannelid]

采集到音频帧时触发的回调。

<a id="callback_iaudioframeobserver_onrecordaudioframe__prototype"></a>

```objc
- (BOOL)onRecordAudioFrame:(AgoraAudioFrame* _Nonnull)frame channelId:(NSString * _Nonnull)channelId  NS_SWIFT_NAME(onRecordAudioFrame(_:channelId:));
```

<a id="callback_iaudioframeobserver_onrecordaudioframe__detailed_desc"></a>

你可以通过以下两种方式之一设置音频数据格式，以确保采集到的音频帧格式符合预期：

- 方法一：调用 [setRecordingAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_setrecordingaudioframeparameters) 设置音频数据格式，并调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象。SDK 会根据设置的参数计算采样间隔，并按照采样间隔触发该回调。
- 方法二：调用 [setAudioFrameDelegate:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_registeraudioframeobserver) 注册音频帧观察者对象，并在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 回调的返回值中设置音频数据格式。SDK 会根据 [getRecordAudioParams](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getrecordaudioparams) 回调的返回值计算采样间隔，并按照采样间隔触发该回调。

:::note
注： [setRecordingAudioFrameParametersWithSampleRate\:channel\:mode\:samplesPerCall:](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_irtcengine_setrecordingaudioframeparameters) 的设置优先级高于 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getobservedaudioframeposition) 和 [getRecordAudioParams](/zh-CN/api-reference/rtc/ios/audio/audio-raw#api_iaudioframeobserver_getrecordaudioparams) 的设置。如果使用方法一设置音频数据格式，则方法二的设置无效。
:::

<a id="callback_iaudioframeobserver_onrecordaudioframe__timing"></a>

### 触发时机 [#触发时机-3]

该回调在采集到音频帧时被触发。

<a id="callback_iaudioframeobserver_onrecordaudioframe__parameters"></a>

### 参数 [#参数-11]

<ParameterList>
<a id="frame-4"></a>
<Parameter name="frame">

原始音频数据，详见 [AgoraAudioFrame](/zh-CN/api-reference/rtc/ios/class-audioframe)。

</Parameter>
<a id="channelid-3"></a>
<Parameter name="channelId">

频道 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserver_onrecordaudioframe__return_values"></a>

### 返回值 [#返回值-16]

- YES：处理成功。
- NO：处理失败。

### 所属接口类 [#所属接口类-16]

- [AgoraAudioFrameDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_iaudioframeobserver)
