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

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

<a id="toc_pc_video_device_management"></a>

<a id="api_ivideodevicemanager_enumeratevideodevices"></a>

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

## EnumerateVideoDevices [#enumeratevideodevices]

获取系统中所有的视频设备列表。

<a id="api_ivideodevicemanager_enumeratevideodevices__prototype"></a>

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

<a id="api_ivideodevicemanager_enumeratevideodevices__detailed_desc"></a>

### 详情 [#详情]

<a id="api_ivideodevicemanager_enumeratevideodevices__return_values"></a>

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

- 方法调用成功：返回一个 [DeviceInfo](/zh-CN/api-reference/rtc/csharp-windows/class-videodeviceinfo) 数组，其中包含系统中所有视频设备。
- 方法调用失败: 返回空列表。

<a id="api_ivideodevicemanager_getcapability"></a>

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

## GetCapability [#getcapability]

获取视频采集设备在指定的视频格式下的详细视频帧信息。

<a id="api_ivideodevicemanager_getcapability__prototype"></a>

```csharp
public abstract int GetCapability(string deviceIdUTF8, uint deviceCapabilityNumber, out VideoFormat capability);
```

<a id="api_ivideodevicemanager_getcapability__detailed_desc"></a>

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

在调用 [NumberOfCapabilities](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-video-device-management#api_ivideodevicemanager_numberofcapabilities) 获取视频采集设备支持的视频格式数量后，你可以调用该方法获取指定索引号支持的具体视频帧信息。

<a id="api_ivideodevicemanager_getcapability__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="deviceidutf8"></a>
<Parameter name="deviceIdUTF8">

视频采集设备的 ID。

</Parameter>
<a id="devicecapabilitynumber"></a>
<Parameter name="deviceCapabilityNumber">

视频格式的索引号。如果 NumberOfCapabilities 的返回值为 i，则该参数取值范围为[0,i)。

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

输出参数。表示指定视频格式的具体信息，包括宽度（px），高度（px）和帧率（fps）。详见 [VideoFormat](/zh-CN/api-reference/rtc/csharp-windows/class-videoformat)。

</Parameter>
</ParameterList>

<a id="api_ivideodevicemanager_getcapability__return_values"></a>

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

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

<a id="api_irtcengine_getvideodevicemanager"></a>

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

## GetVideoDeviceManager [#getvideodevicemanager]

获取 [IVideoDeviceManager](/zh-CN/api-reference/rtc/csharp-windows/rtc-interface-class#class_ivideodevicemanager) 对象，以管理视频设备。

<a id="api_irtcengine_getvideodevicemanager__prototype"></a>

```csharp
public abstract IVideoDeviceManager GetVideoDeviceManager();
```

<a id="api_irtcengine_getvideodevicemanager__return_values"></a>

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

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

<a id="api_ivideodevicemanager_getdevice"></a>

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

## GetDevice [#getdevice]

获取当前使用的视频采集设备。

<a id="api_ivideodevicemanager_getdevice__prototype"></a>

```csharp
public abstract int GetDevice(ref string deviceIdUTF8);
```

<a id="api_ivideodevicemanager_getdevice__detailed_desc"></a>

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

<a id="api_ivideodevicemanager_getdevice__parameters"></a>

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

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

输出参数。设备 ID。

</Parameter>
</ParameterList>

<a id="api_ivideodevicemanager_getdevice__return_values"></a>

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

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

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged"></a>

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

## OnVideoDeviceStateChanged [#onvideodevicestatechanged]

视频设备变化回调。

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__prototype"></a>

```csharp
public virtual void OnVideoDeviceStateChanged(string deviceId, int deviceType, int deviceState)
```

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__detailed_desc"></a>

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

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__desc"></a>

该回调提示系统视频设备状态发生改变，比如被拔出或移除。如果设备已使用外接摄像头采集，外接摄像头被拔开后，视频会中断。

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__parameters"></a>

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

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

设备 ID。

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

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

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

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

</Parameter>
</ParameterList>

<a id="api_ivideodevicemanager_numberofcapabilities"></a>

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

## NumberOfCapabilities [#numberofcapabilities]

获取指定视频采集设备支持的视频格式数量。

<a id="api_ivideodevicemanager_numberofcapabilities__prototype"></a>

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

<a id="api_ivideodevicemanager_numberofcapabilities__detailed_desc"></a>

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

视频采集设备可能支持多种视频格式，每一种格式都支持不同的视频帧宽度、视频帧高度、帧率组合。

你可以通过调用该方法，获取指定的视频采集设备可支持多少种视频格式，然后调用 [GetCapability](/zh-CN/api-reference/rtc/csharp-windows/device-management/pc-video-device-management#api_ivideodevicemanager_getcapability) 获取指定视频格式下的具体视频帧信息。

<a id="api_ivideodevicemanager_numberofcapabilities__parameters"></a>

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

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

视频采集设备的 ID。

</Parameter>
</ParameterList>

<a id="api_ivideodevicemanager_numberofcapabilities__return_values"></a>

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

- &gt; 0: 方法调用成功。返回该设备支持的视频格式数量。例如：如果指定的摄像头支持 10 种不同的视频格式，则返回值为 10。
- ≤ 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

<a id="api_irtcengine_querycodeccapability"></a>

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

## QueryCodecCapability [#querycodeccapability]

查询 SDK 支持的视频编解码能力。

<a id="api_irtcengine_querycodeccapability__prototype"></a>

```csharp
public abstract int QueryCodecCapability(ref CodecCapInfo[] codecInfo, ref int size);
```

<a id="api_irtcengine_querycodeccapability__detailed_desc"></a>

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

<a id="api_irtcengine_querycodeccapability__parameters"></a>

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

<ParameterList>
<a id="codecinfo"></a>
<Parameter name="codecInfo">

输入和输出参数，表示 SDK 的视频编码能力数组。详见 [CodecCapInfo](/zh-CN/api-reference/rtc/csharp-windows/class-codeccapinfo)。

- 输入值：用户执行该方法时定义的 CodecCapInfo，表示待查询的视频编解码能力。
- 输出值：方法执行完毕后输出的 CodecCapInfo，表示 SDK 实际支持的视频编解码能力。

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

输入和输出参数，表示 CodecCapInfo 数组的大小。

- 输入值：用户执行该方法时定义的 CodecCapInfo 的大小。
- 输出值：方法执行完毕后输出的 CodecCapInfo 的大小。

</Parameter>
</ParameterList>

<a id="api_irtcengine_querycodeccapability__return_values"></a>

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

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

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

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