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?
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With