# 音频基础功能 (/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic)

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

<a id="toc_audio_basic"></a>

<a id="api_irtcengine_adjustplaybacksignalvolume"></a>

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

## adjustPlaybackSignalVolume [#adjustplaybacksignalvolume]

调节所有远端用户的本地播放音量。

<a id="api_irtcengine_adjustplaybacksignalvolume__prototype"></a>

```cpp
virtual int adjustPlaybackSignalVolume(int volume) = 0;
```

<a id="api_irtcengine_adjustplaybacksignalvolume__detailed_desc"></a>

如果你需要调节某个指定远端用户的本地播放音量，建议调用 [adjustUserPlaybackSignalVolume](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_adjustuserplaybacksignalvolume) 方法。

<a id="api_irtcengine_adjustplaybacksignalvolume__timing"></a>

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

该方法可以在加入频道前或加入频道后调用。

<a id="api_irtcengine_adjustplaybacksignalvolume__parameters"></a>

### 参数 [#参数]

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

用户的音量，取值范围为 [0,400]。

- 0：静音。
- 100：（默认）原始音量。
- 400：原始音量的四倍（将音频信号放大四倍）。

</Parameter>
</ParameterList>

<a id="api_irtcengine_adjustplaybacksignalvolume__return_values"></a>

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

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

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

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

<a id="api_irtcengine_adjustuserplaybacksignalvolume"></a>

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

## adjustUserPlaybackSignalVolume [#adjustuserplaybacksignalvolume]

调整指定远端用户的播放信号音量。

<a id="api_irtcengine_adjustuserplaybacksignalvolume__prototype"></a>

```cpp
virtual int adjustUserPlaybackSignalVolume(uid_t uid, int volume) = 0;
```

<a id="api_irtcengine_adjustuserplaybacksignalvolume__detailed_desc"></a>

你可以调用该方法调整指定远端用户的播放音量。若需调整多个远端用户的播放音量，请分别多次调用该方法，每次针对一个远端用户。

<a id="api_irtcengine_adjustuserplaybacksignalvolume__timing"></a>

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

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

<a id="api_irtcengine_adjustuserplaybacksignalvolume__parameters"></a>

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

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

远端用户的用户 ID。

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

用户的音量，取值范围为 [0, 400]。

- 0：静音。
- 100：（默认）原始音量。
- 400：原始音量的四倍（将音频信号放大四倍）。

</Parameter>
</ParameterList>

<a id="api_irtcengine_adjustuserplaybacksignalvolume__return_values"></a>

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

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

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

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

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex"></a>

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

## adjustUserPlaybackSignalVolumeEx [#adjustuserplaybacksignalvolumeex]

调整指定远端用户的播放信号音量。

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex__prototype"></a>

