# 桌面端音频设备管理 (/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management)

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

<a id="toc_pc_audio_device_management"></a>

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

## EnumeratePlaybackDevices [#enumerateplaybackdevices]

获取系统中所有的播放设备列表。

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

```csharp
public abstract DeviceInfo[] EnumeratePlaybackDevices();
```

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

### 详情 [#详情]

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

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

- 方法调用成功，返回一个 DeviceInfo 数组，包含所有音频播放设备的设备 ID 和设备名称。
- 方法调用失败: NULL。

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

## EnumerateRecordingDevices [#enumeraterecordingdevices]

获取系统中所有的音频采集设备列表。

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

```csharp
abstract DeviceInfo[] EnumerateRecordingDevices();
```

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

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

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

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

- 方法调用成功，返回一个 DeviceInfo 数组，包含所有音频采集设备的设备 ID 和设备名称。
- 方法调用失败: NULL。

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

## FollowSystemLoopbackDevice [#followsystemloopbackdevice]

设置声卡采集设备是否跟随系统默认的播放设备。

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

```csharp
public abstract int FollowSystemLoopbackDevice(bool enable);
```

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

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

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

### 参数 [#参数]

#### `enable` [#enable]

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

- true：跟随。当系统默认播放设备发生改变时，SDK 立即跟随切换声卡采集设备。
- false：不跟随。只有当 SDK 使用的声卡采集设备被移除后，SDK 才切换至系统默认的音频播放设备。

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

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

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

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

## FollowSystemPlaybackDevice [#followsystemplaybackdevice]

设置 SDK 使用的音频播放设备跟随系统默认的音频播放设备。

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

```csharp
public abstract int FollowSystemPlaybackDevice(bool enable);
```

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

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

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

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

#### `enable` [#enable-1]

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

- true：跟随。当系统默认音频播放设备发生改变时，SDK 立即切换音频播放设备。
- false：不跟随。只有当 SDK 使用的音频播放设备被移除后，SDK 才切换至系统默认的音频播放设备。

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

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

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

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

## FollowSystemRecordingDevice [#followsystemrecordingdevice]

设置 SDK 使用的音频采集设备跟随系统默认的音频采集设备。

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

```csharp
public abstract int FollowSystemRecordingDevice(bool enable);
```

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

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

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

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

#### `enable` [#enable-2]

是否跟随系统默认的音频采集设备：

- true：跟随。当系统默认的音频采集设备改变时，SDK 立即切换音频采集设备。
- false：不跟随。只有当 SDK 使用的音频采集设备被移除后，SDK 才切换至系统默认的音频采集设备。

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

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

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

<a id="api_irtcengine_getaudiodevicemanager"></a>

## GetAudioDeviceManager [#getaudiodevicemanager]

获取 IAudioDeviceManager 对象，以管理音频设备。

<a id="api_irtcengine_getaudiodevicemanager__prototype"></a>

```csharp
public abstract IAudioDeviceManager GetAudioDeviceManager();
```

<a id="api_irtcengine_getaudiodevicemanager__return_values"></a>

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

一个 [IAudioDeviceManager](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_iaudiodevicemanager) 对象。

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

## GetLoopbackDevice [#getloopbackdevice]

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

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

```csharp
public abstract int GetLoopbackDevice(ref string deviceId);
```

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

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

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

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

#### `deviceId` [#deviceid]

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

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

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

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

<a id="api_iaudiodevicemanager_getplaybackdefaultdevice"></a>

## GetPlaybackDefaultDevice [1/2] [#getplaybackdefaultdevice-12]

获取系统默认的音频播放设备。

<a id="api_iaudiodevicemanager_getplaybackdefaultdevice__prototype"></a>

```csharp
public abstract int GetPlaybackDefaultDevice(ref string deviceId, ref string deviceName);
```

<a id="api_iaudiodevicemanager_getplaybackdefaultdevice__detailed_desc"></a>

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

<a id="api_iaudiodevicemanager_getplaybackdefaultdevice__parameters"></a>

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

#### `deviceId` [#deviceid-1]

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

#### `deviceName` [#devicename]

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

<a id="api_iaudiodevicemanager_getplaybackdefaultdevice__return_values"></a>

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

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

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

