织梦CMS - 轻松建站从此开始!

罗索

枚举音视频采集设备

jackyhwei 发布于 2013-07-17 09:23 点击:次 
Windows下枚举音视频采集设备的代码
TAG:

#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#include <streams.h>
#include <atlconv.h>


#pragma comment(lib, "Winmm.lib")
#pragma comment(lib, "STRMBASE.lib")
#pragma comment(lib, "atls.lib")

int main(int argc, char* argv[])
{
    UINT nID;
    UINT nNumDev = waveInGetNumDevs();

    for (nID = 0; nID < nNumDev; nID++)
    {
        WAVEINCAPS capTmp;  
        if (waveInGetDevCaps(nID, &capTmp, sizeof(capTmp)) == 0)  
        {
            printf("No %d: %s\n", nID, capTmp.szPname);
        }
    }
    printf("\n");

    CoInitialize(NULL);
    //枚举所有的视频捕获设备
    ICreateDevEnum *pCreateDevEnum ;
    //生成设备枚举器pCreateDevEnum
    HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum,NULL,CLSCTX_INPROC_SERVER,IID_ICreateDevEnum,(void**)&pCreateDevEnum);
    if( hr != NOERROR ) return false ;
    IEnumMoniker *pEm;
    //创建视频输入设备类枚举器
    hr = pCreateDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory,&pEm,0);
    if( hr != NOERROR ) return false ;
    pEm->Reset(); //复位该设备
    ULONG cFetched;
    IMoniker *pM;
    int index = 0 ;
    //获取设备
    while( hr = pEm->Next(1,&pM,&cFetched), hr == S_OK )
    {
        IPropertyBag *pBag;
        //获取该设备的属性集
        hr = pM->BindToStorage(0,0,IID_IPropertyBag,(void**)&pBag);
        if(SUCCEEDED(hr))
        {
            VARIANT var ;
            var.vt = VT_BSTR; //保存的是二进制的数据
            hr = pBag->Read(L"FriendlyName",&var,NULL); //获取FriendlyName形式的信息
            if( hr == NOERROR )
            {
                USES_CONVERSION;
                LPTSTR szTemp = W2T(var.bstrVal);
                printf("No %d: %s\n", index, szTemp);

                SysFreeString(var.bstrVal);   //释放二进制数据资源,必须释放
            }
            pBag ->Release();
        }
        pM->Release();
        index++;
    }

}

(yeyingxian)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201307/16693.html]
本文出处:百度博客 作者:yeyingxian 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容