完整的Js代码
navigator.getUserMedia = ( navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia);
var session = {
audio: true,
video: false
};
var recordRTC = null;
navigator.getUserMedia(session, initializeRecorder, onError);
function initializeRecorder(stream) {
console.log ("init Recorder");
var audioContext = window.AudioContext;
var context = new audioContext();
var audioInput = context.createMediaStreamSource(stream);
var bufferSize = 2048;
// create a javascript node
var recorder = context.createJavaScriptNode(bufferSize, 1, 1);
// specify the processing function
recorder.onaudioprocess = recorderProcess;
// connect stream to our recorder
audioInput.connect(recorder);
// connect our recorder to the previous destination
recorder.connect(context.destination);
}
function recorderProcess(e) {
var left = e.inputBuffer.getChannelData(0);
// window.Stream.write(convertFloat32ToInt16(left));
}
function onError(errorText)
{
console.log (errorText);
}
加载此页面时,Firefox会执行getUserMedia的onError回调。该错误告诉:
NotFoundError:在这里找不到该对象。
Chrome什么都不做。
FF和Chrome都没有要求我允许使用麦克风。为什么?
2条答案
按热度按时间iih3973s1#
您需要从http(s)协议运行页面。如果您从file://运行它,安全限制就会启动。
此外,在Chrome中,
AudioContext
是前缀,因此您需要更改这一行:到
此外,
createJavaScriptNode
已过时。请考虑使用createScriptProcessor
。(最终
ScriptProcessorNode
也将被Audio Workers取代-虽然尚未在任何浏览器中实现,但需要注意的是稍后)。u91tlkcl2#
在设备管理器中打开麦克风。确保系统中有任何可用的麦克风。