## GetPlaybackDevice [#getplaybackdevice]

获取当前音频播放设备。

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

```csharp
public abstract int GetPlaybackDevice(ref string deviceId);
```

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

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

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

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

#### `deviceId` [#deviceid-2]

输出参数，当前音频播放设备的设备 ID。

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

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

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

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

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

获取音频播放设备信息。

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

```csharp
public abstract int GetPlaybackDeviceInfo(ref string deviceId, ref string deviceName);
```

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

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

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

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

#### `deviceId` [#deviceid-3]

输出参数，播放设备的设备 ID。

#### `deviceName` [#devicename-1]

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

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

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

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

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

## GetPlaybackDeviceMute [#getplaybackdevicemute]

获取当前播放设备静音状态。

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

```csharp
public abstract bool GetPlaybackDeviceMute();
```

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

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

- true: 播放设备为静音状态。
- false: 播放设备为非静音状态。

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

## GetPlaybackDeviceVolume [#getplaybackdevicevolume]

获取播放设备音量。

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

```csharp
public abstract int GetPlaybackDeviceVolume();
```

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

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

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

<a id="api_iaudiodevicemanager_getrecordingdefaultdevice"></a>

## GetRecordingDefaultDevice [1/2] [#getrecordingdefaultdevice-12]

获取系统默认的音频采集设备。

<a id="api_iaudiodevicemanager_getrecordingdefaultdevice__prototype"></a>

```csharp
public abstract int GetRecordingDefaultDevice(ref string deviceId, ref string deviceName);
```

<a id="api_iaudiodevicemanager_getrecordingdefaultdevice__detailed_desc"></a>

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

<a id="api_iaudiodevicemanager_getrecordingdefaultdevice__parameters"></a>

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

#### `deviceId` [#deviceid-4]

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

#### `deviceName` [#devicename-2]

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

<a id="api_iaudiodevicemanager_getrecordingdefaultdevice__return_values"></a>

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

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

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

## GetRecordingDevice [#getrecordingdevice]

获取当前音频采集设备。

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

```csharp
public abstract int GetRecordingDevice(ref string deviceId);
```

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

### 详情 [#详情-10]

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

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

#### `deviceId` [#deviceid-5]

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

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

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

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

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

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

获取音频采集设备信息。

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

```csharp
public abstract int GetRecordingDeviceInfo(ref string deviceId, ref string deviceName);
```

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

### 详情 [#详情-11]

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

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

#### `deviceId` [#deviceid-6]

输出参数，播放设备的设备 ID。

#### `deviceName` [#devicename-3]

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

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

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

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

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

## GetRecordingDeviceMute [#getrecordingdevicemute]

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

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

```csharp
public abstract bool GetRecordingDeviceMute();
```

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

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

- true: 采集设备为静音状态。
- false: 采集设备为非静音状态。

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

## GetRecordingDeviceVolume [#getrecordingdevicevolume]

获取音频采集设备音量。

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

```csharp
public abstract int GetRecordingDeviceVolume();
```

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

### 详情 [#详情-12]

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

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

音频采集设备音量。取值范围 [0,255]。

<a id="api_ivideodevicemanager_setdevice"></a>

## SetDevice [#setdevice]

通过设备 ID 指定视频采集设备。

<a id="api_ivideodevicemanager_setdevice__prototype"></a>

```csharp
public abstract int SetDevice(string deviceIdUTF8);
```

<a id="api_ivideodevicemanager_setdevice__detailed_desc"></a>

### 详情 [#详情-13]

:::warning[注意]
- 插拔设备不会改变设备 ID。
:::

<a id="api_ivideodevicemanager_setdevice__parameters"></a>

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

#### `deviceIdUTF8` [#deviceidutf8]

