首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DVR设备缺少DirectShow GUID

DVR设备缺少DirectShow GUID
EN

Stack Overflow用户
提问于 2010-11-19 13:38:26
回答 1查看 1.9K关注 0票数 2

我在一个DShowNET项目中使用C#,我一直在尝试多张卡。我试图访问的卡是一个GV-8004A,这是一个捕获卡,通常使用的GeoVision闭路电视软件。

问题是,在设备管理器中,它被认为是一种“DVR设备”,它的guid与我一直使用的视频输入设备不同,我不知道DShowNET guid,但相信它可能与此guid.有关。

我的问题是“如何将‘设备类guid'转换为DirectShow中使用的Guid?或者说,这些甚至可以等同?“

设备管理器中的GUID

  • GeoVision GV-800A {4d36e96c-e325-11ce-bfc1-0123456789ab}
  • {4d36e96c-e325-11ce-bfc1-08002be10318} AVerMedia
  • {4d36e96c-e325-11ce-bfc1-08002be10318} Dazzle

GUID in DShowLib

  • VideoInputDevice (0x860BB310,0x5D01,0x11d0,0xBD,0x3B,0x00,0xA0,0xC9,0x11,0xCE,0x86)

编辑

基本上,最终目标是能够将它作为捕获过滤器连接到一个图形上以保存FilterCatergory.VideoInputDevice,但是现在这个设备(GeoVision)没有出现在可用的捕获设备列表中,但是它是一个捕获设备,只是驱动程序将它识别为'DVR设备‘。

我使用CLSID将它传递到DShowNET函数中,以返回该类型可用设备的ArrayList:

DsDev.GetDevicesOfCat(FilterCategory.VideoInputDevice, out m_capDevices)

我需要知道CLSID_**的DVR设备**或从哪里得到的。我认为它可以从‘设备类guid’派生出来,但我被告知这是不可能的。

EN

回答 1

Stack Overflow用户

发布于 2011-02-17 23:48:57

你可以用这样的东西:

代码语言:javascript
复制
    const string CAPTURE = "•GeoVision GV-800A";
    s_CaptureDevices = BuildDeviceList(FilterCategory.AMKSCapture, CAPTURE);

    private static List<DsDevice> BuildDeviceList(Guid category, string name)
    {
        var list = new List<DsDevice>();
        DsDevice[] devices = DsDevice.GetDevicesOfCat(category);
        for (int i = 0; i < devices.Length; i++)
        {
            if (!string.IsNullOrEmpty(devices[i].Name) && devices[i].Name.Equals(name))
            {
                list.Add(devices[i]);
            }
        }
        return list;
    }

另一个选项是使用GraphEditPlus并将捕获过滤器添加到图中。然后,您可以找到GUID,直接使用如下代码创建过滤器对象:

代码语言:javascript
复制
var captureFilter = (IBaseFilter) Activator.CreateInstance(Type.GetTypeFromCLSID(new DsGuid("...guid...")));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4225501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档