當前位置:
首頁 >
如何枚举系统的视音频采集设备
發布時間:2023/12/14
43
豆豆
生活随笔
收集整理的這篇文章主要介紹了
如何枚举系统的视音频采集设备
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ??用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++){DevicesArray[i] = new char[256];memset(DevicesArray[i], 0, 256);}HRESULT hr;hr = EnumDevice(DSHOW_VIDEO_DEVICE, DevicesArray, sizeof(DevicesArray)/sizeof(DevicesArray[0]), iVideoCapDevNum);if(hr == S_OK){for(int i=0; i<iVideoCapDevNum; i++){CString strDevName = DevicesArray[i];}}hr = EnumDevice(DSHOW_AUDIO_DEVICE, DevicesArray, sizeof(DevicesArray)/sizeof(DevicesArray[0]), iAudioCapDevNum);if(hr == S_OK){for(int i=0; i<iAudioCapDevNum; i++){CString strDevName = DevicesArray[i];}}for(int i=0; i<20; i++){delete DevicesArray[i];DevicesArray[i] = NULL;}該動態庫的下載地址:https://download.csdn.net/download/zhoubotong2012/10907044
總結
以上是生活随笔為你收集整理的如何枚举系统的视音频采集设备的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.8Linux下的软件管理
- 下一篇: 戴尔G7 7588 Windows 10