
# 视频设备管理
本章节介绍了全平台C++ SDK的IHRTCVideoDeviceManager接口详情。
表1IHRTCVideoDeviceManager接口 
| 接口                                                                                   | 描述         |
|:---|:---|
| [getVideoDevices]         | 获取系统视频设备列表 |
| [setVideoDevice]          | 设置视频设备     |
| [getCurrentVideoDevice] | 获取当前视频设备   |
| [cameraDeviceTest]                              | 视频采集设备测试   |
| [finishCameraDeviceTest]                       | 结束视频采集设备测试 |
   
 表2IVideoDeviceCollection类 
| 接口                                            | 描述           |
|:---|:---|
| [getCount] | 获取设备个数       |
| [getDevice] | 通过设备序号获取设备信息 |
| [release]   | 释放接口         |
   
 #### getVideoDevices
```
virtual int getVideoDevices(HRTCDeviceInfo *deviceInfo, unsigned int *counts)
```
【**功能说明**】
获取系统视频设备列表。
【**请求参数**】
- deviceInfo：输出参数，获取系统设备详情，包括设备标识和设备名称。具体请参见[HRTCDeviceInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section1775174212306)。
- counts：输入输出参数，获取deviceInfo对象数量，输入值为deviceInfo的数量，将会返回小于等于counts数量的设备信息。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
#### getVideoDevices
```
virtual IVideoDeviceCollection * getVideoDevices()
```
【**功能说明**】
获取系统视频设备列表。
【**返回参数**】
IVideoDeviceCollection：视频设备列表，具体请参见[IVideoDeviceCollection]。
 #### setVideoDevice
```
virtual int setVideoDevice(const char deviceId[HRTC_MAX_DEVICE_ID_LEN+ 1])
```
【**功能说明**】
设置视频设备。
【**请求参数**】
deviceId：设备标识。可通过[getVideoDevices]获取。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 通话前没有选择任何设备，通话中使用默认设备。
- 通话前已选择指定设备，通话中直接生效。
- 通话中所有拔插视频设备的操作，不会自动切换设备，需要应用重新调用该接口并设置对应设备才生效。
 
 #### getCurrentVideoDevice
```
virtual int getCurrentVideoDevice(char deviceId[HRTC_MAX_DEVICE_ID_LEN + 1])
```
【**功能说明**】
获取当前视频设备。
【**请求参数**】
deviceId：输出参数。设备标识。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### cameraDeviceTest
```
virtual int cameraDeviceTest(view_t hwnd)
```
【**功能说明**】
视频采集设备测试，只支持入会前调用。
【**请求参数**】
hwnd：窗口句柄。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### finishCameraDeviceTest
```
virtual int finishCameraDeviceTest()
```
【**功能说明**】
结束视频采集设备测试，只支持入会前调用。
【**请求参数**】
无。
【**返回参数**】
- 0：方法调用成功。
- \> 0：方法调用失败。具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0125.html)。
 
 #### getCount
```
virtual int getCount()
```
【**功能说明**】
获取当前视频设备个数。
【**返回参数**】
视频设备个数。
 #### getDevice
```
virtual HRTCDeviceInfo* getDevice(int index)
```
【**功能说明**】
通过视频序号获取视频设备信息。一般轮询取设备信息，index从0到count取到的个数减1。
【**返回参数**】
视频设备信息，具体请参见[HRTCDeviceInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0128.html#rtc_05_0128__section1775174212306)。
 #### release
```
virtual void release()
```
【**功能说明**】
释放接口。
