# 音频设备管理 (/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device)

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

<a id="toc_audio_device"></a>

<a id="api_iaudiodevicemanager_enumerateplaybackdevices"></a>

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

## enumeratePlaybackDevices [#enumerateplaybackdevices]

枚举系统中的音频播放设备。

<a id="api_iaudiodevicemanager_enumerateplaybackdevices__prototype"></a>

```cpp
virtual IAudioDeviceCollection *enumeratePlaybackDevices() = 0;
```

<a id="api_iaudiodevicemanager_enumerateplaybackdevices__detailed_desc"></a>

该方法返回一个 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection) 对象，包含系统中的所有音频播放设备。使用该对象后，必须调用 [release](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_release_iaudiodevicemanager) 方法释放资源。

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_enumerateplaybackdevices__return_values"></a>

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

- 方法调用成功，返回一个 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection) 对象，详见 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection)。
- 方法调用失败，返回 NULL。

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

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

<a id="api_iaudiodevicemanager_enumeraterecordingdevices"></a>

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

## enumerateRecordingDevices [#enumeraterecordingdevices]

枚举音频采集设备。

<a id="api_iaudiodevicemanager_enumeraterecordingdevices__prototype"></a>

```cpp
virtual IAudioDeviceCollection *enumerateRecordingDevices() = 0;
```

<a id="api_iaudiodevicemanager_enumeraterecordingdevices__detailed_desc"></a>

该方法返回一个 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection) 对象，其中包含系统中的所有音频采集设备。使用该对象后，你必须调用 [release](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_release_iaudiodevicemanager) 方法释放资源。

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_enumeraterecordingdevices__return_values"></a>

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

- 方法调用成功，返回 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection) 对象，详见 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection)。
- 方法调用失败，返回 NULL。

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

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

<a id="api_iaudiodevicemanager_followsystemloopbackdevice"></a>

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

## followSystemLoopbackDevice [#followsystemloopbackdevice]

设置是否跟随系统默认音频播放设备。

<a id="api_iaudiodevicemanager_followsystemloopbackdevice__prototype"></a>

```cpp
virtual int followSystemLoopbackDevice(bool enable) = 0;
```

<a id="api_iaudiodevicemanager_followsystemloopbackdevice__detailed_desc"></a>

该方法仅适用于 Windows 和 macOS 平台。

<a id="api_iaudiodevicemanager_followsystemloopbackdevice__parameters"></a>

### 参数 [#参数]

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

是否跟随系统默认音频播放设备：

- true：跟随系统默认音频播放设备。当系统默认播放设备发生变化时，SDK 会立即切换到对应的声卡采集设备。
- false：不跟随系统默认音频播放设备。仅当当前音频播放设备断开连接时，SDK 才会将声卡采集设备切换为系统默认音频播放设备。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_followsystemloopbackdevice__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_followsystemplaybackdevice"></a>

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

## followSystemPlaybackDevice [#followsystemplaybackdevice]

设置 SDK 是否跟随系统默认音频播放设备。

<a id="api_iaudiodevicemanager_followsystemplaybackdevice__prototype"></a>

```cpp
virtual int followSystemPlaybackDevice(bool enable) = 0;
```

<a id="api_iaudiodevicemanager_followsystemplaybackdevice__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_followsystemplaybackdevice__parameters"></a>

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

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

是否跟随系统默认音频播放设备：

- true：跟随系统默认音频播放设备。当系统默认音频播放设备发生变化时，SDK 会立即切换音频播放设备。
- false：不跟随系统默认音频播放设备。仅当当前使用的音频播放设备断开连接时，SDK 才会切换到系统默认音频播放设备。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_followsystemplaybackdevice__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_followsystemrecordingdevice"></a>

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

## followSystemRecordingDevice [#followsystemrecordingdevice]

设置 SDK 是否跟随系统默认音频录制设备。

<a id="api_iaudiodevicemanager_followsystemrecordingdevice__prototype"></a>

```cpp
virtual int followSystemRecordingDevice(bool enable) = 0;
```

<a id="api_iaudiodevicemanager_followsystemrecordingdevice__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_followsystemrecordingdevice__parameters"></a>

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

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

是否跟随系统默认音频录制设备：

- true：跟随系统默认音频录制设备。当系统默认设备发生变化时，SDK 会立即切换。
- false：不跟随系统默认音频录制设备。仅当当前设备断开连接时，SDK 才会切换到系统默认设备。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_followsystemrecordingdevice__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicecollection_getapplicationvolume"></a>

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

## getApplicationVolume [#getapplicationvolume]

获取 App 的音量。

<a id="api_iaudiodevicecollection_getapplicationvolume__prototype"></a>

```cpp
virtual int getApplicationVolume(int &volume) = 0;
```

<a id="api_iaudiodevicecollection_getapplicationvolume__detailed_desc"></a>

<a id="api_iaudiodevicecollection_getapplicationvolume__parameters"></a>

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

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

输出参数，表示 App 的音量，取值范围为 [0,255]。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_getapplicationvolume__return_values"></a>

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

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

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

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

