我有一个脚本,允许我在画布上显示摄像头,并在某些间隔内“下载”特定的帧。 当时间参数很大时(每2秒捕获30分钟),我遇到了麻烦。它工作顺利约15分钟,然后崩溃(Firefox关闭,内存不足错误)。此外,重新启动Firefox后,有时会在3-4分钟内拍摄很多0字节的照片,然后再次开始工作。我在放置在实验室中的旧的2 GB RAM机器上运行该程序,是否有减少内存使用量的方法?从画布中间隔拍摄照片
这是一段带参数和功能realizarCapturas
的代码。 我可以添加静止代码,但我认为要优化的部分应该是这一个。
var frecuenciaComienzoCaptura = 1; // how long till next capture
var frecuenciaCaptura = 3; //seconds between photos
var duracion = 5; // amount of photos to capture
function realizarCapturas(){
var i = 1;
var interval = setInterval(function(){
if(i <= duracion){
context.drawImage(video, 0, 0, 640, 480);
var imagen = document.getElementById("imagen");
imagen.href = canvas.toDataURL("image/png");
var now = new Date();
var filename = formatNumber(now.getHours()) + "-" + formatNumber(now.getMinutes()) + "-" + formatNumber(now.getSeconds());
imagen.download = filename + ".png"; // Make sure the browser downloads the image
imagen.click(); // Trigger the click
i = i+1;
}else{
clearInterval(interval);
}
}, frecuenciaCaptura * 1000);
}
setInterval(function(){
realizarCapturas();
}, frecuenciaComienzoCaptura * 1000 * 60 * 60);
realizarCapturas();
}, false);
您可能会叠加未完成的操作。尝试使用单个'requestAnimationFrame'循环而不是多个间隔进行重构。使用开发工具监视资源使用情况。 – markE