# 音频基础功能 (/zh-CN/api-reference/rtc/electron/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>

```ts
abstract adjustPlaybackSignalVolume(volume: number): number;
```

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

该方法用于调节所有远端用户混音后在本地播放的信号音量，如果你需要调节指定远端用户在本地播放的信号音量，建议你调用 [adjustUserPlaybackSignalVolume](/zh-CN/api-reference/rtc/electron/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: 原始音量的 4 倍，自带溢出保护。

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

```ts
abstract adjustUserPlaybackSignalVolume(uid: number, volume: number): number;
```

<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: 原始音量的 4 倍，自带溢出保护。

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

```ts
abstract adjustUserPlaybackSignalVolumeEx(
    uid: number,
    volume: number,
    connection: RtcConnection
  ): number;
```

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

你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量，则需多次调用该方法。

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

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

该方法需要在 [joinChannelEx](/zh-CN/api-reference/rtc/electron/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: 原始音量的 4 倍，自带溢出保护。

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/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/electron/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>

```ts
abstract disableAudio(): number;
```

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

音频模块默认开启，你可以调用该方法关闭音频模块。

:::note
注： 该方法重置整个引擎，响应时间较慢，因此声网建议使用如下方法来控制音频模块：

- [enableLocalAudio](/zh-CN/api-reference/rtc/electron/audio/audio-capture#api_irtcengine_enablelocalaudio)：是否启动麦克风采集并创建本地音频流。
- [enableLoopbackRecording](/zh-CN/api-reference/rtc/electron/audio/audio-capture#api_irtcengine_enableloopbackrecording)：是否开启声卡采集。
- [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream)：是否发布本地音频流。
- [muteRemoteAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_muteremoteaudiostream)：是否接收并播放远端音频流。
- [muteAllRemoteAudioStreams](/zh-CN/api-reference/rtc/electron/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/electron/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>

```ts
abstract enableAudio(): number;
```

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

音频模块默认开启。如果你调用 [disableAudio](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_disableaudio) 关闭了音频模块，可调用该方法重新开启。

:::note
注：

- 调用该方法会重置整个引擎，响应时间较慢。你可以根据实际需求用以下方法来独立控制音频模块的某一项功能：

  - [enableLocalAudio](/zh-CN/api-reference/rtc/electron/audio/audio-capture#api_irtcengine_enablelocalaudio): 是否启动麦克风采集并创建本地音频流。
  - [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream): 是否发布本地音频流。
  - [muteRemoteAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_muteremoteaudiostream): 是否接收并播放远端音频流。
  - [muteAllRemoteAudioStreams](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_muteallremoteaudiostreams): 是否接收并播放所有远端音频流。
- 在频道内调用该方法时，会重置 [enableLocalAudio](/zh-CN/api-reference/rtc/electron/audio/audio-capture#api_irtcengine_enablelocalaudio)、[muteRemoteAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_muteremoteaudiostream) 和 [muteAllRemoteAudioStreams](/zh-CN/api-reference/rtc/electron/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/electron/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>

```ts
abstract enableAudioVolumeIndication(
    interval: number,
    smooth: number,
    reportVad: boolean
  ): number;
```

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

该方法允许 SDK 定期向 App 报告本地发流用户和瞬时音量最高的远端用户（最多 3 位）的音量相关信息。

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

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

加入频道前后均可调用。

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

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

成功调用该方法、且频道内存在发流用户时，SDK 会按设置的时间间隔触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/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: 返回音量提示的间隔，单位为毫秒。建议设置到大于 100 毫秒，不得小于 10 毫秒，否则会收不到 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。

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

平滑系数，指定音量提示的灵敏度。取值范围为 [0,10]，建议值为 3。数字越大，波动越灵敏；数字越小，波动越平滑。

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

- true：开启本地人声检测功能。开启后，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调的 `vad` 参数会报告是否在本地检测到人声。
- false：（默认）关闭本地人声检测功能。除引擎自动进行本地人声检测的场景外，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/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/electron/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>

```ts
abstract enableAudioVolumeIndicationEx(
    interval: number,
    smooth: number,
    reportVad: boolean,
    connection: RtcConnection
  ): number;
```

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

该方法允许 SDK 定期向 App 报告本地发流用户和瞬时音量最高的远端用户（最多 3 位）的音量相关信息。

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

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

该方法需要在 [joinChannelEx](/zh-CN/api-reference/rtc/electron/channel#api_irtcengineex_joinchannelex) 之后调用。

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

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

成功调用该方法、且频道内存在发流用户时，SDK 会按设置的时间间隔触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/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: 返回音量提示的间隔，单位为毫秒。建议设置到大于 100 毫秒，不得小于 10 毫秒，否则会收不到 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。

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

平滑系数，指定音量提示的灵敏度。取值范围为 [0,10]，建议值为 3。数字越大，波动越灵敏；数字越小，波动越平滑。

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

- true：开启本地人声检测功能。开启后，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调的 `vad` 参数会报告是否在本地检测到人声。
- false：（默认）关闭本地人声检测功能。除引擎自动进行本地人声检测的场景外，[onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调的 `vad` 参数不会报告是否在本地检测到人声。

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/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/electron/rtc-interface-class#class_irtcengineex)

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

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

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

## setAudioProfile [#setaudioprofile]

设置音频编码属性和音频场景。

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

```ts
abstract setAudioProfile(
    profile: AudioProfileType,
    scenario?: AudioScenarioType
  ): number;
```

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

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

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

该方法适用于各种音频场景，你可以按需选择。例如，在音乐教学等高音质需求的场景中，建议将 `profile` 设置为 `AudioProfileMusicHighQuality`(4)，`scenario` 设置为 `AudioScenarioGameStreaming`(3)。

<a id="api_irtcengine_setaudioprofile__timing"></a>

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

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

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

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

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

音频编码属性，包含采样率、码率、编码模式和声道数。详见 [AudioProfileType](/zh-CN/api-reference/rtc/electron/enum-audioprofiletype)。

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

音频场景。不同的音频场景下，设备的音量类型是不同的。
详见 [AudioScenarioType](/zh-CN/api-reference/rtc/electron/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/electron/rtc-interface-class#class_irtcengine)

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

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

## setAudioScenario [#setaudioscenario]

设置音频场景。

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

```ts
abstract setAudioScenario(scenario: AudioScenarioType): number;
```

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

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

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

该方法适用于各种音频场景，你可以按需选择。例如，在音乐教学等高音质需求的场景中，建议将 `scenario` 设置为 `AudioScenarioGameStreaming`(3)。

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

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

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

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

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

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

音频场景。不同的音频场景下，设备的音量类型是不同的。
详见 [AudioScenarioType](/zh-CN/api-reference/rtc/electron/enum-audioscenariotype) 。

</Parameter>
</ParameterList>

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

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

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

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

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

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

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

## onActiveSpeaker [#onactivespeaker]

监测到远端最活跃用户回调。

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

```ts
onActiveSpeaker?(connection: RtcConnection, uid: number): void;
```

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

成功调用 [enableAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_enableaudiovolumeindication) 后，SDK 会持续监测音量最大的远端用户，并统计该用户被判断为音量最大者的次数。当前时间段内，该次数累积最多的远端用户为最活跃的用户。
当频道内用户数量大于或等于 2 且有远端活跃用户时，SDK 会触发该回调并报告远端最活跃用户的 `uid`。

- 如果远端最活跃用户一直是同一位用户，则 SDK 不会再次触发 [onActiveSpeaker](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onactivespeaker) 回调。
- 如果远端最活跃用户有变化，则 SDK 会再次触发该回调并报告新的远端最活跃用户的 `uid`。

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

远端最活跃用户的 ID。

</Parameter>
</ParameterList>

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

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

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

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

## onAudioQuality [#onaudioquality]

远端声音质量回调。

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

```ts
onAudioQuality?(
    connection: RtcConnection,
    remoteUid: number,
    quality: QualityType,
    delay: number,
    lost: number
  ): void;
```

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

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

:::error[废弃]
弃用： 请改用 [onRemoteAudioStats](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostats)。
:::

该回调描述远端用户在通话中的音频质量，针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播，该回调每 2 秒会被触发多次。

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

</Parameter>
<a id="remoteuid"></a>
<Parameter name="remoteUid">

用户 ID，指定是谁发的音频流。

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

语音质量。详见 [QualityType](/zh-CN/api-reference/rtc/electron/enum-qualitytype)。

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

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

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

音频包从发送端到接收端的丢包率 (%)。

</Parameter>
</ParameterList>

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

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

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

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

## onAudioVolumeIndication [#onaudiovolumeindication]

用户音量提示回调。

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

```ts
onAudioVolumeIndication?(connection: RtcConnection, speakers: AudioVolumeInfo[], speakerNumber: number, totalVolume: number): void;
```

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

该回调默认禁用，你可以通过 [enableAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_enableaudiovolumeindication) 开启。 开启后，只要频道内有发流用户，SDK 会在加入频道后按 [enableAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_enableaudiovolumeindication) 中设置的时间间隔触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。每次会触发两个 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，一个报告本地发流用户的音量相关信息，另一个报告瞬时音量最高的远端用户（最多 3 位）的音量相关信息。

:::note
注： 启用该功能后，如果有用户将自己静音（调用了 [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream)），SDK 会继续报告本地用户的音量提示回调。
瞬时音量最高的远端用户静音后 20 秒，远端的音量提示回调中将不再包含该用户；如果远端所有用户都将自己静音，20 秒后 SDK 停止报告远端用户的音量提示回调。
:::

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

用户音量信息，详见 [AudioVolumeInfo](/zh-CN/api-reference/rtc/electron/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` 为瞬时音量最高的远端用户（最多 3 位）混音后的总音量。

</Parameter>
</ParameterList>

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

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

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

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

## onFirstLocalAudioFramePublished [#onfirstlocalaudioframepublished]

已发布本地音频首帧回调。

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

```ts
onFirstLocalAudioFramePublished?(
    connection: RtcConnection,
    elapsed: number
  ): void;
```

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

SDK 会在以下时机触发该回调：

- 开启本地音频的情况下，调用 [joinChannel](/zh-CN/api-reference/rtc/electron/channel#api_irtcengine_joinchannel2) 成功加入频道后。
- 调用 [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream)(`true)`，再调用 [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream)(`false)` 后。
- 调用 [disableAudio](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_disableaudio)，再调用 [enableAudio](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_enableaudio) 后。

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

从调用 [joinChannel](/zh-CN/api-reference/rtc/electron/channel#api_irtcengine_joinchannel2) 方法到触发该回调的时间间隔（毫秒）。

</Parameter>
</ParameterList>

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

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

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

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

## onFirstRemoteAudioDecoded [#onfirstremoteaudiodecoded]

已解码远端音频首帧的回调。

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

```ts
onFirstRemoteAudioDecoded?(
    connection: RtcConnection,
    uid: number,
    elapsed: number
  ): void;
```

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

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

:::error[废弃]
弃用： 请改用 [onRemoteAudioStateChanged](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostatechanged) 。
:::

SDK 会在以下时机触发该回调：

- 远端用户首次上线后发送音频。
- 远端用户音频离线再上线发送音频。音频离线指本地在 15 秒内没有收到音频包，可能有如下原因：

  - 远端用户离开频道
  - 远端用户掉线
  - 远端用户调用 [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream) 方法停止发送音频流
  - 远端用户调用 [disableAudio](/zh-CN/api-reference/rtc/electron/audio/audio-basic#api_irtcengine_disableaudio) 方法关闭音频

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

远端用户 ID。

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

从本地用户调用 [joinChannel](/zh-CN/api-reference/rtc/electron/channel#api_irtcengine_joinchannel2) 直至该回调触发的延迟，单位为毫秒。

</Parameter>
</ParameterList>

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

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

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

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

## onFirstRemoteAudioFrame [#onfirstremoteaudioframe]

已接收远端音频首帧回调。

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

```ts
onFirstRemoteAudioFrame?(
    connection: RtcConnection,
    userId: number,
    elapsed: number
  ): void;
```

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

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

:::error[废弃]
弃用： 请改用 [onRemoteAudioStateChanged](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostatechanged) 。
:::

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

</Parameter>
<a id="userid"></a>
<Parameter name="userId">

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

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

从本地用户调用 [joinChannel](/zh-CN/api-reference/rtc/electron/channel#api_irtcengine_joinchannel2) 直至该回调触发的延迟，单位为毫秒。

</Parameter>
</ParameterList>

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

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

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

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

## onLocalAudioStateChanged [#onlocalaudiostatechanged]

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

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

```ts
onLocalAudioStateChanged?(
    connection: RtcConnection,
    state: LocalAudioStreamState,
    reason: LocalAudioStreamReason
  ): void;
```

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

本地音频的状态发生改变时（包括本地麦克风采集状态和音频编码状态），SDK 会触发该回调报告当前的本地音频状态。在本地音频出现故障时，该回调可以帮助你了解当前音频的状态以及出现故障的原因，方便你排查问题。

:::note
注： 当状态为 `LocalAudioStreamStateFailed` (3) 时， 你可以在 `error` 参数中查看返回的错误信息。
:::

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

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

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

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

当前的本地音频状态。详见 [LocalAudioStreamState](/zh-CN/api-reference/rtc/electron/enum-localaudiostreamstate)。

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

本地音频状态改变原因。详见 [LocalAudioStreamReason](/zh-CN/api-reference/rtc/electron/enum-localaudiostreamreason)。

</Parameter>
</ParameterList>

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

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

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

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

## onLocalAudioStats [#onlocalaudiostats]

通话中本地音频流的统计信息回调。

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

```ts
onLocalAudioStats?(connection: RtcConnection, stats: LocalAudioStats): void;
```

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

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

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

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

<ParameterList>
<a id="connection-9"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

本地音频统计数据。详见 [LocalAudioStats](/zh-CN/api-reference/rtc/electron/class-localaudiostats)。

</Parameter>
</ParameterList>

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

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

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

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

## onRemoteAudioStateChanged [#onremoteaudiostatechanged]

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

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

```ts
onRemoteAudioStateChanged?(
    connection: RtcConnection,
    remoteUid: number,
    state: RemoteAudioState,
    reason: RemoteAudioStateReason,
    elapsed: number
  ): void;
```

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

远端用户（通信场景）或主播（直播场景）的音频状态发生改变时，SDK 会触发该回调向本地用户报告当前的远端音频流状态。

:::note
注： 频道内的用户（通信场景）或主播（直播场景）人数超过 32 人时，该回调可能不准确。
:::

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

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

<ParameterList>
<a id="connection-10"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

</Parameter>
<a id="remoteuid-1"></a>
<Parameter name="remoteUid">

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

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

远端音频流状态，详见 [RemoteAudioState](/zh-CN/api-reference/rtc/electron/enum-remoteaudiostate)。

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

远端音频流状态改变的具体原因，详见 [RemoteAudioStateReason](/zh-CN/api-reference/rtc/electron/enum-remoteaudiostatereason)。

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

从本地用户调用 [joinChannel](/zh-CN/api-reference/rtc/electron/channel#api_irtcengine_joinchannel2) 方法到发生本事件经历的时间，单位为毫秒。

</Parameter>
</ParameterList>

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

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

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

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

## onRemoteAudioStats [#onremoteaudiostats]

通话中远端音频流的统计信息回调。

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

```ts
onRemoteAudioStats?(connection: RtcConnection, stats: RemoteAudioStats): void;
```

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

该回调针对每个发送音频流的远端用户/主播每 2 秒触发一次。如果远端有多个用户/主播发送音频流，该回调每 2 秒会被触发多次。

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

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

<ParameterList>
<a id="connection-11"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

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

接收到的远端音频统计数据，详见 [RemoteAudioStats](/zh-CN/api-reference/rtc/electron/class-remoteaudiostats)。

</Parameter>
</ParameterList>

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

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

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

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

## onRemoteAudioTransportStats [#onremoteaudiotransportstats]

通话中远端音频流传输的统计信息回调。

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

```ts
onRemoteAudioTransportStats?(
    connection: RtcConnection,
    remoteUid: number,
    delay: number,
    lost: number,
    rxKBitRate: number
  ): void;
```

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

弃用：
请改用 [onRemoteAudioStats](/zh-CN/api-reference/rtc/electron/audio/audio-basic#callback_irtcengineeventhandler_onremoteaudiostats)。
该回调描述远端用户通话中端到端的网络统计信息，通过音频包计算，用客观的数据，如丢包、 网络延迟等，展示当前网络状态。通话中，当用户收到远端用户/主播发送的音频数据包后，会每 2 秒触发一次该回调。

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

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

<ParameterList>
<a id="connection-12"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

</Parameter>
<a id="remoteuid-2"></a>
<Parameter name="remoteUid">

用户 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>

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

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

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

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

## onUserMuteAudio [#onusermuteaudio]

远端用户（通信场景）/主播（直播场景）停止或恢复发送音频流回调。

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

```ts
onUserMuteAudio?(
    connection: RtcConnection,
    remoteUid: number,
    muted: boolean
  ): void;
```

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

该回调是由远端用户调用 [muteLocalAudioStream](/zh-CN/api-reference/rtc/electron/publishnsubscribe#api_irtcengine_mutelocalaudiostream) 方法关闭或开启音频发送触发的。

:::note
注： 频道内的用户（通信场景）或主播（直播场景）人数超过 32 人时，该回调可能不准确。
:::

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

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

<ParameterList>
<a id="connection-13"></a>
<Parameter name="connection">

Connection 信息。详见 [RtcConnection](/zh-CN/api-reference/rtc/electron/class-rtcconnection)。

</Parameter>
<a id="remoteuid-3"></a>
<Parameter name="remoteUid">

用户 ID。

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

该用户是否静音：

- true: 该用户已将音频静音。
- false: 该用户取消了音频静音。

</Parameter>
</ParameterList>

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

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