WebUSB фильтр по deviceClass и deviceSubClass - PullRequest
0 голосов
/ 29 июня 2019

Я разрабатываю утилиту UVC, которая использует WebUSB, но у меня возникают проблемы с тем, чтобы вывести ее в список ТОЛЬКО веб-камер. Я должен иметь возможность добавлять фильтры на основе 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)

enter image description here

Без фильтров я вижу все устройства USB

enter image description here

Я также пытался добавить protocolCode, но это тоже не работает, и я не думаю, что это необходимо. Даже передача только поля classCode возвращает пустой список.

Спецификация API WebUSB

1 Ответ

1 голос
/ 01 июля 2019

Я подал номер 980281 против Chromium для решения проблемы фильтрации устройства.

Как обсуждалось в комментариях, будет трудно получить прямой контроль над камерой UVC, потому что операционные системы обычно требуют эти устройства с драйверами ядра, блокируя веб-браузер. Blink также явно блокирует доступ к этому классу устройств в качестве меры безопасности / конфиденциальности в пользу использования медиа-API веб-платформы.

Автор вопроса ищет возможность управления такими параметрами, как контраст и экспозиция. Они поддерживаются расширениями для свойств ограничения дорожек мультимедиа, включенных в API захвата изображений. Однако не все эти возможности поддерживаются браузерами на всех платформах. Например, Chromium не поддерживает много ограничений на macOS, поскольку он ограничен тем, что можно контролировать с помощью AVFoundation. Это отслеживается выпуском 817805 в трекере ошибок Chromium.

...