```cpp
virtual int adjustUserPlaybackSignalVolumeEx(uid_t uid, int volume, const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex__detailed_desc"></a>

你可以调用该方法调整指定远端用户的播放音量。若需调整多个远端用户的播放音量，请分别多次调用该方法，每次针对一个远端用户。

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex__scenario"></a>

### 适用场景 [#适用场景]

该方法适用于多频道场景。

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex__timing"></a>

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

请在调用 [joinChannelEx](/zh-CN/api-reference/rtc/cpp-all-platforms/channel#api_irtcengineex_joinchannelex) 后调用该方法。

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex__parameters"></a>

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

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

远端用户的用户 ID。

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

用户的音量，取值范围为 [0, 400]：

- 0：静音。
- 100：（默认）原始音量。
- 400：原始音量的四倍（将音频信号放大四倍）。

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

连接信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_adjustuserplaybacksignalvolumeex__return_values"></a>

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

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

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

- [IRtcEngineEx](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_disableaudio"></a>

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

## disableAudio [#disableaudio]

禁用音频模块。

<a id="api_irtcengine_disableaudio__prototype"></a>

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

<a id="api_irtcengine_disableaudio__detailed_desc"></a>

:::note
注： 该方法会重置内部引擎，并需要一定时间生效。声网建议使用以下 API 分别控制音频模块：

- [enableLocalAudio](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-capture#api_irtcengine_enablelocalaudio)：是否启用麦克风以创建本地音频流。
- [enableLoopbackRecording](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-capture#api_irtcengine_enableloopbackrecording)：是否启用回环音频采集。
- [muteLocalAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_mutelocalaudiostream)：是否发布本地音频流。
- [muteRemoteAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_muteremoteaudiostream)：是否订阅并播放远端音频流。
- [muteAllRemoteAudioStreams](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_muteallremoteaudiostreams)：是否订阅并播放所有远端音频流。
:::

<a id="api_irtcengine_disableaudio__timing"></a>

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

该方法可以在加入频道前或加入频道后调用。离开频道后仍然有效。

<a id="api_irtcengine_disableaudio__return_values"></a>

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

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

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

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

<a id="api_irtcengine_enableaudio"></a>

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

## enableAudio [#enableaudio]

启用音频模块。

<a id="api_irtcengine_enableaudio__prototype"></a>

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

<a id="api_irtcengine_enableaudio__detailed_desc"></a>

音频模块默认处于启用状态。调用 [disableAudio](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_disableaudio) 方法禁用音频模块后，可以调用该方法重新启用音频模块。

:::note
注： 调用该方法会重置整个引擎，可能导致响应时间变慢。你可以根据实际需求，使用以下方法分别控制音频模块的具体功能：

- [enableLocalAudio](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-capture#api_irtcengine_enablelocalaudio)：是否启用麦克风以创建本地音频流。
- [muteLocalAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_mutelocalaudiostream)：是否发布本地音频流。
- [muteRemoteAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_muteremoteaudiostream)：是否订阅并播放远端音频流。
- [muteAllRemoteAudioStreams](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_muteallremoteaudiostreams)：是否订阅并播放所有远端音频流。

成功调用该方法会重置 [enableLocalAudio](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-capture#api_irtcengine_enablelocalaudio)、[muteRemoteAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_muteremoteaudiostream) 和 [muteAllRemoteAudioStreams](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_muteallremoteaudiostreams) 的设置，请谨慎使用。
:::

<a id="api_irtcengine_enableaudio__timing"></a>

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

该方法可以在加入频道前或加入频道后调用，离开频道后仍然有效。

<a id="api_irtcengine_enableaudio__return_values"></a>

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

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

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

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

<a id="api_irtcengine_enableaudiovolumeindication"></a>

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

## enableAudioVolumeIndication [#enableaudiovolumeindication]

启用用户音量提示的上报功能。

<a id="api_irtcengine_enableaudiovolumeindication__prototype"></a>

```cpp
virtual int enableAudioVolumeIndication(int interval, int smooth, bool reportVad) = 0;
```

<a id="api_irtcengine_enableaudiovolumeindication__detailed_desc"></a>

该方法用于启用 SDK 定期向应用上报本地发送音频流的用户和瞬时音量最大的最多三位远端用户的音量信息。

<a id="api_irtcengine_enableaudiovolumeindication__timing"></a>

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

该方法可以在加入频道前或加入频道后调用。

<a id="api_irtcengine_enableaudiovolumeindication__related"></a>

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

成功调用该方法后，若频道中有用户发布音频流，SDK 会按照设置的时间间隔触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。

<a id="api_irtcengine_enableaudiovolumeindication__parameters"></a>

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

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

设置两次音量提示之间的时间间隔（毫秒）：

- ≤ 0：关闭音量提示功能。
- &gt; 0：两次音量提示之间的时间间隔（单位为毫秒）。该值需大于 10，否则无法收到 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。建议设置为大于 100。

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

设置音量提示的灵敏度平滑系数，取值范围为 0 到 10，推荐值为 3。值越大，提示越灵敏。

</Parameter>
<a id="reportvad"></a>
<Parameter name="reportVad">

是否启用本地用户的语音活动检测（VAD）：

- true：启用语音活动检测。启用后，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调中的 `vad` 参数会报告本地用户的语音活动状态。
- false：（默认）关闭语音活动检测。关闭后，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调中的 `vad` 参数不会报告本地用户的语音活动状态，除非引擎自动检测到语音活动。

</Parameter>
</ParameterList>

<a id="api_irtcengine_enableaudiovolumeindication__return_values"></a>

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

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

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

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

<a id="api_irtcengineex_enableaudiovolumeindicationex"></a>

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

## enableAudioVolumeIndicationEx [#enableaudiovolumeindicationex]

启用用户音量提示的上报功能。

<a id="api_irtcengineex_enableaudiovolumeindicationex__prototype"></a>

```cpp
virtual int enableAudioVolumeIndicationEx(int interval, int smooth, bool reportVad, const RtcConnection& connection) = 0;
```

<a id="api_irtcengineex_enableaudiovolumeindicationex__detailed_desc"></a>

该方法用于启用 SDK 定期向应用上报本地发送音频流的用户和音量瞬时值最高的最多三位远端用户的音量信息。

<a id="api_irtcengineex_enableaudiovolumeindicationex__scenario"></a>

### 适用场景 [#适用场景-1]

该方法适用于多频道场景。

<a id="api_irtcengineex_enableaudiovolumeindicationex__timing"></a>

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

请在调用 [joinChannelEx](/zh-CN/api-reference/rtc/cpp-all-platforms/channel#api_irtcengineex_joinchannelex) 后调用该方法。

<a id="api_irtcengineex_enableaudiovolumeindicationex__related"></a>

### 相关回调 [#相关回调-1]

成功调用该方法后，SDK 会根据设置的时间间隔触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，在频道中有用户发布音频流时报告音量信息。

<a id="api_irtcengineex_enableaudiovolumeindicationex__parameters"></a>

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

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

设置两次音量提示之间的时间间隔（毫秒）：

- ≤ 0：关闭音量提示。
- &gt; 0：两次音量提示之间的时间间隔（毫秒）。该值需大于 10，否则无法收到 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。建议设置为大于 100。

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

设置音量提示的灵敏度平滑系数，取值范围为 0 到 10，推荐值为 3。值越大，提示越灵敏。

</Parameter>
<a id="reportvad-1"></a>
<Parameter name="reportVad">

是否启用本地用户的语音活动检测（Voice Activity Detection）：

- true：启用语音活动检测。启用后，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调中的 `vad` 参数会报告本地用户的语音活动状态。
- false：（默认）关闭语音活动检测。关闭后，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调中的 `vad` 参数不会报告本地用户的语音活动状态，除非引擎自动检测到语音活动。

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

连接信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_enableaudiovolumeindicationex__return_values"></a>

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

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

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

- [IRtcEngineEx](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineex)

<a id="api_irtcengine_setaudioprofile"></a>

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

## setAudioProfile [1/2] [#setaudioprofile-12]

设置音频配置和音频场景。

<a id="api_irtcengine_setaudioprofile__prototype"></a>

```cpp
virtual int setAudioProfile(AUDIO_PROFILE_TYPE profile, AUDIO_SCENARIO_TYPE scenario) __deprecated = 0;
```

<a id="api_irtcengine_setaudioprofile__detailed_desc"></a>

<a id="废弃"></a>

:::error[废弃]
该方法已废弃。你可以改用 [setAudioProfile [2/2]](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_setaudioprofile2) 方法。若需设置音频场景，请调用 [initialize](/zh-CN/api-reference/rtc/cpp-all-platforms/initialize#api_irtcengine_initialize) 方法，并在 [RtcEngineContext](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcengineconfig) 结构体中的 `audioScenario` 成员中传入值。
:::

:::note
注： 由于 iOS 系统限制，在通话音量模式下部分音频路由无法识别。因此，如需使用外置声卡，建议将音频场景设置为 `AUDIO_SCENARIO_GAME_STREAMING`（3）。在该场景下，SDK 会切换为媒体音量以规避该问题。
:::

<a id="api_irtcengine_setaudioprofile__scenario"></a>

### 适用场景 [#适用场景-2]

该方法适用于多种音频场景，你可以根据实际需求进行选择。例如，在对音质要求较高的场景（如音乐教学）中，建议将 `profile` 设置为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY`（4），将 `scenario` 设置为 `AUDIO_SCENARIO_GAME_STREAMING`（3）。你可以在加入频道前或加入频道后调用该方法。

