Skip to content

Instantly share code, notes, and snippets.

@bryanjenningz
Created October 7, 2017 20:25
Show Gist options
  • Save bryanjenningz/a2d67a386e0477d24ff394087527c5fa to your computer and use it in GitHub Desktop.
Save bryanjenningz/a2d67a386e0477d24ff394087527c5fa to your computer and use it in GitHub Desktop.
const recordAudio = () =>
new Promise(async resolve => {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const mediaRecorder = new MediaRecorder(stream);
const audioChunks = [];
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
const start = () => mediaRecorder.start();
const stop = () =>
new Promise(resolve => {
mediaRecorder.addEventListener("stop", () => {
const audioBlob = new Blob(audioChunks);
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
const play = () => audio.play();
resolve({ audioBlob, audioUrl, play });
});
mediaRecorder.stop();
});
resolve({ start, stop });
});
const sleep = time => new Promise(resolve => setTimeout(resolve, time));
(async () => {
const recorder = await recordAudio();
recorder.start();
await sleep(3000);
const audio = await recorder.stop();
audio.play();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment