我正在尝试在 nodeJS 服务器上创建照片捕获 Web 应用程序,并且我正在使用下面的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:关联的 Track 处于无效状态。
这通常发生在我拍摄太多照片时(例如快速单击大约 20 秒以上),但前五张快照也发生了这种情况。有谁知道发生了什么,我应该改变什么,以解决这个问题?感谢您的时间。