<a id="api_irtcengine_setaudioprofile__parameters"></a>

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

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

音频配置，包括采样率、码率、编码模式和声道数。详见 [AUDIO_PROFILE_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-audioprofiletype)。

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

音频场景，在不同的音频场景下设备使用不同的音量类型。详见 [AUDIO_SCENARIO_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-audioscenariotype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudioprofile__return_values"></a>

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

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

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

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

<a id="api_irtcengine_setaudioprofile2"></a>

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

## setAudioProfile [2/2] [#setaudioprofile-22]

设置音频配置文件。

<a id="api_irtcengine_setaudioprofile2__prototype"></a>

```cpp
virtual int setAudioProfile(AUDIO_PROFILE_TYPE profile) = 0;
```

<a id="api_irtcengine_setaudioprofile2__detailed_desc"></a>

<a id="api_irtcengine_setaudioprofile2__scenario"></a>

### 适用场景 [#适用场景-3]

你可以根据实际需求选择合适的音频配置文件。例如，在音乐教学等对音质要求较高的场景中，建议将 `profile` 设置为 `AUDIO_PROFILE_MUSIC_HIGH_QUALITY`（4）。如果你需要设置音频场景，可以调用 [setAudioScenario](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_setaudioscenario)，或者调用 [initialize](/zh-CN/api-reference/rtc/cpp-all-platforms/initialize#api_irtcengine_initialize) 并在 [RtcEngineContext](/zh-CN/api-reference/rtc/cpp-all-platforms/class-rtcengineconfig) 中设置 `audioScenario`。

<a id="api_irtcengine_setaudioprofile2__timing"></a>

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

你可以在加入频道前或后调用该方法。

<a id="api_irtcengine_setaudioprofile2__parameters"></a>

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

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

音频配置文件，包括采样率、码率、编码模式和声道数。详见 [AUDIO_PROFILE_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-audioprofiletype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudioprofile2__return_values"></a>

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

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

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

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

<a id="api_irtcengine_setaudioscenario"></a>

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

## setAudioScenario [#setaudioscenario]

设置音频场景。

<a id="api_irtcengine_setaudioscenario__prototype"></a>

```cpp
virtual int setAudioScenario(AUDIO_SCENARIO_TYPE scenario) = 0;
```

<a id="api_irtcengine_setaudioscenario__detailed_desc"></a>

:::note
注： 由于 iOS 系统限制，在通话音量模式下，部分音频路由可能无法识别。如果你需要使用外置声卡，建议将音频场景设置为 `AUDIO_SCENARIO_GAME_STREAMING`（3）。在该场景下，SDK 会切换为媒体音量，以避免该问题。
:::

<a id="api_irtcengine_setaudioscenario__scenario"></a>

### 适用场景 [#适用场景-4]

该方法适用于多种音频场景。例如，在对音质要求较高的音乐教学场景中，建议将 `scenario` 设置为 `AUDIO_SCENARIO_GAME_STREAMING`（3）。

<a id="api_irtcengine_setaudioscenario__timing"></a>

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

你可以在加入频道前或加入频道后调用该方法。

<a id="api_irtcengine_setaudioscenario__parameters"></a>

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

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

音频场景。不同音频场景下，设备使用不同的音量类型。详见 [AUDIO_SCENARIO_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-audioscenariotype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudioscenario__return_values"></a>

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

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

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

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

<a id="api_irtcengine_setaudiosessionoperationrestriction"></a>

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

## setAudioSessionOperationRestriction [#setaudiosessionoperationrestriction]

设置 SDK 对音频会话的操作权限。

<a id="api_irtcengine_setaudiosessionoperationrestriction__prototype"></a>

```cpp
virtual int setAudioSessionOperationRestriction(AUDIO_SESSION_OPERATION_RESTRICTION restriction) = 0;
```

<a id="api_irtcengine_setaudiosessionoperationrestriction__detailed_desc"></a>

默认情况下，SDK 和 App 都可以配置音频会话。如果你只希望由 App 配置音频会话，可以通过该方法限制 SDK 的操作权限。你可以在加入频道前或后调用该方法。一旦调用该方法进行限制，当 SDK 需要更改音频会话时，该限制将生效。

:::note
注：

- 该方法仅适用于 iOS。
- 该方法不会限制 App 对音频会话的操作权限。
:::

<a id="api_irtcengine_setaudiosessionoperationrestriction__parameters"></a>

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

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

SDK 对音频会话的操作权限。该参数为位掩码格式，每一位对应一个权限。详见 [AUDIO_SESSION_OPERATION_RESTRICTION](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-audiosessionoperationrestriction)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setaudiosessionoperationrestriction__return_values"></a>

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

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

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

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

<a id="callback_irtcengineeventhandler_onactivespeaker"></a>

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

## onActiveSpeaker [#onactivespeaker]

最活跃远端说话人回调。

<a id="callback_irtcengineeventhandler_onactivespeaker__prototype"></a>

```cpp
virtual void onActiveSpeaker(uid_t uid)
```

<a id="callback_irtcengineeventhandler_onactivespeaker__detailed_desc"></a>

调用 [enableAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_enableaudiovolumeindication) 方法成功后，SDK 会持续检测哪位远端用户的音量最大。在当前周期内，音量被检测为最大次数最多的远端用户即为最活跃用户。当频道中用户数不少于两人且存在活跃的远端说话人时，SDK 会触发该回调并报告最活跃远端说话人的用户 ID。

- 如果最活跃的远端说话人始终是同一用户，SDK 只会触发一次该回调。
- 如果最活跃的远端说话人变更为其他用户，SDK 会再次触发该回调并报告新的最活跃远端说话人的用户 ID。

<a id="callback_irtcengineeventhandler_onactivespeaker__parameters"></a>

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

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

最活跃远端说话人的用户 ID。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onaudioquality"></a>

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

## onAudioQuality [#onaudioquality]

报告每个远端用户发送的音频流的统计信息。

<a id="callback_irtcengineeventhandler_onaudioquality__prototype"></a>

```cpp
virtual void onAudioQuality(uid_t uid, int quality, unsigned short delay, unsigned short lost) __deprecated
```

<a id="callback_irtcengineeventhandler_onaudioquality__detailed_desc"></a>

<a id="废弃-1"></a>

:::error[废弃]
该回调已废弃，请改用 [onRemoteAudioStats](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostats)。
:::

SDK 每两秒触发一次该回调，用于报告每个正在发送音频流的远端用户的音频质量。如果频道中有多个用户发送音频流，SDK 会触发多次该回调。

<a id="callback_irtcengineeventhandler_onaudioquality__parameters"></a>

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

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

发送音频流的远端用户 ID。

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

该用户的音频质量，详见 [QUALITY_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-qualitytype)。

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

从发送端到接收端的网络延迟（毫秒），包括音频采样预处理、网络传输和网络抖动缓冲造成的延迟。

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

从远端用户到接收端的音频数据包丢包率（%）。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onaudiovolumeindication"></a>

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

## onAudioVolumeIndication [#onaudiovolumeindication]

[onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。

<a id="callback_irtcengineeventhandler_onaudiovolumeindication__prototype"></a>

```cpp
virtual void onAudioVolumeIndication(const AudioVolumeInfo* speakers, unsigned int speakerNumber, int totalVolume)
```

<a id="callback_irtcengineeventhandler_onaudiovolumeindication__detailed_desc"></a>

默认情况下，该回调处于关闭状态。你可以通过调用 [enableAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_enableaudiovolumeindication) 方法开启该回调。开启后，当频道中有用户发送音频流时，SDK 会按照 [enableAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_enableaudiovolumeindication) 中设置的时间间隔触发该回调。SDK 会同时触发两个独立的 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，分别报告发送音频流的本地用户和瞬时音量最高的最多三位远端用户的音量信息。

:::note
注： 开启该回调后，即使本地用户调用 [muteLocalAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_mutelocalaudiostream) 方法将音频静音，SDK 仍会继续报告本地用户的音量信息。如果某位远端用户的音量为频道中前三高之一，但停止发布音频流超过 20 秒，该回调将不再包含该用户的信息；如果所有远端用户都停止发布音频流超过 20 秒，SDK 将不再触发远端用户的音量回调。
:::

<a id="callback_irtcengineeventhandler_onaudiovolumeindication__timing"></a>

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

当启用音量提示并有用户发送音频流时触发。

<a id="callback_irtcengineeventhandler_onaudiovolumeindication__parameters"></a>

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

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

用户的音量信息。详见 [AudioVolumeInfo](/zh-CN/api-reference/rtc/cpp-all-platforms/class-audiovolumeinfo)。当该回调中的 `speakers` 数组为空时，表示频道中没有远端用户或没有用户发送音频流。

</Parameter>
<a id="speakernumber"></a>
<Parameter name="speakerNumber">

用户总数。

- 本地用户的回调中，如果本地用户正在发送音频流，`speakerNumber` 的值为 1。
- 远端用户的回调中，`speakerNumber` 的取值范围为 [0, 3]。如果发送音频流的远端用户数量大于或等于 3，`speakerNumber` 的值为 3。

</Parameter>
<a id="totalvolume"></a>
<Parameter name="totalVolume">

说话者的音量，取值范围为 [0, 255]。

- 本地用户的回调中，`totalVolume` 表示本地用户的音量。
- 远端用户的回调中，`totalVolume` 表示瞬时音量最高的最多三位远端用户的音量总和。如果调用了 `startAudioMixing`，则该值为混音后的音量。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onfirstlocalaudioframepublished"></a>

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

## onFirstLocalAudioFramePublished [#onfirstlocalaudioframepublished]

本地用户发布首帧音频时触发的回调。

<a id="callback_irtcengineeventhandler_onfirstlocalaudioframepublished__prototype"></a>

```cpp
virtual void onFirstLocalAudioFramePublished(int elapsed)
```

<a id="callback_irtcengineeventhandler_onfirstlocalaudioframepublished__detailed_desc"></a>

<a id="callback_irtcengineeventhandler_onfirstlocalaudioframepublished__timing"></a>

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

该回调在以下任一情况下由 SDK 触发：

- 本地客户端启用音频模块并成功调用 `joinChannel`。
- 本地客户端依次调用 `muteLocalAudioStream(true)` 和 `muteLocalAudioStream(false)`。
- 本地客户端依次调用 [disableAudio](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_disableaudio) 和 [enableAudio](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#api_irtcengine_enableaudio)。
- 本地客户端调用 [pushAudioFrame](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-custom-capturenrendering#api_imediaengine_pushaudioframe) 成功将音频帧推送至 SDK。

<a id="callback_irtcengineeventhandler_onfirstlocalaudioframepublished__parameters"></a>

### 参数 [#参数-12]

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

从本地用户调用 `joinChannel` 到 SDK 触发该回调的时间间隔（毫秒）。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onfirstremoteaudiodecoded"></a>

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

## onFirstRemoteAudioDecoded [#onfirstremoteaudiodecoded]

首帧远端音频解码完成回调。

<a id="callback_irtcengineeventhandler_onfirstremoteaudiodecoded__prototype"></a>

```cpp
virtual void onFirstRemoteAudioDecoded(uid_t uid, int elapsed) __deprecated
```

<a id="callback_irtcengineeventhandler_onfirstremoteaudiodecoded__detailed_desc"></a>

<a id="废弃-2"></a>

:::error[废弃]
该方法已废弃，请改用 [onRemoteAudioStateChanged](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostatechanged)。
:::

<a id="callback_irtcengineeventhandler_onfirstremoteaudiodecoded__timing"></a>

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

当远端用户首次发送音频流，或音频从离线恢复为在线重新发送音频时触发。

<a id="callback_irtcengineeventhandler_onfirstremoteaudiodecoded__parameters"></a>

### 参数 [#参数-13]

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

远端用户 ID。

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

从本地用户调用 `joinChannel` 加入频道到 SDK 触发该回调的时间，单位为毫秒。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onfirstremoteaudioframe"></a>

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

## onFirstRemoteAudioFrame [#onfirstremoteaudioframe]

远端用户音频首帧到达回调。

<a id="callback_irtcengineeventhandler_onfirstremoteaudioframe__prototype"></a>

```cpp
virtual void onFirstRemoteAudioFrame(uid_t uid, int elapsed) __deprecated
```

<a id="callback_irtcengineeventhandler_onfirstremoteaudioframe__detailed_desc"></a>

<a id="废弃-3"></a>

:::error[废弃]
该方法已废弃，请改用 [onRemoteAudioStateChanged](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostatechanged)。
:::

<a id="callback_irtcengineeventhandler_onfirstremoteaudioframe__parameters"></a>

### 参数 [#参数-14]

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

远端用户 ID。

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

从本地用户调用 `joinChannel` 加入频道到 SDK 触发该回调的时间，单位为毫秒。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onlocalaudiostatechanged"></a>

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

## onLocalAudioStateChanged [#onlocalaudiostatechanged]

本地音频流状态发生变化回调。

<a id="callback_irtcengineeventhandler_onlocalaudiostatechanged__prototype"></a>

```cpp
virtual void onLocalAudioStateChanged(LOCAL_AUDIO_STREAM_STATE state, LOCAL_AUDIO_STREAM_REASON reason)
```

<a id="callback_irtcengineeventhandler_onlocalaudiostatechanged__detailed_desc"></a>

当本地音频流的状态（包括音频采集和编码状态）发生变化时，SDK 会触发该回调报告当前状态，帮助你排查音频异常问题。

:::note
注： 当状态为 `LOCAL_AUDIO_STREAM_STATE_FAILED`（3）时，可以在 `reason` 参数中查看错误信息。
:::

<a id="callback_irtcengineeventhandler_onlocalaudiostatechanged__parameters"></a>

### 参数 [#参数-15]

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

本地音频流的状态，详见 [LOCAL_AUDIO_STREAM_STATE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-localaudiostreamstate)。

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

本地音频流状态变化的原因，详见 [LOCAL_AUDIO_STREAM_REASON](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-localaudiostreamreason)。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onlocalaudiostats"></a>

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

## onLocalAudioStats [#onlocalaudiostats]

本地音频统计信息回调。

<a id="callback_irtcengineeventhandler_onlocalaudiostats__prototype"></a>

```cpp
virtual void onLocalAudioStats(const LocalAudioStats& stats)
```

<a id="callback_irtcengineeventhandler_onlocalaudiostats__detailed_desc"></a>

<a id="callback_irtcengineeventhandler_onlocalaudiostats__timing"></a>

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

SDK 每两秒触发一次该回调。

<a id="callback_irtcengineeventhandler_onlocalaudiostats__parameters"></a>

### 参数 [#参数-16]

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

本地音频统计信息。详见 [LocalAudioStats](/zh-CN/api-reference/rtc/cpp-all-platforms/class-localaudiostats)。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onremoteaudiostatechanged"></a>

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

## onRemoteAudioStateChanged [#onremoteaudiostatechanged]

远端音频状态发生变化回调。

<a id="callback_irtcengineeventhandler_onremoteaudiostatechanged__prototype"></a>

```cpp
virtual void onRemoteAudioStateChanged(uid_t uid, REMOTE_AUDIO_STATE state, REMOTE_AUDIO_STATE_REASON reason, int elapsed)
```

<a id="callback_irtcengineeventhandler_onremoteaudiostatechanged__detailed_desc"></a>

:::note
注： 当通信场景下的用户或直播场景下的主播数量超过 32 时，该回调无法正常工作。
:::

<a id="callback_irtcengineeventhandler_onremoteaudiostatechanged__timing"></a>

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

当远端用户的音频状态发生变化时触发。

<a id="callback_irtcengineeventhandler_onremoteaudiostatechanged__parameters"></a>

### 参数 [#参数-17]

<ParameterList>
<a id="uid-6"></a>
<Parameter name="uid">

音频状态发生变化的远端用户 ID。

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

远端音频状态。详见 [REMOTE_AUDIO_STATE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-remoteaudiostate)。

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

远端音频状态变化的原因。详见 [REMOTE_AUDIO_STATE_REASON](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-remoteaudiostatereason)。

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

从本地用户调用 `joinChannel` 方法到 SDK 触发该回调的时间间隔（毫秒）。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onremoteaudiostats"></a>

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

## onRemoteAudioStats [#onremoteaudiostats]

远端音频流统计信息回调。

<a id="callback_irtcengineeventhandler_onremoteaudiostats__prototype"></a>

```cpp
virtual void onRemoteAudioStats(const RemoteAudioStats& stats)
```

<a id="callback_irtcengineeventhandler_onremoteaudiostats__detailed_desc"></a>

该回调每两秒触发一次，用于报告每个正在发送音频流的远端用户的传输层统计信息。如果频道中有多个远端用户，SDK 会分别为每个用户触发该回调。

<a id="callback_irtcengineeventhandler_onremoteaudiostats__parameters"></a>

### 参数 [#参数-18]

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

远端音频流的统计信息。详见 [RemoteAudioStats](/zh-CN/api-reference/rtc/cpp-all-platforms/class-remoteaudiostats)。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onremoteaudiotransportstats"></a>

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

## onRemoteAudioTransportStats [#onremoteaudiotransportstats]

报告每个远端音频流的传输层统计信息回调。

<a id="callback_irtcengineeventhandler_onremoteaudiotransportstats__prototype"></a>

```cpp
virtual void onRemoteAudioTransportStats(uid_t uid, unsigned short delay, unsigned short lost, unsigned short rxKBitRate) __deprecated
```

<a id="callback_irtcengineeventhandler_onremoteaudiotransportstats__detailed_desc"></a>

<a id="废弃-4"></a>

:::error[废弃]
该方法已废弃，请改用 [onRemoteAudioStats](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostats)。
:::

该回调报告传输层的统计信息，例如在本地用户接收到远端用户的音频数据包后，数据包的丢失率和网络时延。该回调在通话过程中每 2 秒触发一次。

<a id="callback_irtcengineeventhandler_onremoteaudiotransportstats__timing"></a>

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

在通话过程中，每当本地用户接收到远端用户发送的音频数据包时，每 2 秒触发一次。

<a id="callback_irtcengineeventhandler_onremoteaudiotransportstats__parameters"></a>

### 参数 [#参数-19]

<ParameterList>
<a id="uid-7"></a>
<Parameter name="uid">

远端用户 ID，即发送音频流的用户。

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

从远端用户到本地接收端的网络时延（毫秒）。

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

从远端用户到本地接收端的音频数据包丢失率（%）。

</Parameter>
<a id="rxkbitrate"></a>
<Parameter name="rxKBitRate">

接收到的音频码率（Kbps）。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onusermuteaudio"></a>

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

## onUserMuteAudio [#onusermuteaudio]

远端用户或主播停止或恢复发送音频流回调。

<a id="callback_irtcengineeventhandler_onusermuteaudio__prototype"></a>

```cpp
virtual void onUserMuteAudio(uid_t uid, bool muted)
```

<a id="callback_irtcengineeventhandler_onusermuteaudio__detailed_desc"></a>

当远端用户调用 [muteLocalAudioStream](/zh-CN/api-reference/rtc/cpp-all-platforms/publishnsubscribe#api_irtcengine_mutelocalaudiostream) 停止或恢复发送音频流时，SDK 会触发该回调。

:::note
注： 当通信场景中的用户数量或直播场景中的主播数量超过 32 时，该回调可能无法正常工作。
:::

<a id="callback_irtcengineeventhandler_onusermuteaudio__parameters"></a>

### 参数 [#参数-20]

<ParameterList>
<a id="uid-8"></a>
<Parameter name="uid">

远端用户 ID。

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

远端用户的音频流是否被静音：

- true：音频流被静音。
- false：音频流未被静音。

</Parameter>
</ParameterList>

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

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_irtcengineeventhandler)
