我正在编写一个JS程序来记录媒体并每隔几秒钟输出一次结果。我使用setInterval每隔几秒钟调用一次MediaRecorder.requestData(),但这从未被调用。
我已将console.log调试输出添加到interval函数,但是由于未调用interval,因此未输出。
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并将其记录到控制台。
我希望对interval()的调用每30秒发生一次。控制台中没有错误消息,但是似乎永远不会调用interval(),而仅当在浏览器中手动停止记录时才调用sendData()。
答案 0 :(得分:1)
我通过将间隔回调函数的名称更改为intervalCallback
来解决该问题,因为它与变量名称存在冲突。感谢@Musa的建议。