我是 JavaScript 新手,我正在尝试使用 getUserMedia API 制作在线录音机。我遇到的问题是,每当我尝试调用 navigator.getUserMedia 时,我都会收到一个错误,即成功回调函数未定义,因此不是函数。当我在回调后添加括号时它可以工作,但是当我调用 createMediaStreamSource 时,我收到有关无效 MediaStream 源的错误。
我找到了一些在线使用 getUserMedia 的示例,但是当我尝试从我的计算机运行它们时遇到了同样的问题,即使它们显然可以在线工作。
下面是我的代码。谢谢!
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
//tests if browser is compatible with getUserMedia API
function hasGetUserMedia()
{
return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);
}
//successful callback for getUserMedia
function gotStream(stream)
{
console.log('Compatible')
//set up microphone input to Web Audio API
var mic = context.createMediaStreamSource(stream);
var filter = context.createBiquadFilter();
//connect
mic.connect(filter);
filter.connect(context.destination);
console.log('Here')
}
//error Callback for getUserMedia
function errorCallback()
{
alert('Error capturing audio');
}
//initial function
function testGetUserMedia()
{
if (!hasGetUserMedia())
{
alert("getUserMedia() is not supported in your browser");
window.close();
}
//if Compatible
getUserMedia({audio:true}, gotStream, errorCallback);
}
window.addEventListener('load', testGetUserMedia);