<a id="api_irtcengine_getaudiodeviceinfo"></a>

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

## getAudioDeviceInfo [#getaudiodeviceinfo]

获取音频设备信息。

<a id="api_irtcengine_getaudiodeviceinfo__prototype"></a>

```cpp
virtual int getAudioDeviceInfo(DeviceInfo& deviceInfo) = 0;
```

<a id="api_irtcengine_getaudiodeviceinfo__detailed_desc"></a>

调用该方法可以获取音频设备是否支持超低延迟采集和播放。

:::note
注：

- 该方法仅适用于 Android 平台。
- 你可以在加入频道前或后调用该方法。
:::

<a id="api_irtcengine_getaudiodeviceinfo__parameters"></a>

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

<ParameterList>
<a id="deviceinfo"></a>
<Parameter name="deviceInfo">

输入和输出参数，表示音频设备信息。详见 [DeviceInfo](/zh-CN/api-reference/rtc/cpp-all-platforms/class-deviceinfo)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_getaudiodeviceinfo__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicecollection_getcount_iaudiodevicecollection"></a>

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

## getCount [#getcount]

获取音频播放设备或音频采集设备的总数。

<a id="api_iaudiodevicecollection_getcount_iaudiodevicecollection__prototype"></a>

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

<a id="api_iaudiodevicecollection_getcount_iaudiodevicecollection__detailed_desc"></a>

如果在调用该方法前调用了 [enumeratePlaybackDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumerateplaybackdevices)，SDK 会返回音频播放设备的数量；如果在调用该方法前调用了 [enumerateRecordingDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumeraterecordingdevices)，SDK 会返回音频采集设备的数量。

<a id="api_iaudiodevicecollection_getcount_iaudiodevicecollection__return_values"></a>

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

方法调用成功，返回音频播放设备或音频采集设备的总数。

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

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

<a id="api_iaudiodevicecollection_getdefaultdevice2_iaudiodevicecollection"></a>

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

## getDefaultDevice [2/2] [#getdefaultdevice-22]

获取系统默认音频设备及其类型。

<a id="api_iaudiodevicecollection_getdefaultdevice2_iaudiodevicecollection__prototype"></a>

