I have had an array of issues with mediaRecorder:
- Audio doesnt play on all devices or browsers
- Audio isnt in a standard format
- Audio is blank on some devices like ios
This package saved my life! No data chunks, no converting of files or types, it does it for you:
https://github.com/closeio/mic-recorder-to-mp3
Simple code example:
const MicRecorder = require('mic-recorder-to-mp3');
// New instance
const recorder = new MicRecorder({
bitRate: 128
});
// Start recording. Browser will request permission to use your microphone.
recorder.start().then(() => {
// update ui or whatever
}).catch((e) => {
console.error(e);
});
// Once you are done singing your best song, stop and get the mp3.
recorder.stop().getMp3().then(([buffer, blob]) => {
// do what ever you want with buffer and blob
// Example: Create a mp3 file and play
const file = new File(buffer, 'me-at-thevoice.mp3', {
type: blob.type,
lastModified: Date.now()
});
const player = new Audio(URL.createObjectURL(file));
player.play();
}).catch((e) => {
alert('We could not retrieve your message');
console.log(e);
});
Beats working with mediaRecorder directly. Thanks closeio, you make us devs look like we know what we are doing.
Top comments (3)
Dealing with microphone recording can be a real puzzle sometimes, and I totally understand your frustration. It's awesome to hear that you found a solution that works like a charm.
I'll definitely check out that package you mentioned; anything that simplifies the process and saves time is a win for us devs. Plus, it's like having a secret weapon in our coding arsenal!
If you ever need recommendations or info on microphones, there's this cool site I stumbled upon: asmrmicrophones.com/. It's been a game-changer for me when it comes to choosing the right mic for different projects.
With iPhones new security additions it seems web developers could face quite a few challenges in being able to record microphone audio on all devices.
If you have issues let me know.
Thanks a lot for writing this post - 'Easily record microphone on all devices'