我正在编写一个JS程序来记录媒体并每隔几秒输出结果。我使用 setInterval 每隔几秒调用 MediaRecorder.requestData() 一次,但这从未被调用。
我已将 console.log 调试输出添加到间隔函数,但它们没有输出,因为没有调用间隔。
function interval() {
mediaRecorder.requestData();
}
function stream() {
if (navigator.mediaDevices) {
var constraints = {audio : true, video : true};
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
mediaRecorder.ondataavailable = sendData;
});
interval = window.setInterval(interval, 30000);
}
}
mediaRecorder 是一个全局变量,sendData 是一个函数,它将处理 blob 并将其记录到控制台。
我希望每 30 秒调用一次interval()。控制台中没有错误消息,但似乎从未调用interval(),并且仅当在浏览器中手动停止录制时才调用sendData()。
最佳答案
由于与变量名称冲突,我通过将间隔回调函数的名称更改为 intervalCallback
来修复此问题。感谢@Musa 的建议。
关于javascript - setInterval 在函数中使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56637493/