# 原始音频数据 (/zh-CN/api-reference/rtc/unreal-cpp/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_imediaengine_registeraudioframeobserver"></a>

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

## registerAudioFrameObserver [#registeraudioframeobserver]

注册音频观测器对象。

<a id="api_imediaengine_registeraudioframeobserver__prototype"></a>

```cpp
virtual int registerAudioFrameObserver(IAudioFrameObserver* observer) = 0;
```

<a id="api_imediaengine_registeraudioframeobserver__detailed_desc"></a>

该方法用于注册音频观测器对象，即注册回调。当需要 SDK 触发 [onMixedAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onmixedaudioframe)、[onRecordAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onrecordaudioframe)、[onPlaybackAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onplaybackaudioframe)、[onPlaybackAudioFrameBeforeMixing](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 和 [onEarMonitoringAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onearmonitoringaudioframe) 回调时，需要调用该方法注册回调。

<a id="api_imediaengine_registeraudioframeobserver__timing"></a>

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

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

<a id="api_imediaengine_registeraudioframeobserver__restriction"></a>

### 调用限制 [#调用限制]

无。

<a id="api_imediaengine_registeraudioframeobserver__parameters"></a>

### 参数 [#参数]

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

接口对象实例。详见 [IAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserver)。如果传入 NULL，则表示取消注册。建议在收到 [onLeaveChannel](/zh-CN/api-reference/rtc/unreal-cpp/channel#callback_irtcengineeventhandler_onleavechannel) 后调用，来释放音频观测器对象。

</Parameter>
</ParameterList>

<a id="api_imediaengine_registeraudioframeobserver__return_values"></a>

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

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

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

- [IMediaEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_imediaengine)

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

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

## setEarMonitoringAudioFrameParameters [#setearmonitoringaudioframeparameters]

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

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

```cpp
virtual int setEarMonitoringAudioFrameParameters(int sampleRate, int channel,
                                                   RAW_AUDIO_FRAME_OP_MODE_TYPE mode,
                                                   int samplesPerCall) = 0;
```

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

### 详情 [#详情]

该方法用于设置 [onEarMonitoringAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onearmonitoringaudioframe) 回调的耳返音频数据格式。

:::caution
注意：

- 调用该方法前，你需要先调用 [enableInEarMonitoring](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-capture#api_irtcengine_enableinearmonitoring2)，将 includeAudioFilters 设置为 EAR_MONITORING_FILTER_BUILT_IN_AUDIO_FILTERS 或 EAR_MONITORING_FILTER_NOISE_SUPPRESSION。
- SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔，计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 onEarMonitoringAudioFrame 回调。
:::

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

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

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

onEarMonitoringAudioFrame 中报告音频的采样率 (Hz)，可设置为 8000、 16000、 32000、44100 或 48000。

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

onEarMonitoringAudioFrame 中报告音频的声道数，可设置为 1 或 2:

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

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

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

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

onEarMonitoringAudioFrame 中报告的音频的采样点数，如旁路推流应用中通常为 1024。

</Parameter>
</ParameterList>

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

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

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

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

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

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

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

## setMixedAudioFrameParameters [#setmixedaudioframeparameters]

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

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

```cpp
virtual int setMixedAudioFrameParameters(int sampleRate, int channel, int samplesPerCall) = 0;
```

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

SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔，计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 [onMixedAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onmixedaudioframe) 回调。

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

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

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

<a id="api_irtcengine_setmixedaudioframeparameters__restriction"></a>

### 调用限制 [#调用限制-1]

无。

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

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

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

音频数据的采样率 (Hz)，可设置为 8000、 16000、 32000、44100 或 48000。

</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>

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

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

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

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

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

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

## setPlaybackAudioFrameBeforeMixingParameters [#setplaybackaudioframebeforemixingparameters]

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

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

```cpp
virtual int setPlaybackAudioFrameBeforeMixingParameters(int sampleRate, int channel) = 0;
```

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

SDK 会根据该采样间隔触发 [onPlaybackAudioFrameBeforeMixing](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing) 回调。

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

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

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

<a id="api_irtcengine_setplaybackaudioframebeforemixingparameters__restriction"></a>

### 调用限制 [#调用限制-2]

无。

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

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

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

音频数据的采样率 (Hz)，可设置为 8000、 16000、 32000、44100 或 48000。

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

音频数据的声道数，可设置为 1 或 2:

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

</Parameter>
</ParameterList>

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

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

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

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

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

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

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

## setPlaybackAudioFrameParameters [#setplaybackaudioframeparameters]

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

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

```cpp
virtual int setPlaybackAudioFrameParameters(int sampleRate,
    int channel,
    RAW_AUDIO_FRAME_OP_MODE_TYPE mode,
    int samplesPerCall) = 0;
```

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

SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔，计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 [onPlaybackAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onplaybackaudioframe) 回调。

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

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

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

<a id="api_irtcengine_setplaybackaudioframeparameters__restriction"></a>

### 调用限制 [#调用限制-3]

无。

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

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

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

音频数据的采样率 (Hz)，可设置为 8000、 16000、 32000、44100 或 48000。

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

音频数据的声道数，可设置为 1 或 2:

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

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

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

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

音频数据的采样点数，如旁路推流应用中通常为 1024。

</Parameter>
</ParameterList>

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

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

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

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

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

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

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

## setRecordingAudioFrameParameters [#setrecordingaudioframeparameters]

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

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

```cpp
virtual int setRecordingAudioFrameParameters(int sampleRate,
    int channel,
    RAW_AUDIO_FRAME_OP_MODE_TYPE mode,
    int samplesPerCall) = 0;
```

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

SDK 会通过该方法中的 samplesPerCall、sampleRate 和 channel 参数计算出采样间隔，计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不小于 0.01 秒。SDK 会根据该采样间隔触发 [onRecordAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onrecordaudioframe) 回调。

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

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

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

<a id="api_irtcengine_setrecordingaudioframeparameters__restriction"></a>

### 调用限制 [#调用限制-4]

无。

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

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

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

音频数据的采样率 (Hz)，可设置为 8000、 16000、 32000、44100 或 48000。

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

音频数据的声道数，可设置为 1 或 2:

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

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

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

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

音频数据的采样点数，如旁路推流应用中通常为 1024。

</Parameter>
</ParameterList>

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

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

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

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

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_irtcengine)

<a id="callback_iaudioframeobserverbase_getearmonitoringaudioparams"></a>

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

## getEarMonitoringAudioParams [#getearmonitoringaudioparams]

设置 [onEarMonitoringAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onearmonitoringaudioframe) 回调数据的格式。

<a id="callback_iaudioframeobserverbase_getearmonitoringaudioparams__prototype"></a>

```cpp
virtual AudioParams getEarMonitoringAudioParams() = 0;
```

<a id="callback_iaudioframeobserverbase_getearmonitoringaudioparams__detailed_desc"></a>

### 详情 [#详情-1]

:::info[自从]
v4.0.1
:::

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

:::caution
注意：

SDK 会通过你在返回值中设置的 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams) 计算采样间隔触发 onEarMonitoringAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。

请确保采样间隔不小于 0.01 秒。
:::

<a id="callback_iaudioframeobserverbase_getearmonitoringaudioparams__return_values"></a>

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

耳返的音频数据，详见 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams)。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_getmixedaudioparams"></a>

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

