我正在开发一个使用 WebUSB 的 UVC 实用程序,但我无法让它仅列出网络摄像头。我应该能够添加基于 deviceClass 和 deviceSubClass 的过滤器,但它返回一个空列表。
这是一个网络摄像头设备...
0: USBDevice
configuration: USBConfiguration {configurationName: null, configurationValue: 1, interfaces: Array(5)}
configurations: [USBConfiguration]
deviceClass: 239
deviceProtocol: 1
deviceSubclass: 2
deviceVersionMajor: 1
deviceVersionMinor: 1
deviceVersionSubminor: 3
manufacturerName: "Microsoft"
opened: false
productId: 1906
productName: "Microsoft® LifeCam Studio(TM)"
serialNumber: ""
usbVersionMajor: 2
usbVersionMinor: 0
usbVersionSubminor: 0
vendorId: 1118
您可以看到 deviceClass 是 239 (0xEF),而 deviceSubClass 是 2,所以我应该能够根据这些标准进行过滤,但我没有得到任何结果。
https://www.xmos.com/download/AN00127:-USB-Video-Class-Device(2.0.2rc1).pdf
对于 Video 类设备,必须将“bDeviceClass”、“bDeviceSubClass”和“bDeviceProtocol”字段分别设置为 0xEF、0x02 和 0x01。
const opts = {
filters: [{
classCode: 239, // 0xEF
subclassCode: 2, // 0x02
}]
}
const device = await navigator.usb.requestDevice(opts)
没有过滤器,我可以看到所有的 USB 设备
我也尝试过添加protocolCode,但这也不起作用,我认为没有必要。即使只传递 classCode 字段也会返回一个空列表。