【问题标题】:uniquiely differentiate between multiple cameras [dshow, directx, win32api]唯一区分多个摄像头 [dshow, directx, win32api]
【发布时间】:2012-08-04 00:41:02
【问题描述】:

是否有可靠的方法以编程方式区分多个摄像头? 我枚举 CLSID_VideoInputDeviceCategory,然后在每个 IMoniker 上获取显示名称。我发现一些相机将它们插入不同的USB插座会返回不同的唯一ID,也就是说,插入不同插座的同一个相机被我的程序视为连接在不同位置的多个相机时间。插入不同 USB 插座的其他摄像头使用相同的 GetDisplayName 进行标识。最重要的是,我有两个相同的相机(Microsoft LifeCam HD-3000),当我将不同的硬件插入同一个插座时,我无法区分插入的是哪个硬件。

那么,如果我将多个相同的相机插入同一个 USB 端口,有没有办法真正区分它们?以及相关的反向问题:当我将同一台相机插入不同的 USB 插座时,如何识别它?

【问题讨论】:

    标签: winapi camera directshow


    【解决方案1】:

    根据 USB 设备序列号的可用性,将其重新插入不同的端口将为您提供相同或不同的绰号显示名称。仍然绰号显示名称是您能做的最好的。在此处查看有关此主题的更多信息:How to identify a video device correctly?

    【讨论】:

    • 是的,该线程解释了我的相机观察者。此 MS cam 没有序列号,将其插入不同的 USB 插座会创建一个新字符串。使用高端凸轮(Tandberg HD)我没有这样的问题,因为它有序列号(由 usbview 报告)。感谢您提供信息。
    • Roman,我还有另一个与 dshow 相关的问题。我看看你的博客,也许你能帮忙? stackoverflow.com/questions/11812670/…
    • 我可以使用DsDevice.DevicePath 字符串来唯一标识摄像机吗?在我的系统上,我连接了 4 个网络摄像头,所有四个都有不同的 DevicePath 字符串,所以我可以使用 DevicePath 作为下拉列表的值和“名称”作为文本。在整个 Windows 操作系统中,这种行为会一直保持不变吗?
    • @Amogh: DevicePath 是可选的,它存在于具有物理表示的设备中,并且可能不存在于虚拟设备中。所以这不是一个好的识别方法。绰号显示名称效果最好。
    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多