## getMixedAudioParams [#getmixedaudioparams]

设置 [onMixedAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onmixedaudioframe) 回调数据的格式。

<a id="callback_iaudioframeobserverbase_getmixedaudioparams__prototype"></a>

```cpp
virtual AudioParams getMixedAudioParams() = 0;
```

<a id="callback_iaudioframeobserverbase_getmixedaudioparams__detailed_desc"></a>

### 详情 [#详情-2]

你需要在调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 方法时注册该回调。成功注册音频数据观测器后，SDK 会触发该回调，你可以在该回调的返回值中设置 SDK 采集和播放音频混音后的数据格式。

:::caution
注意：

SDK 会通过你在返回值中设置的 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams) 计算采样间隔触发 onMixedAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。

请确保采样间隔不小于 0.01 秒。
:::

<a id="callback_iaudioframeobserverbase_getmixedaudioparams__return_values"></a>

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

SDK 采集和播放音频混音后的音频数据，详见 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams)。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_getobservedaudioframeposition"></a>

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

## getObservedAudioFramePosition [#getobservedaudioframeposition]

设置音频观测位置。

<a id="callback_iaudioframeobserverbase_getobservedaudioframeposition__prototype"></a>

```cpp
virtual int getObservedAudioFramePosition() = 0;
```

