我正在尝试/dev/video<N>
通过 USB vendor:product
ID 识别相机,我发现sysfs 有该信息,例如:
cat /sys/class/video4linux/video0/device/input/input17/id/vendor
cat /sys/class/video4linux/video0/device/input/input17/id/product
但是,正如您所见,在我的示例中,我有子项.../input/input17/...
,并且该编号似乎对于我拥有的所有相机都不同。 中似乎只有一个目录input
。
但是我可以依赖它吗,这样我就可以使用模式了input/input*/...
?在哪里可以了解有关结构的更多信息?
答案1
这实际上并不是对我自己的问题的一个技术性答案,但至少对我来说,这个观察提供了足够的细节来识别相机:
连接相机可实现以下效果dmesg
:
$ dmesg
...
[48614.450392] usb 3-2.2: new high-speed USB device number 30 using xhci_hcd
...
[48614.884939] input: HBVCAM camera: HBVCAM camera as /devices/pci0000:00/0000:00:15.0/0000:03:00.0/usb3/3-2/3-2.2/3-2.2:1.0/input/input29
请注意/input29
,还请注意它说“新的高速 USB 设备30号“。这映射到等。每次我断开连接并断开相机时,/sys/class/video4linux/video0/device/input/input29/id/vendor
数字都会增加。29
30号似乎只是同一个数字的基于 1 的索引,也可以在中找到lsusb
:
$ lsusb
...
Bus 003 Device 030: ID 058f:3861 Alcor Micro Corp. VMware Virtual USB Hub
...
Device 030
是我感兴趣的相机,其数字对应于(从零开始)input29
。
这证实了我只需在input/input*/
路径中搜索,并假设其中只有一个项目,我可以忽略其编号。或者,如果我vid:pid
已经知道我的,我可以使用它lsusb
来获取设备编号,并使用它通过设备树找到我的路径。