```cpp
virtual int getDefaultDevice(char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicecollection_getdefaultdevice2_iaudiodevicecollection__detailed_desc"></a>

该方法仅适用于 macOS 平台。调用该方法前，你需要先调用 [enumeratePlaybackDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumerateplaybackdevices) 或 [enumerateRecordingDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumeraterecordingdevices) 获取设备列表。

<a id="api_iaudiodevicecollection_getdefaultdevice2_iaudiodevicecollection__parameters"></a>

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

<ParameterList>
<a id="devicename"></a>
<Parameter name="deviceName">

输出参数，系统默认音频设备的名称。

</Parameter>
<a id="devicetypename"></a>
<Parameter name="deviceTypeName">

输出参数，音频设备的类型，例如内置设备、USB 或 HDMI。

</Parameter>
<a id="deviceid"></a>
<Parameter name="deviceId">

输出参数，系统默认音频设备的设备 ID。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_getdefaultdevice2_iaudiodevicecollection__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicecollection_getdefaultdevice_iaudiodevicecollection"></a>

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

## getDefaultDevice [1/2] [#getdefaultdevice-12]

获取系统默认音频设备。

<a id="api_iaudiodevicecollection_getdefaultdevice_iaudiodevicecollection__prototype"></a>

```cpp
virtual int getDefaultDevice(char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicecollection_getdefaultdevice_iaudiodevicecollection__detailed_desc"></a>

- 该方法仅适用于 Windows 和 macOS 平台。
- 在调用该方法前，你需要先调用 [enumeratePlaybackDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumerateplaybackdevices) 或 [enumerateRecordingDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumeraterecordingdevices) 获取设备列表。

<a id="api_iaudiodevicecollection_getdefaultdevice_iaudiodevicecollection__parameters"></a>

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

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

输出参数，系统默认音频设备的名称。

</Parameter>
<a id="deviceid-1"></a>
<Parameter name="deviceId">

输出参数，系统默认音频设备的设备 ID。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_getdefaultdevice_iaudiodevicecollection__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicecollection_getdevice2_iaudiodevicecollection"></a>

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

## getDevice [2/2] [#getdevice-22]

按索引获取音频设备的名称、类型和 ID。

<a id="api_iaudiodevicecollection_getdevice2_iaudiodevicecollection__prototype"></a>

```cpp
virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicecollection_getdevice2_iaudiodevicecollection__detailed_desc"></a>

:::note
注： 该方法仅适用于 macOS 平台。
:::

<a id="api_iaudiodevicecollection_getdevice2_iaudiodevicecollection__parameters"></a>

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

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

设备的索引。

</Parameter>
<a id="devicename-2"></a>
<Parameter name="deviceName">

输出参数，设备名称。

</Parameter>
<a id="devicetypename-1"></a>
<Parameter name="deviceTypeName">

输出参数，音频设备的类型，例如内建、USB 和 HDMI。

</Parameter>
<a id="deviceid-2"></a>
<Parameter name="deviceId">

输出参数，设备 ID。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_getdevice2_iaudiodevicecollection__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicecollection_getdevice_iaudiodevicecollection"></a>

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

## getDevice [1/2] [#getdevice-12]

获取指定索引的视频设备的信息。

<a id="api_iaudiodevicecollection_getdevice_iaudiodevicecollection__prototype"></a>

```cpp
virtual int getDevice(int index, char deviceName[MAX_DEVICE_ID_LENGTH], char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicecollection_getdevice_iaudiodevicecollection__detailed_desc"></a>

<a id="api_iaudiodevicecollection_getdevice_iaudiodevicecollection__parameters"></a>

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

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

视频设备的索引值。该值必须小于 [getCount](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicecollection_getcount_iaudiodevicecollection) 返回的设备数量。

</Parameter>
<a id="devicename-3"></a>
<Parameter name="deviceName">

输出参数，表示设备名称。最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
<a id="deviceid-3"></a>
<Parameter name="deviceId">

输出参数，表示视频设备的设备 ID。最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_getdevice_iaudiodevicecollection__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_getloopbackdevice"></a>

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

## getLoopbackDevice [#getloopbackdevice]

获取当前的声卡采集设备。

<a id="api_iaudiodevicemanager_getloopbackdevice__prototype"></a>

```cpp
virtual int getLoopbackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getloopbackdevice__detailed_desc"></a>

该方法仅适用于 Windows 和 macOS 平台。

<a id="api_iaudiodevicemanager_getloopbackdevice__parameters"></a>

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

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

输出参数，当前声卡采集设备的 ID。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getloopbackdevice__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_getplaybackdevice"></a>

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

## getPlaybackDevice [#getplaybackdevice]

检索与设备 ID 关联的音频播放设备。

<a id="api_iaudiodevicemanager_getplaybackdevice__prototype"></a>

```cpp
virtual int getPlaybackDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getplaybackdevice__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_getplaybackdevice__parameters"></a>

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

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

输出参数，表示音频播放设备的设备 ID。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getplaybackdevice__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo"></a>

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

## getPlaybackDeviceInfo [1/2] [#getplaybackdeviceinfo-12]

获取音频播放设备的信息。

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo__prototype"></a>

```cpp
virtual int getPlaybackDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo__parameters"></a>

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

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

音频播放设备的 ID，最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
<a id="devicename-4"></a>
<Parameter name="deviceName">

输出参数，播放设备的名称，最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo2"></a>

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

## getPlaybackDeviceInfo [2/2] [#getplaybackdeviceinfo-22]

获取音频播放设备的信息和类型。

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo2__prototype"></a>

```cpp
virtual int getPlaybackDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo2__detailed_desc"></a>

该方法仅适用于 macOS 平台。

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo2__parameters"></a>

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

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

音频播放设备的 ID。

</Parameter>
<a id="devicename-5"></a>
<Parameter name="deviceName">

输出参数，播放设备的名称。

</Parameter>
<a id="devicetypename-2"></a>
<Parameter name="deviceTypeName">

输出参数，音频播放设备的类型，例如内置设备、USB 和 HDMI。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getplaybackdeviceinfo2__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_getplaybackdevicemute"></a>

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

## getPlaybackDeviceMute [#getplaybackdevicemute]

获取音频播放设备的静音状态。

<a id="api_iaudiodevicemanager_getplaybackdevicemute__prototype"></a>

```cpp
virtual int getPlaybackDeviceMute(bool *mute) = 0;
```

<a id="api_iaudiodevicemanager_getplaybackdevicemute__detailed_desc"></a>

<a id="api_iaudiodevicemanager_getplaybackdevicemute__parameters"></a>

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

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

输出参数，表示音频播放设备是否被静音。

- true：音频播放设备被静音。
- false：音频播放设备未被静音。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getplaybackdevicemute__return_values"></a>

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

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

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

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

<a id="api_iaudiodevicemanager_getplaybackdevicevolume"></a>

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

## getPlaybackDeviceVolume [#getplaybackdevicevolume]

获取音频播放设备的音量。

<a id="api_iaudiodevicemanager_getplaybackdevicevolume__prototype"></a>

```cpp
virtual int getPlaybackDeviceVolume(int *volume) = 0;
```

<a id="api_iaudiodevicemanager_getplaybackdevicevolume__detailed_desc"></a>

<a id="api_iaudiodevicemanager_getplaybackdevicevolume__parameters"></a>

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

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

输出参数，表示音频播放设备的音量，取值范围为 [0, 255]。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getplaybackdevicevolume__return_values"></a>

### 返回值 [#返回值-17]

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

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

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

<a id="api_iaudiodevicemanager_getrecordingdevice"></a>

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

## getRecordingDevice [#getrecordingdevice]

获取当前音频录制设备的设备 ID。

<a id="api_iaudiodevicemanager_getrecordingdevice__prototype"></a>

```cpp
virtual int getRecordingDevice(char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getrecordingdevice__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_getrecordingdevice__parameters"></a>

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

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

输出参数，当前音频录制设备的设备 ID。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getrecordingdevice__return_values"></a>

### 返回值 [#返回值-18]

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

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

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

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo"></a>

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

## getRecordingDeviceInfo [1/2] [#getrecordingdeviceinfo-12]

获取音频录制设备的信息。

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo__prototype"></a>

```cpp
virtual int getRecordingDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo__parameters"></a>

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

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

音频录制设备的 ID。

</Parameter>
<a id="devicename-6"></a>
<Parameter name="deviceName">

输出参数，录制设备的名称。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo__return_values"></a>

### 返回值 [#返回值-19]

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

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

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

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo2"></a>

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

## getRecordingDeviceInfo [2/2] [#getrecordingdeviceinfo-22]

获取音频采集设备的信息和类型。

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo2__prototype"></a>

```cpp
virtual int getRecordingDeviceInfo(char deviceId[MAX_DEVICE_ID_LENGTH], char deviceName[MAX_DEVICE_ID_LENGTH], char deviceTypeName[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo2__detailed_desc"></a>

该方法仅适用于 macOS 平台。

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo2__parameters"></a>

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

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

音频播放设备的 ID，最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
<a id="devicename-7"></a>
<Parameter name="deviceName">

输出参数，表示播放设备的名称，最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
<a id="devicetypename-3"></a>
<Parameter name="deviceTypeName">

输出参数，表示音频采集设备的类型，例如内置设备、USB 和 HDMI，最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getrecordingdeviceinfo2__return_values"></a>

### 返回值 [#返回值-20]

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

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

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

<a id="api_iaudiodevicemanager_getrecordingdevicemute"></a>

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

## getRecordingDeviceMute [#getrecordingdevicemute]

获取音频采集设备的静音状态。

<a id="api_iaudiodevicemanager_getrecordingdevicemute__prototype"></a>

```cpp
virtual int getRecordingDeviceMute(bool *mute) = 0;
```

<a id="api_iaudiodevicemanager_getrecordingdevicemute__detailed_desc"></a>

<a id="api_iaudiodevicemanager_getrecordingdevicemute__parameters"></a>

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

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

输出参数，表示音频采集设备是否处于静音状态。默认值为 false。

- true：麦克风处于静音状态。
- false：麦克风处于非静音状态。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getrecordingdevicemute__return_values"></a>

### 返回值 [#返回值-21]

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

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

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

<a id="api_iaudiodevicemanager_getrecordingdevicevolume"></a>

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

## getRecordingDeviceVolume [#getrecordingdevicevolume]

获取音频录制设备的音量。

<a id="api_iaudiodevicemanager_getrecordingdevicevolume__prototype"></a>

```cpp
virtual int getRecordingDeviceVolume(int *volume) = 0;
```

<a id="api_iaudiodevicemanager_getrecordingdevicevolume__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 平台。
:::

<a id="api_iaudiodevicemanager_getrecordingdevicevolume__parameters"></a>

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

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

输出参数，表示音频录制设备的音量，取值范围为 [0, 255]。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_getrecordingdevicevolume__return_values"></a>

### 返回值 [#返回值-22]

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

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

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

<a id="api_iaudiodevicecollection_isapplicationmute"></a>

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

## isApplicationMute [#isapplicationmute]

检查应用是否处于静音状态。

<a id="api_iaudiodevicecollection_isapplicationmute__prototype"></a>

```cpp
virtual int isApplicationMute(bool &mute) = 0;
```

<a id="api_iaudiodevicecollection_isapplicationmute__detailed_desc"></a>

<a id="api_iaudiodevicecollection_isapplicationmute__parameters"></a>

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

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

输出参数，表示应用是否处于静音状态：

- true：应用处于静音状态。
- false：应用未处于静音状态。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_isapplicationmute__return_values"></a>

### 返回值 [#返回值-23]

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

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

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

<a id="api_iaudiodevicecollection_release_iaudiodevicecollection"></a>

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

## release [#release]

释放 [IAudioDeviceCollection](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicecollection) 对象占用的所有资源。

<a id="api_iaudiodevicecollection_release_iaudiodevicecollection__prototype"></a>

```cpp
virtual void release() = 0;
```

<a id="api_iaudiodevicecollection_release_iaudiodevicecollection__detailed_desc"></a>

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

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

<a id="api_iaudiodevicemanager_release_iaudiodevicemanager"></a>

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

## release [#release-1]

释放 [IAudioDeviceManager](/zh-CN/api-reference/rtc/cpp-all-platforms/rtc-interface-class#class_iaudiodevicemanager) 对象占用的所有资源。

<a id="api_iaudiodevicemanager_release_iaudiodevicemanager__prototype"></a>

```cpp
virtual void release() = 0;
```

<a id="api_iaudiodevicemanager_release_iaudiodevicemanager__detailed_desc"></a>

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

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

<a id="api_iaudiodevicecollection_setapplicationmute"></a>

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

## setApplicationMute [#setapplicationmute]

设置是否静音 App。

<a id="api_iaudiodevicecollection_setapplicationmute__prototype"></a>

```cpp
virtual int setApplicationMute(bool mute) = 0;
```

<a id="api_iaudiodevicecollection_setapplicationmute__detailed_desc"></a>

<a id="api_iaudiodevicecollection_setapplicationmute__parameters"></a>

### 参数 [#参数-21]

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

是否静音 App：

- true：静音 App。
- false：取消静音 App。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_setapplicationmute__return_values"></a>

### 返回值 [#返回值-24]

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

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

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

<a id="api_iaudiodevicecollection_setapplicationvolume"></a>

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

## setApplicationVolume [#setapplicationvolume]

设置应用程序的音量。

<a id="api_iaudiodevicecollection_setapplicationvolume__prototype"></a>

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

<a id="api_iaudiodevicecollection_setapplicationvolume__detailed_desc"></a>

<a id="api_iaudiodevicecollection_setapplicationvolume__parameters"></a>

### 参数 [#参数-22]

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

应用程序的音量，取值范围为 [0, 255]。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_setapplicationvolume__return_values"></a>

### 返回值 [#返回值-25]

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

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

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

<a id="api_iaudiodevicecollection_setdevice_iaudiodevicecollection"></a>

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

## setDevice [#setdevice]

指定视频采集设备的设备 ID。

<a id="api_iaudiodevicecollection_setdevice_iaudiodevicecollection__prototype"></a>

```cpp
virtual int setDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicecollection_setdevice_iaudiodevicecollection__detailed_desc"></a>

:::note
注：

- 插拔设备不会改变其设备 ID。
- 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicecollection_setdevice_iaudiodevicecollection__parameters"></a>

### 参数 [#参数-23]

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

设备 ID。你可以通过调用 [enumerateVideoDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/video-device#api_ivideodevicemanager_enumeratevideodevices) 获取。

:::note
注： 最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。
:::

</Parameter>
</ParameterList>

<a id="api_iaudiodevicecollection_setdevice_iaudiodevicecollection__return_values"></a>

### 返回值 [#返回值-26]

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

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

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

<a id="api_iaudiodevicemanager_setloopbackdevice"></a>

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

## setLoopbackDevice [#setloopbackdevice]

设置 SDK 的声卡采集设备。

<a id="api_iaudiodevicemanager_setloopbackdevice__prototype"></a>

```cpp
virtual int setLoopbackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_setloopbackdevice__detailed_desc"></a>

SDK 默认使用当前播放设备作为声卡采集设备。如果你希望指定其他音频设备作为声卡采集设备，可以调用该方法，并将 `deviceId` 设置为目标设备。你可以通过该方法更改当前使用的音频路由，但不会更改默认音频路由。例如，若默认音频路由为麦克风，在加入频道前调用该方法将音频路由设置为声卡并开始设备测试，SDK 会在声卡上进行测试。测试完成并加入频道后，SDK 仍使用麦克风进行音频采集。

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_setloopbackdevice__scenario"></a>

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

该方法适用的典型场景如下：
使用 App A 通过蓝牙耳机播放音乐，同时使用 App B 进行视频通话并通过扬声器播放：

- 如果将声卡采集设备设置为蓝牙耳机，SDK 会将 App A 播放的音乐发布到远端。
- 如果将声卡采集设备设置为扬声器，SDK 不会将 App A 播放的音乐发布到远端。
- 如果先将声卡采集设备设置为蓝牙耳机，之后改用有线耳机播放 App A 的音乐，则需要再次调用该方法，将声卡采集设备设置为有线耳机，SDK 才会继续将音乐发布到远端。

<a id="api_iaudiodevicemanager_setloopbackdevice__parameters"></a>

### 参数 [#参数-24]

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

指定 SDK 的声卡采集设备。你可以通过调用 [enumeratePlaybackDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumerateplaybackdevices) 获取设备 ID。最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setloopbackdevice__return_values"></a>

### 返回值 [#返回值-27]

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

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

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

<a id="api_iaudiodevicemanager_setplaybackdevice"></a>

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

## setPlaybackDevice [#setplaybackdevice]

设置音频播放设备。

<a id="api_iaudiodevicemanager_setplaybackdevice__prototype"></a>

```cpp
virtual int setPlaybackDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_setplaybackdevice__detailed_desc"></a>

你可以调用此方法更改当前使用的音频路由，但不会更改默认音频路由。例如，若默认音频路由为扬声器 1，在加入频道前调用此方法将音频路由设置为扬声器 2 并开始设备测试，SDK 会在扬声器 2 上进行设备测试。设备测试完成并加入频道后，SDK 仍会使用默认音频路由扬声器 1。

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_setplaybackdevice__parameters"></a>

### 参数 [#参数-25]

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

指定音频播放设备的 ID。你可以通过调用 [enumeratePlaybackDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumerateplaybackdevices) 获取设备 ID。连接或断开音频设备不会改变 `deviceId` 的值。

:::note
注： 最大长度为 [MAX_DEVICE_ID_LENGTH_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-maxdeviceidlengthtype)。
:::

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setplaybackdevice__return_values"></a>

### 返回值 [#返回值-28]

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

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

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

<a id="api_iaudiodevicemanager_setplaybackdevicemute"></a>

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

## setPlaybackDeviceMute [#setplaybackdevicemute]

设置是否静音音频播放设备。

<a id="api_iaudiodevicemanager_setplaybackdevicemute__prototype"></a>

```cpp
virtual int setPlaybackDeviceMute(bool mute) = 0;
```

<a id="api_iaudiodevicemanager_setplaybackdevicemute__detailed_desc"></a>

<a id="api_iaudiodevicemanager_setplaybackdevicemute__parameters"></a>

### 参数 [#参数-26]

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

是否静音音频播放设备：

- true：静音音频播放设备。
- false：取消静音音频播放设备。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setplaybackdevicemute__return_values"></a>

### 返回值 [#返回值-29]

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

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

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

<a id="api_iaudiodevicemanager_setplaybackdevicevolume"></a>

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

## setPlaybackDeviceVolume [#setplaybackdevicevolume]

设置音频播放设备的音量。

<a id="api_iaudiodevicemanager_setplaybackdevicevolume__prototype"></a>

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

<a id="api_iaudiodevicemanager_setplaybackdevicevolume__detailed_desc"></a>

:::note
注： 该方法仅适用于 Windows 平台。
:::

<a id="api_iaudiodevicemanager_setplaybackdevicevolume__parameters"></a>

### 参数 [#参数-27]

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

音频播放设备的音量，取值范围为 [0,255]。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setplaybackdevicevolume__return_values"></a>

### 返回值 [#返回值-30]

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

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

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

<a id="api_iaudiodevicemanager_setrecordingdevice"></a>

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

## setRecordingDevice [#setrecordingdevice]

设置音频采集设备。

<a id="api_iaudiodevicemanager_setrecordingdevice__prototype"></a>

```cpp
virtual int setRecordingDevice(const char deviceId[MAX_DEVICE_ID_LENGTH]) = 0;
```

<a id="api_iaudiodevicemanager_setrecordingdevice__detailed_desc"></a>

你可以调用此方法更改当前使用的音频路由，但不会更改默认音频路由。例如，默认音频路由为麦克风，在加入频道前调用此方法将音频路由设置为蓝牙耳机并开始设备测试，SDK 会在蓝牙耳机上进行设备测试。设备测试完成并加入频道后，SDK 仍使用麦克风进行音频采集。

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="api_iaudiodevicemanager_setrecordingdevice__parameters"></a>

### 参数 [#参数-28]

<ParameterList>
<a id="deviceid-14"></a>
<Parameter name="deviceId">

音频采集设备的 ID。你可以通过调用 [enumerateRecordingDevices](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_enumeraterecordingdevices) 获取设备 ID。连接或断开音频设备不会改变 `deviceId` 的值。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setrecordingdevice__return_values"></a>

### 返回值 [#返回值-31]

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

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

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

<a id="api_iaudiodevicemanager_setrecordingdevicemute"></a>

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

## setRecordingDeviceMute [#setrecordingdevicemute]

设置音频采集设备的静音状态。

<a id="api_iaudiodevicemanager_setrecordingdevicemute__prototype"></a>

```cpp
virtual int setRecordingDeviceMute(bool mute) = 0;
```

<a id="api_iaudiodevicemanager_setrecordingdevicemute__detailed_desc"></a>

<a id="api_iaudiodevicemanager_setrecordingdevicemute__parameters"></a>

### 参数 [#参数-29]

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

是否将音频采集设备静音：

- true：静音音频采集设备。
- false：取消静音音频采集设备。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setrecordingdevicemute__return_values"></a>

### 返回值 [#返回值-32]

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

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

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

<a id="api_iaudiodevicemanager_setrecordingdevicevolume"></a>

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

## setRecordingDeviceVolume [#setrecordingdevicevolume]

设置音频采集设备的音量。

<a id="api_iaudiodevicemanager_setrecordingdevicevolume__prototype"></a>

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

<a id="api_iaudiodevicemanager_setrecordingdevicevolume__detailed_desc"></a>

该方法仅适用于 Windows 和 macOS 平台。

<a id="api_iaudiodevicemanager_setrecordingdevicevolume__parameters"></a>

### 参数 [#参数-30]

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

音频采集设备的音量，取值范围为 [0, 255]。0 表示静音，255 表示最大音量。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_setrecordingdevicevolume__return_values"></a>

### 返回值 [#返回值-33]

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

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

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

<a id="api_iaudiodevicemanager_startaudiodeviceloopbacktest"></a>

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

## startAudioDeviceLoopbackTest [#startaudiodeviceloopbacktest]

开始音频设备回路测试。

<a id="api_iaudiodevicemanager_startaudiodeviceloopbacktest__prototype"></a>

```cpp
virtual int startAudioDeviceLoopbackTest(int indicationInterval) = 0;
```

<a id="api_iaudiodevicemanager_startaudiodeviceloopbacktest__detailed_desc"></a>

该方法用于测试本地音频采集设备和播放设备是否正常工作。调用该方法后，音频采集设备会采集本地音频，音频播放设备会播放采集到的音频。SDK 会按照设置的时间间隔触发两个独立的 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，分别报告采集设备（`uid` = 0）和播放设备（`uid` = 1）的音量信息。

:::note
注：

- 该方法仅适用于 Windows 和 macOS 平台。
- 可以在加入频道前或加入频道后调用该方法。
- 该方法仅在主播角色调用时生效。
- 该方法仅测试本地音频设备，不涉及网络状况。
- 测试完成后，请调用 [stopAudioDeviceLoopbackTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_stopaudiodeviceloopbacktest) 停止音频设备回路测试。
:::

<a id="api_iaudiodevicemanager_startaudiodeviceloopbacktest__parameters"></a>

### 参数 [#参数-31]

<ParameterList>
<a id="indicationinterval"></a>
<Parameter name="indicationInterval">

SDK 触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调的时间间隔（毫秒）。建议设置为大于 200 毫秒的值。该值不能小于 10 毫秒，否则无法收到 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_startaudiodeviceloopbacktest__return_values"></a>

### 返回值 [#返回值-34]

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

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

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

<a id="api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager"></a>

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

## startPlaybackDeviceTest [#startplaybackdevicetest]

开始本地音频播放设备测试。

<a id="api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager__prototype"></a>

```cpp
virtual int startPlaybackDeviceTest(const char *testAudioFilePath) = 0;
```

<a id="api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager__detailed_desc"></a>

该方法用于测试本地音频播放设备是否正常工作。调用该方法后，SDK 会播放你指定的音频文件。如果你能听到声音，说明播放设备工作正常。调用该方法后，SDK 每 100 毫秒触发一次 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，报告 `uid` = 1 及播放设备的音量信息。该方法与 [startEchoTest](/zh-CN/api-reference/rtc/cpp-all-platforms/network#api_irtcengine_startechotest3) 的区别在于，[startPlaybackDeviceTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager) 仅检测本地音频播放设备是否正常，而 [startEchoTest](/zh-CN/api-reference/rtc/cpp-all-platforms/network#api_irtcengine_startechotest3) 可同时检测音视频设备和网络状况。

:::note
注： 请在加入频道前调用该方法。测试完成后，请调用 [stopPlaybackDeviceTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_stopplaybackdevicetest_iaudiodevicemanager) 停止测试，再加入频道。
:::

<a id="api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager__parameters"></a>

### 参数 [#参数-32]

<ParameterList>
<a id="testaudiofilepath"></a>
<Parameter name="testAudioFilePath">

音频文件路径，UTF-8 编码的字符串。支持的文件格式包括 wav、mp3、m4a 和 aac。支持的采样率包括 8000、16000、32000、44100 和 48000 Hz。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager__return_values"></a>

### 返回值 [#返回值-35]

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

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

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

<a id="api_iaudiodevicemanager_startrecordingdevicetest_iaudiodevicemanager"></a>

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

## startRecordingDeviceTest [#startrecordingdevicetest]

开始音频采集设备测试。

<a id="api_iaudiodevicemanager_startrecordingdevicetest_iaudiodevicemanager__prototype"></a>

```cpp
virtual int startRecordingDeviceTest(int indicationInterval) = 0;
```

<a id="api_iaudiodevicemanager_startrecordingdevicetest_iaudiodevicemanager__detailed_desc"></a>

调用该方法可以测试本地音频采集设备是否正常工作。调用后，SDK 会按照设定的时间间隔触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，报告 `uid` 为 0 的采集设备音量信息。该方法仅检测本地音频采集设备，而 [startEchoTest](/zh-CN/api-reference/rtc/cpp-all-platforms/network#api_irtcengine_startechotest3) 方法还可检测音视频设备和网络状况。

:::note
注： 请在加入频道前调用该方法。测试完成后，请在加入频道前调用 [stopRecordingDeviceTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_stoprecordingdevicetest_iaudiodevicemanager) 停止测试。
:::

<a id="api_iaudiodevicemanager_startrecordingdevicetest_iaudiodevicemanager__parameters"></a>

### 参数 [#参数-33]

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

触发 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调的时间间隔（毫秒）。该值必须大于 10，否则无法收到 [onAudioVolumeIndication](/zh-CN/api-reference/rtc/cpp-all-platforms/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，且 SDK 返回错误码 -2。建议设置为 100。

</Parameter>
</ParameterList>

<a id="api_iaudiodevicemanager_startrecordingdevicetest_iaudiodevicemanager__return_values"></a>

### 返回值 [#返回值-36]

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

  - -2：参数无效，请检查参数设置。

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

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

<a id="api_iaudiodevicemanager_stopaudiodeviceloopbacktest"></a>

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

## stopAudioDeviceLoopbackTest [#stopaudiodeviceloopbacktest]

停止音频设备回路测试。

<a id="api_iaudiodevicemanager_stopaudiodeviceloopbacktest__prototype"></a>

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

<a id="api_iaudiodevicemanager_stopaudiodeviceloopbacktest__detailed_desc"></a>

:::note
注： [stopAudioDeviceLoopbackTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_stopaudiodeviceloopbacktest) 方法仅适用于 Windows 和 macOS 平台。你可以在加入频道前或加入频道后调用该方法。该方法仅在主播角色调用时生效。调用 [startAudioDeviceLoopbackTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_startaudiodeviceloopbacktest) 方法开始回路测试后，请确保调用该方法停止回路测试。
:::

<a id="api_iaudiodevicemanager_stopaudiodeviceloopbacktest__return_values"></a>

### 返回值 [#返回值-37]

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

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

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

<a id="api_iaudiodevicemanager_stopplaybackdevicetest_iaudiodevicemanager"></a>

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

## stopPlaybackDeviceTest [#stopplaybackdevicetest]

停止音频播放设备测试。

<a id="api_iaudiodevicemanager_stopplaybackdevicetest_iaudiodevicemanager__prototype"></a>

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

<a id="api_iaudiodevicemanager_stopplaybackdevicetest_iaudiodevicemanager__detailed_desc"></a>

调用 [startPlaybackDeviceTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_startplaybackdevicetest_iaudiodevicemanager) 开始测试后，必须调用该方法停止测试。

:::note
注： 请在加入频道前调用该方法。
:::

<a id="api_iaudiodevicemanager_stopplaybackdevicetest_iaudiodevicemanager__return_values"></a>

### 返回值 [#返回值-38]

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

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

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

<a id="api_iaudiodevicemanager_stoprecordingdevicetest_iaudiodevicemanager"></a>

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

## stopRecordingDeviceTest [#stoprecordingdevicetest]

停止音频采集设备测试。

<a id="api_iaudiodevicemanager_stoprecordingdevicetest_iaudiodevicemanager__prototype"></a>

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

<a id="api_iaudiodevicemanager_stoprecordingdevicetest_iaudiodevicemanager__detailed_desc"></a>

调用 [startRecordingDeviceTest](/zh-CN/api-reference/rtc/cpp-all-platforms/device-management/audio-device#api_iaudiodevicemanager_startrecordingdevicetest_iaudiodevicemanager) 开始音频采集设备测试后，必须调用该方法停止测试。

:::note
注： 请在加入频道前调用该方法。
:::

<a id="api_iaudiodevicemanager_stoprecordingdevicetest_iaudiodevicemanager__return_values"></a>

### 返回值 [#返回值-39]

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

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

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

<a id="callback_irtcengineeventhandler_onaudiodevicestatechanged"></a>

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

## onAudioDeviceStateChanged [#onaudiodevicestatechanged]

音频设备状态发生变化回调。

<a id="callback_irtcengineeventhandler_onaudiodevicestatechanged__prototype"></a>

```cpp
virtual void onAudioDeviceStateChanged(const char* deviceId, int deviceType, int deviceState)
```

<a id="callback_irtcengineeventhandler_onaudiodevicestatechanged__detailed_desc"></a>

该回调用于通知音频设备的状态发生变化，例如设备上的耳机被拔出。

:::note
注： 该方法仅适用于 Windows 和 macOS 平台。
:::

<a id="callback_irtcengineeventhandler_onaudiodevicestatechanged__parameters"></a>

### 参数 [#参数-34]

<ParameterList>
<a id="deviceid-15"></a>
<Parameter name="deviceId">

设备 ID。

</Parameter>
<a id="devicetype"></a>
<Parameter name="deviceType">

设备类型，详见 [MEDIA_DEVICE_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-mediadevicetype)。

</Parameter>
<a id="devicestate"></a>
<Parameter name="deviceState">

设备状态，详见 [MEDIA_DEVICE_STATE_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-mediadevicestatetype)。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onaudiodevicevolumechanged"></a>

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

## onAudioDeviceVolumeChanged [#onaudiodevicevolumechanged]

音频设备或 App 音量变化时触发的回调。

<a id="callback_irtcengineeventhandler_onaudiodevicevolumechanged__prototype"></a>

```cpp
virtual void onAudioDeviceVolumeChanged(MEDIA_DEVICE_TYPE deviceType, int volume, bool muted)
```

<a id="callback_irtcengineeventhandler_onaudiodevicevolumechanged__detailed_desc"></a>

:::note
注： 该回调仅适用于 Windows 和 macOS 平台。
:::

<a id="callback_irtcengineeventhandler_onaudiodevicevolumechanged__parameters"></a>

### 参数 [#参数-35]

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

设备类型，详见 [MEDIA_DEVICE_TYPE](/zh-CN/api-reference/rtc/cpp-all-platforms/enum-mediadevicetype)。

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

音量值，范围为 [0, 255]。

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

音频设备是否静音：

- true：音频设备已静音。
- false：音频设备未静音。

</Parameter>
</ParameterList>

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

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