<a id="callback_iaudioframeobserverbase_getobservedaudioframeposition__detailed_desc"></a>

### 详情 [#详情-3]

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

- [onRecordAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onrecordaudioframe)
- [onPlaybackAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onplaybackaudioframe)
- [onPlaybackAudioFrameBeforeMixing](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserver_onplaybackaudioframebeforemixing)
- [onMixedAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onmixedaudioframe)
- [onEarMonitoringAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onearmonitoringaudioframe)

你可以根据场景需求，通过修改 getObservedAudioFramePosition 的返回值，设置你需要观测的某个或多个位置。

注解观测多个位置时，需要使用 |（或运算符）。为降低设备耗能，你可以根据实际需求适当减少观测位置。

<a id="callback_iaudioframeobserverbase_getobservedaudioframeposition__return_values"></a>

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

返回设置观测位置的位掩码，取值如下：

- AUDIO_FRAME_POSITION_PLAYBACK (0x0001)：该位置可观测所有远端用户混音后的播放音频，对应 onPlaybackAudioFrame 回调。
- AUDIO_FRAME_POSITION_RECORD (0x0002)：该位置可观测采集的本地用户的音频，对应 onRecordAudioFrame 回调。
- AUDIO_FRAME_POSITION_MIXED (0x0004)：该位置可观测本地和所有远端用户混音后的音频，对应 onMixedAudioFrame 回调。
- AUDIO_FRAME_POSITION_BEFORE_MIXING (0x0008)：该位置可观测单个远端用户混音前的音频，对应 onPlaybackAudioFrameBeforeMixing 回调。
- AUDIO_FRAME_POSITION_EAR_MONITORING (0x0010)：该位置可观测单个本地用户耳返的音频，对应 onEarMonitoringAudioFrame 回调。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_getplaybackaudioparams"></a>

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

## getPlaybackAudioParams [#getplaybackaudioparams]

设置 [onPlaybackAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onplaybackaudioframe) 回调数据的格式。

<a id="callback_iaudioframeobserverbase_getplaybackaudioparams__prototype"></a>

```cpp
virtual AudioParams getPlaybackAudioParams() = 0;
```

<a id="callback_iaudioframeobserverbase_getplaybackaudioparams__detailed_desc"></a>

### 详情 [#详情-4]

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

:::caution
注意：

SDK 会通过你在返回值中设置的 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams) 计算采样间隔触发 onPlaybackAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。

请确保采样间隔不小于 0.01 秒。
:::

<a id="callback_iaudioframeobserverbase_getplaybackaudioparams__return_values"></a>

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

SDK 播放的音频数据，详见 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams)。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_getrecordaudioparams"></a>

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

## getRecordAudioParams [#getrecordaudioparams]

设置 [onRecordAudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_onrecordaudioframe) 回调数据的格式。

<a id="callback_iaudioframeobserverbase_getrecordaudioparams__prototype"></a>

```cpp
virtual AudioParams getRecordAudioParams() = 0;
```

<a id="callback_iaudioframeobserverbase_getrecordaudioparams__detailed_desc"></a>

### 详情 [#详情-5]

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

:::caution
注意：

SDK 会通过你在返回值中设置的 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams) 计算采样间隔触发 onRecordAudioFrame 回调。计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。

请确保采样间隔不小于 0.01 秒。
:::

