用Directshow SDK很容易实现该功能,但是开发者必须了解Directshow SDK的一些基础知识,对于不了解Directshow的开发员就有点头疼了。为了更方便他们开发,我封装了一个动态库,可以枚举系统的视音频采集设备(仅支持Windows系统),动态库使用非常简单,因为只有一个接口:
//枚举指定类型的所有采集设备的名称
ENUMDEVICE_API HRESULT EnumDevice(CAPTURE_DEVICE_TYPE type, char * deviceList[], int nListLen, int & iNumCapDevices);
其中,输入参数type是一个枚举类型,定义如下:
enum CAPTURE_DEVICE_TYPE
{
DSHOW_VIDEO_DEVICE = 0,
DSHOW_AUDIO_DEVICE,
};
如果要枚举视频采集设备,则传入0;如果枚举音频设备,则传入1。
使用有一个地方要注意:因为DShow需要用到COM,所以调用该接口前外部需要调用COM库的初始化函数:::CoInitialize(NULL);
调用的例子代码:
::CoInitialize(NULL); //调用DirectShow SDK的API需要用到COM库
int iVideoCapDevNum = 0;
int iAudioCapDevNum = 0;
char * DevicesArray[20];
for(int i=0; i<20; i+&#