Reputation: 25691
Full Js code
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);
}
When loading this page, Firefox executes the onError callback for getUserMedia. The error tells:
NotFoundError: The object can not be found here.
Chrome, instead, simply does nothing.
Both FF and Chrome doesn't ask me for permission to use microphone. Why?
Upvotes: 4
Views: 7981
Reputation: 21
Turn on your microphone in Device Manager. Make sure have any available mic in system.
Upvotes: 0
Reputation:
You need to run the page from a http(s) protocol. If you run it from file:// security restrictions kicks in.
Also, in Chrome AudioContext
is prefixed so you need to change this line:
var audioContext = window.AudioContext;
to
var audioContext = window.AudioContext || window.webkitAudioContext;
In addition, createJavaScriptNode
is obsolete. Consider using createScriptProcessor
instead.
(Eventually the ScriptProcessorNode
will also be replaced, by Audio Workers - not yet implemented in any browsers though, but something to be aware of for later).
Upvotes: 3