<a id="callback_iaudioframeobserverbase_getrecordaudioparams__return_values"></a>

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

SDK 采集的音频数据，详见 [AudioParams](/zh-CN/api-reference/rtc/unreal-cpp/class-audioparams)。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_onearmonitoringaudioframe"></a>

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

## onEarMonitoringAudioFrame [#onearmonitoringaudioframe]

获得耳返的原始音频数据。

<a id="callback_iaudioframeobserverbase_onearmonitoringaudioframe__prototype"></a>

```cpp
virtual bool onEarMonitoringAudioFrame(AudioFrame& audioFrame) = 0;
```

<a id="callback_iaudioframeobserverbase_onearmonitoringaudioframe__detailed_desc"></a>

### 详情 [#详情-6]

为保证耳返的音频数据格式符合预期，你可以在如下两种方法中任选一种，设置耳返音频数据格式：

- 方法一：调用 [setEarMonitoringAudioFrameParameters](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_irtcengine_setearmonitoringaudioframeparameters) 设置音频数据格式后，调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象，SDK 会根据该方法中的参数计算采样间隔，并根据该采样间隔触发 onEarMonitoringAudioFrame 回调。
- 方法二：调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象后，在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getobservedaudioframeposition) 回调的返回值中设置具体的音频观测位置，然后在 [getEarMonitoringAudioParams](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getearmonitoringaudioparams) 回调的返回值中设置音频数据格式，SDK 会根据该回调的返回值计算采样间隔，并根据该采样间隔触发 onEarMonitoringAudioFrame 回调。

<a id="callback_iaudioframeobserverbase_onearmonitoringaudioframe__attention"></a>

:::note
注：

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

<a id="callback_iaudioframeobserverbase_onearmonitoringaudioframe__parameters"></a>

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

<ParameterList>
<a id="audioframe"></a>
<Parameter name="audioFrame">

音频原始数据。详见 [AudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/class-audioframe)。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserverbase_onearmonitoringaudioframe__return_values"></a>

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

无实际含义。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_onplaybackaudioframe"></a>

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

## onPlaybackAudioFrame [#onplaybackaudioframe]

获得播放的原始音频数据。

<a id="callback_iaudioframeobserverbase_onplaybackaudioframe__prototype"></a>

```cpp
virtual bool onPlaybackAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
```

<a id="callback_iaudioframeobserverbase_onplaybackaudioframe__detailed_desc"></a>

### 详情 [#详情-7]

为保证播放的音频数据格式符合预期，你可以在如下两种方法中任选一种，设置音频的数据格式：

- 方法一：调用 [setPlaybackAudioFrameParameters](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_irtcengine_setplaybackaudioframeparameters) 设置音频数据格式后，调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象，SDK 会根据该方法中的参数计算采样间隔，并根据该采样间隔触发 onPlaybackAudioFrame 回调。
- 方法二：调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象后，在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getobservedaudioframeposition) 回调的返回值中设置具体的音频观测位置，然后在 [getPlaybackAudioParams](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getplaybackaudioparams) 回调的返回值中设置音频数据格式，SDK 会根据该回调的返回值计算采样间隔，并根据该采样间隔触发 onPlaybackAudioFrame 回调。

<a id="callback_iaudioframeobserverbase_onplaybackaudioframe__attention"></a>

:::note
注：

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

<a id="callback_iaudioframeobserverbase_onplaybackaudioframe__parameters"></a>

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

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

音频原始数据。详见 [AudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/class-audioframe)。

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

频道 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserverbase_onplaybackaudioframe__return_values"></a>

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

无实际含义。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

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

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

## onPlaybackAudioFrameBeforeMixing [#onplaybackaudioframebeforemixing]

获取所订阅的远端用户混音前的声音。

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

```cpp
virtual bool onPlaybackAudioFrameBeforeMixing(const char* channelId, rtc::uid_t uid, AudioFrame& audioFrame) = 0;
```

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

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

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

频道 ID。

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

订阅的远端用户的 ID。

