Я пытаюсь создать веб-приложение для захвата фотографий на сервере nodeJS и использую приведенный ниже код javascript.
const btn = document.querySelector('#btn');
btn.addEventListener('click', (event) => {
navigator.mediaDevices.getUserMedia({video: true})
.then(gotMedia)
.catch(error => console.error('getUserMedia() error:', error));
event.preventDefault()
})
И Функция gotMedia такова:
function gotMedia(mediaStream) {
const mediaStreamTrack = mediaStream.getVideoTracks()[0];
const imageCapture = new ImageCapture(mediaStreamTrack);
console.log(imageCapture);
const canvas = document.querySelector('canvas');
// ...
imageCapture.grabFrame()
.then(imageBitmap => {
canvas.width = imageBitmap.width;
canvas.height = imageBitmap.height;
canvas.getContext('2d').drawImage(imageBitmap, 0, 0);
})
.catch(error => console.error('grabFrame() error:', error));
}
Все отлично работает, захват изображения в порядке, но возникает ошибка, когда я быстро снимаю фотографии один за другим, что говорит:
Ошибка grabFrame (): DOMException: связанный трек находится в недопустимом состоянии.
Это обычно происходит, когда я снимаю слишком много фотографий (например, быстрое нажатие в течение более 20 секунд), но также имеет произошло на первых пяти снимках. Кто-нибудь знает, что происходит и что я должен изменить, чтобы это исправить? Спасибо за ваше время.