【发布时间】:2020-06-26 19:55:55
【问题描述】:
我正在尝试在 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:关联的 Track 处于无效状态。
这通常发生在我拍摄太多照片时(例如快速点击大约 20 秒以上),但前五张快照也会发生这种情况。有谁知道发生了什么,我应该改变什么,以解决这个问题?感谢您的宝贵时间。
【问题讨论】:
-
你有没有想过这个问题?我遇到了完全相同的事情。如果它似乎也不会永久终止视频流,即使被捕获,我也不介意这个例外。
-
不幸的是我还没有找到任何解决方案,但我仍在努力解决这个问题,如果我成功了,我会告诉你
-
嗨,我也遇到了完全相同的事情。循环开始使用相同的功能每 20 秒拍照一次,在拍摄了一系列照片后,它开始抛出这个(关联的 Track 处于无效状态)错误。我们应该如何修复无效状态?你们中有人成功地提出了解决方案吗?谢谢
标签: javascript domexception mediadevices