设备 ID。可通过调用 [EnumerateVideoDevices](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-video-device-management#api_ivideodevicemanager_enumeratevideodevices) 方法获取。

<a id="api_ivideodevicemanager_setdevice__return_values"></a>

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

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

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

## SetLoopbackDevice [#setloopbackdevice]

指定声卡采集设备。

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

```csharp
public abstract int SetLoopbackDevice(string deviceId);
```

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

### 详情 [#详情-14]

SDK 默认采用当前的播放设备作为声卡采集设备，如果想要指定其他音频设备作为声卡采集设备，则调用该方法并设置 deviceId 为你想要指定的声卡采集设备。

该方法可以更改当前的音频采集设备，但不改变系统默认的音频采集设备。假设系统默认的音频采集设备是麦克风 1，你在加入频道前调用该方法设置当前的音频路由为声卡 1，如果在此时进行设备检测，SDK 会对声卡 1 做设备检测。检测结束后，当你加入频道时 SDK 依然会选择使用系统默认的音频采集设备，即麦克风 1。

:::info[注]
该方法适用的场景如下：

使用 App A 播放音乐，通过蓝牙耳机播放；同时使用 App B 进行视频会议，通过扬声器播放。

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

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

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

#### `deviceId` [#deviceid-7]

指定 SDK 的声卡采集设备。由 [EnumeratePlaybackDevices](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_enumerateplaybackdevices) 获取。插拔设备不会影响 deviceId。

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

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

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

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

## SetPlaybackDevice [#setplaybackdevice]

指定播放设备。

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

```csharp
public abstract int SetPlaybackDevice(string deviceId);
```

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

### 详情 [#详情-15]

该方法可以更改当前的音频路由，但不会改变系统默认的音频路由。假设系统默认的音频路由是扬声器 1，你在加入频道前调用该方法设置当前的音频路由为扬声器 2，如果在此时进行设备检测，SDK 会对扬声器 2 进行检测。检测结束后，当你加入频道时 SDK 依然会选择使用系统默认的音频路由，即扬声器 1。

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

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

#### `deviceId` [#deviceid-8]

指定播放设备。由 [EnumeratePlaybackDevices](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_enumerateplaybackdevices) 获取。插拔设备不会影响 deviceId。

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

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

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

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

## SetPlaybackDeviceMute [#setplaybackdevicemute]

设置播放设备静音。

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

```csharp
public abstract int SetPlaybackDeviceMute(bool mute);
```

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

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

#### `mute` [#mute]

是否设置播放设备为静音：

- true: 播放设备设为静音。
- false: 播放设备不设为静音。

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

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

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

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

## SetPlaybackDeviceVolume [#setplaybackdevicevolume]

设置播放设备音量。

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

```csharp
public abstract int SetPlaybackDeviceVolume(int volume);
```

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

### 详情 [#详情-16]

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

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

#### `volume` [#volume]

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

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

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

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

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

## SetRecordingDevice [#setrecordingdevice]

指定音频采集设备。

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

```csharp
public abstract int SetRecordingDevice(string deviceId);
```

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

### 详情 [#详情-17]

该方法可以更改当前的音频采集设备，但不改变系统默认的音频采集设备。假设系统默认的音频采集设备是麦克风 1，你在加入频道前调用该方法设置当前的音频路由为蓝牙耳机 1，如果在此时进行设备检测，SDK 会对蓝牙耳机 1 进行检测。检测结束后，当你加入频道时 SDK 依然会选择使用系统默认的音频采集设备，即麦克风 1。

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

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

#### `deviceId` [#deviceid-9]

音频采集设备的 Device ID。可通过 [EnumerateRecordingDevices](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_enumeraterecordingdevices) 获取。插拔设备不会影响 deviceId。

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

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

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

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

## SetRecordingDeviceMute [#setrecordingdevicemute]

设置当前音频采集设备静音。

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

```csharp
public abstract int SetRecordingDeviceMute(bool mute);
```

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

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

#### `mute` [#mute-1]

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

- true: 采集设备静音。
- false: 采集设备为非静音。

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

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

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

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

## SetRecordingDeviceVolume [#setrecordingdevicevolume]

设置音频采集设备音量。

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

```csharp
public abstract int SetRecordingDeviceVolume(int volume);
```

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

### 详情 [#详情-18]

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

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

#### `volume` [#volume-1]

音频采集设备音量。取值范围 [0,255]。0 代表无声，255 代表最大音量。

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

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

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

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

## StartAudioDeviceLoopbackTest [#startaudiodeviceloopbacktest]

开始音频设备回路测试。

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

```csharp
public abstract int StartAudioDeviceLoopbackTest(int indicationInterval);
```

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

### 详情 [#详情-19]

该方法测试音频采集和播放设备是否能正常工作。一旦测试开始，音频采集设备会采集本地音频，然后使用音频播放设备播放出来。SDK 会按设置的时间间隔触发两个 [OnAudioVolumeIndication](/zh-CN/api-reference/rtc/csharp-windows/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，分别报告音频采集设备（uid = 0）和音频播放设置（uid = 1）的音量信息。

:::warning[注意]
- 该方法在加入频道前后都可调用。
- 该方法仅支持主播角色调用。
- 该方法仅在本地进行音频设备测试，不涉及网络连接。
- 完成测试后，必须调用 StopAudioDeviceLoopbackTest 停止音频设备回路测试。
:::

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

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

#### `indicationInterval` [#indicationinterval]

SDK 触发 OnAudioVolumeIndication 回调的时间间隔，单位为毫秒。建议设置到大于 200 毫秒。不得少于 10 毫秒，否则会收不到 OnAudioVolumeIndication 回调。

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

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

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

<a id="api_iaudiodevicemanager_startplaybackdevicetest"></a>

## StartPlaybackDeviceTest [#startplaybackdevicetest]

启动音频播放设备测试。

<a id="api_iaudiodevicemanager_startplaybackdevicetest__prototype"></a>

```csharp
public abstract int StartPlaybackDeviceTest(string testAudioFilePath);
```

<a id="api_iaudiodevicemanager_startplaybackdevicetest__detailed_desc"></a>

### 详情 [#详情-20]

该方法用于测试本地音频播放设备是否能正常工作。启动测试后，SDK 播放指定的音频文件，测试者如果能听到声音，说明播放设备能正常工作。

调用该方法后，SDK 会每隔 100 毫秒触发一次 [OnAudioVolumeIndication](/zh-CN/api-reference/rtc/csharp-windows/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，报告 uid = 1 及播放设备的音量信息。

该方法和 [StartEchoTest](/zh-CN/api-reference/rtc/csharp-windows/network#api_irtcengine_startechotest3) 的区别在于该方法检测本地的音频播放设备能否正常工作，后者可以检测音视频设备及网络是否正常。

:::warning[注意]
该方法需要在加入频道前调用。测试完成后，如需加入频道，请确保先调用 [StopPlaybackDeviceTest](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_stopplaybackdevicetest) 停止设备测试。
:::

<a id="api_iaudiodevicemanager_startplaybackdevicetest__parameters"></a>

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

#### `testAudioFilePath` [#testaudiofilepath]

音频文件的绝对路径，路径字符串使用 UTF-8 编码格式。

- 支持文件格式: wav、mp3、m4a、aac。
- 支持文件采样率: 8000、16000、32000、44100、48000。

<a id="api_iaudiodevicemanager_startplaybackdevicetest__return_values"></a>

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

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

<a id="api_iaudiodevicemanager_startrecordingdevicetest"></a>

## StartRecordingDeviceTest [#startrecordingdevicetest]

启动音频采集设备测试。

<a id="api_iaudiodevicemanager_startrecordingdevicetest__prototype"></a>

```csharp
public abstract int StartRecordingDeviceTest(int indicationInterval);
```

<a id="api_iaudiodevicemanager_startrecordingdevicetest__detailed_desc"></a>

### 详情 [#详情-21]

该方法用于测试本地音频采集设备是否能正常工作。调用该方法后，SDK 会按设置的时间间隔触发 [OnAudioVolumeIndication](/zh-CN/api-reference/rtc/csharp-windows/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调，报告 uid = 0 及采集设备的音量信息。

该方法和 [StartEchoTest](/zh-CN/api-reference/rtc/csharp-windows/network#api_irtcengine_startechotest3) 的区别在于该方法检测本地的音频采集设备能否正常工作，后者可以检测音视频设备及网络是否正常。

:::info[注]
该方法需要在加入频道前调用。测试完成后，如需加入频道，请确保先调用 [StopRecordingDeviceTest](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_stoprecordingdevicetest) 停止设备测试。
:::

<a id="api_iaudiodevicemanager_startrecordingdevicetest__parameters"></a>

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

#### `indicationInterval` [#indicationinterval-1]

SDK 触发 [OnAudioVolumeIndication](/zh-CN/api-reference/rtc/csharp-windows/audio/audio-basic#callback_irtcengineeventhandler_onaudiovolumeindication) 回调的时间间隔，单位为毫秒，最小取值为 10，否则会收不到 OnAudioVolumeIndication 回调，SDK 会返回错误码 `-2`。声网推荐你将该值设为 100。

<a id="api_iaudiodevicemanager_startrecordingdevicetest__return_values"></a>

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

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。 详见 [错误码](/zh-CN/realtime-media/rtc/reference/error-code) 了解详情和解决建议。
  - -2: 参数设置错误，请重新设置参数。

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

## StopAudioDeviceLoopbackTest [#stopaudiodeviceloopbacktest]

停止音频设备回路测试。

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

```csharp
public abstract int StopAudioDeviceLoopbackTest();
```

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

### 详情 [#详情-22]

:::warning[注意]
- 该方法在加入频道前后都可调用。
- 该方法仅支持主播角色调用。
- 在调用 StartAudioDeviceLoopbackTest 后，必须调用该方法停止音频设备回路测试。
:::

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

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

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

<a id="api_iaudiodevicemanager_stopplaybackdevicetest"></a>

## StopPlaybackDeviceTest [#stopplaybackdevicetest]

停止音频播放设备测试。

<a id="api_iaudiodevicemanager_stopplaybackdevicetest__prototype"></a>

```csharp
public abstract int StopPlaybackDeviceTest();
```

<a id="api_iaudiodevicemanager_stopplaybackdevicetest__detailed_desc"></a>

### 详情 [#详情-23]

该方法用于停止音频播放设备测试。调用 [StartPlaybackDeviceTest](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_startplaybackdevicetest) 后，必须调用该方法停止测试。

:::warning[注意]
该方法需要在加入频道前调用。
:::

<a id="api_iaudiodevicemanager_stopplaybackdevicetest__return_values"></a>

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

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

<a id="api_iaudiodevicemanager_stoprecordingdevicetest"></a>

## StopRecordingDeviceTest [#stoprecordingdevicetest]

停止音频采集设备测试。

<a id="api_iaudiodevicemanager_stoprecordingdevicetest__prototype"></a>

```csharp
public abstract int StopRecordingDeviceTest();
```

<a id="api_iaudiodevicemanager_stoprecordingdevicetest__detailed_desc"></a>

### 详情 [#详情-24]

该方法用于停止音频采集设备测试。调用 [StartRecordingDeviceTest](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-audio-device-management#api_iaudiodevicemanager_startrecordingdevicetest) 后，必须调用该方法停止测试。

:::info[注]
该方法需要在加入频道前调用。
:::

<a id="api_iaudiodevicemanager_stoprecordingdevicetest__return_values"></a>

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

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

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

## OnAudioDeviceStateChanged [#onaudiodevicestatechanged]

音频设备变化回调。

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

```csharp
public virtual void OnAudioDeviceStateChanged(string deviceId, MEDIA_DEVICE_TYPE deviceType, MEDIA_DEVICE_STATE_TYPE deviceState) { }
```

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

提示系统音频设备状态发生改变，比如耳机被拔出。

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

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

#### `deviceId` [#deviceid-10]

设备 ID。

#### `deviceType` [#devicetype]

设备类型定义。详见 [MEDIA_DEVICE_TYPE](/zh-CN/api-reference/rtc/csharp-windows/enum-mediadevicetype)。

#### `deviceState` [#devicestate]

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

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

## OnAudioDeviceVolumeChanged [#onaudiodevicevolumechanged]

音频设备或 App 的音量发生改变回调。

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

```csharp
public virtual void OnAudioDeviceVolumeChanged(MEDIA_DEVICE_TYPE deviceType, int volume, bool muted)
```

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

当音频播放、采集设备或 App 的音量发生改变时，会触发该回调。

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

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

#### `deviceType` [#devicetype-1]

设备类型定义。详见 [MEDIA_DEVICE_TYPE](/zh-CN/api-reference/rtc/csharp-windows/enum-mediadevicetype)。

#### `volume` [#volume-2]

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

#### `muted` [#muted]

音频设备是否为静音状态：

- true: 音频设备已静音。
- false: 音频设备未被静音。