</Parameter>
<a id="audioframe-2"></a>
<Parameter name="audioFrame">

音频原始数据。详见 [AudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/class-audioframe)。

</Parameter>
</ParameterList>

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

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

无实际含义。

<a id="callback_iaudioframeobserverbase_onrecordaudioframe"></a>

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

## onRecordAudioFrame [#onrecordaudioframe]

获得采集的原始音频数据。

<a id="callback_iaudioframeobserverbase_onrecordaudioframe__prototype"></a>

```cpp
virtual bool onRecordAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
```

<a id="callback_iaudioframeobserverbase_onrecordaudioframe__detailed_desc"></a>

### 详情 [#详情-8]

为保证采集的音频数据格式符合预期，你可以在如下两种方法中任选一种，设置音频的数据格式：

- 方法一：调用 [setRecordingAudioFrameParameters](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_irtcengine_setrecordingaudioframeparameters) 设置音频数据格式后，调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象，SDK 会根据该方法中的参数计算采样间隔，并根据该采样间隔触发 onRecordAudioFrame 回调。
- 方法二：调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象后，在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getobservedaudioframeposition) 回调的返回值中设置具体的音频观测位置，然后在 [getRecordAudioParams](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getrecordaudioparams) 回调的返回值中设置音频数据格式，SDK 会根据该回调的返回值计算采样间隔，并根据该采样间隔触发 onRecordAudioFrame 回调。

<a id="callback_iaudioframeobserverbase_onrecordaudioframe__attention"></a>

:::note
注：

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

<a id="callback_iaudioframeobserverbase_onrecordaudioframe__parameters"></a>

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

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

音频原始数据。详见 [AudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/class-audioframe)。

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

频道 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserverbase_onrecordaudioframe__return_values"></a>

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

无实际含义。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)

<a id="callback_iaudioframeobserverbase_onmixedaudioframe"></a>

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

## onMixedAudioFrame [#onmixedaudioframe]

获取采集和播放音频混音后的数据。

<a id="callback_iaudioframeobserverbase_onmixedaudioframe__prototype"></a>

```cpp
virtual bool onMixedAudioFrame(const char* channelId, AudioFrame& audioFrame) = 0;
```

<a id="callback_iaudioframeobserverbase_onmixedaudioframe__detailed_desc"></a>

### 详情 [#详情-9]

为保证采集和播放混音后的音频数据格式符合预期，你可以在如下两种方法中任选一种，设置音频的数据格式：

- 方法一：调用 [setMixedAudioFrameParameters](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_irtcengine_setmixedaudioframeparameters) 设置音频数据格式后，调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象，SDK 会根据该方法中的参数计算采样间隔，并根据该采样间隔触发 onMixedAudioFrame 回调。
- 方法二：调用 [registerAudioFrameObserver](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#api_imediaengine_registeraudioframeobserver) 注册音频观测器对象后，在 [getObservedAudioFramePosition](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getobservedaudioframeposition) 回调的返回值中设置具体的音频观测位置，然后在 [getMixedAudioParams](/zh-CN/api-reference/rtc/unreal-cpp/audio/audio-raw#callback_iaudioframeobserverbase_getmixedaudioparams) 回调的返回值中设置音频数据格式，SDK 会根据该回调的返回值计算采样间隔，并根据该采样间隔触发 onMixedAudioFrame 回调。

<a id="callback_iaudioframeobserverbase_onmixedaudioframe__attention"></a>

:::note
注：

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

<a id="callback_iaudioframeobserverbase_onmixedaudioframe__parameters"></a>

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

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

音频原始数据。详见 [AudioFrame](/zh-CN/api-reference/rtc/unreal-cpp/class-audioframe)。

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

频道 ID。

</Parameter>
</ParameterList>

<a id="callback_iaudioframeobserverbase_onmixedaudioframe__return_values"></a>

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

无实际含义。

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

- [IAudioFrameObserverBase](/zh-CN/api-reference/rtc/unreal-cpp/rtc-interface-class#class_iaudioframeobserverbase)
