I have forked Recorder.js to add support for MP3 encoding to reduce recorded data size. Repository here. The encoding is working to a point and I can play back the recorded audio that has been encoded into MP3. However, the audio quality is garbled. The crucial method is in recorderWorker.js:
function exportMP3(type){
var bufferL = mergeBuffers(recBuffersL, recLength);
var bufferR = mergeBuffers(recBuffersR, recLength);
console.log("Start MP3 encoding");
var mp3codec = Lame.init();
Lame.set_mode(mp3codec, Lame.JOINT_STEREO);
Lame.set_num_channels(mp3codec, 2);
Lame.set_out_samplerate(mp3codec, sampleRate);
Lame.set_bitrate(mp3codec, 128);
Lame.init_params(mp3codec);
var mp3data = Lame.encode_buffer_ieee_float(mp3codec, bufferL, bufferR);
audioBlob = new Blob([mp3data.data], { type: "audio/mp3" });
console.log("Done MP3 encoding");
this.postMessage(audioBlob);
}
Here is a sample recording.
Here bufferL and bufferR are PCM data as Float32Array. What can I do to fix the garbled encoding? Thank you.