Я пытаюсь использовать ImageCapture API для захвата снимка с помощью 4k Logitech Brio Stream веб-камеры.
Все хорошо работает на моем Mac, встроенномкамеры или с использованием ограничений видео по умолчанию для веб-камеры, хотя попытка съемки в более высоком разрешении не удалась с довольно общим platform error
.Единственные ссылки, которые я нашел на это, приходят в исходном коде, здесь и здесь .
Эти ссылки предлагают либо capabilities.is_null()
, либо photo_state.is_null()
соответственно, хотя я не смог найти, что может потенциально вызвать любой из них.
Вот моя (слегка урезанная) реализация:
// N.B. self is scoped within the code file, and works as it should
const videoConstraints = {
video: {
width: { min: 1280, ideal: 3840, max: 3840 },
height: { min: 720, ideal: 2160, max: 2160 }
}
}
navigator.mediaDevices.getUserMedia(videoConstraints)
.then(function(stream) {
self.imageCapture = new ImageCapture(stream.getVideoTracks()[0]);
})
self.imageCapture.takePhoto()
.then(function(blob) { self.doSomethingWithThe(blob); }) // never gets here because...
.catch(function(e) { console.log(e); }); // here the error is thrown
Это работает со встроенной камерой, в то время как переключение ограничений видео на { video: true }
позволяет работать с веб-камерой, хотя и с меньшим разрешением 720 x 1280 (минимальное указанное значение).Никакие пользовательские более высокие разрешения не работают для этого.
Использование Chrome в качестве браузера для этого.
Кто-нибудь знает, как заставить takePhoto()
работать для захвата изображения 4k?
Я нашел очень мало описывающих проблем с API, поэтому любые предложения или помощь приветствуются.Дайте мне знать, если в вопросе отсутствуют какие-либо детали.Заранее спасибо.