getUserMedia gibt Ihnen Zugriff auf das Gerät, aber es liegt an Ihnen, das Audio aufzuzeichnen. Um dies zu tun, sollten Sie dem Gerät "zuhören" und einen Puffer für die Daten erstellen. Wenn Sie dann aufhören, das Gerät zu hören, können Sie diese Daten als WAV-Datei (oder jedes andere Format) formatieren. Nach dem Formatieren können Sie es auf Ihren Server, S3, hochladen oder direkt im Browser abspielen.
Um die Daten auf eine Weise zu hören, die für die Erstellung Ihres Puffers nützlich ist, benötigen Sie einen ScriptProcessorNode. Ein ScriptProcessorNode befindet sich im Grunde zwischen dem Eingang (Mikrofon) und dem Ausgang (Lautsprecher) und gibt Ihnen die Möglichkeit, die Audiodaten während des Streams zu manipulieren. Leider ist die Implementierung nicht einfach.
Sie benötigen:
- getUserMedia auf das Gerät zuzugreifen
- AudioContext ein MediaStreamAudioSourceNode und ScriptProcessorNode
- MediaStreamAudioSourceNode zu erstellen, um den Audio-Stream darzustellen
- ScriptProcessorNode Zugang zum Streaming zu erhalten Audiodaten über ein Onaudioprozessesignal. Das Ereignis legt die Kanaldaten offen, mit denen Sie Ihren Puffer erstellen.
es Putting alles zusammen:
navigator.getUserMedia({audio: true},
function(stream) {
// create the MediaStreamAudioSourceNode
var context = new AudioContext();
var source = context.createMediaStreamSource(stream);
var recLength = 0,
recBuffersL = [],
recBuffersR = [];
// create a ScriptProcessorNode
if(!context.createScriptProcessor){
node = context.createJavaScriptNode(4096, 2, 2);
} else {
node = context.createScriptProcessor(4096, 2, 2);
}
// listen to the audio data, and record into the buffer
node.onaudioprocess = function(e){
recBuffersL.push(e.inputBuffer.getChannelData(0));
recBuffersR.push(e.inputBuffer.getChannelData(1));
recLength += e.inputBuffer.getChannelData(0).length;
}
// connect the ScriptProcessorNode with the input audio
source.connect(node);
// if the ScriptProcessorNode is not connected to an output the "onaudioprocess" event is not triggered in chrome
node.connect(context.destination);
},
function(e) {
// do something about errors
});
Anstatt alle diese selbst bauen Ich schlage vor, Sie verwenden, um die AudioRecorder Code, der fantastisch ist. Es behandelt auch das Schreiben des Puffers in eine WAV-Datei. Here is a demo.
Hier ist ein weiterer great resource.
Auch ich bin auf der Suche nach einem Tutorial, wie dies zu tun. – ericso