API-интерфейс ImageCapture выдает ошибку платформы на takePhoto () - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь использовать 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, поэтому любые предложения или помощь приветствуются.Дайте мне знать, если в вопросе отсутствуют какие-либо детали.Заранее спасибо.

...