lundi 3 décembre 2018

How to get audio buffer from AudioContext recording

I am trying to record and save sound clips from the user microphone using the GetUserMedia() and AudioContext APIs.

I have been able to do this with the MediaRecorder API, but unfortunately that's not supported by Safari/iOS, so I would like to do this with just the AudioContext API and the buffer that comes from that.

I got things partially working with this tutorial from Google Web fundamentals, but I can't figure out how to do the following steps they suggest.

var handleSuccess = function(stream) {
    var context = new AudioContext();
    var source = context.createMediaStreamSource(stream);
    var processor = context.createScriptProcessor(1024, 1, 1);

    source.connect(processor);
    processor.connect(context.destination);

    processor.onaudioprocess = function(e) {
        // TUTORIAL SUGGESTS: Do something with the data, i.e Convert this to WAV
        // I ASK: How can I get this data in a buffer and then convert it to WAV etc.??
        console.log(e.inputBuffer);
    };
};

navigator.mediaDevices.getUserMedia({ audio: true, video: false })
    .then(handleSuccess);

As the tutorial says:

The data that is held in the buffers is the raw data from the microphone and you have a number of options with what you can do with the data:

  • Upload it straight to the server
  • Store it locally
  • Convert to a dedicated file format, such as WAV, and then save it to your servers or locally

I could do all this, but I can't figure out how to get the audio buffer once I stop the context. Once I get the audio buffer I could convert it to WAV and make it into a blob etc.

Can anyone help me with this? (I don't want to use the MediaRecorder API)




Aucun commentaire:

Enregistrer un commentaire