From 33c6f2354f5ecaa1f86010c809bdc32e2452d6ec Mon Sep 17 00:00:00 2001 From: Taran Nathan Date: Mon, 20 Jul 2026 16:53:12 -0700 Subject: [PATCH] try #1 --- index.html | 3 --- script.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/index.html b/index.html index eafb03c..e2cad11 100644 --- a/index.html +++ b/index.html @@ -12,9 +12,6 @@ -
-

Record and Play Audio in JavaScript

-

diff --git a/script.js b/script.js index 2a8c914..5534818 100644 --- a/script.js +++ b/script.js @@ -1,10 +1,64 @@ -console.log("wassup") -// Access the permission for use -// the microphone -navigator.mediaDevices.getUserMedia({ audio: true }) - .then(function(audio_stream) { - console.log("hi"); - }) - .catch(function(err) { - console.log(err.name, err.message); - }); +let mediaRecorder; +let audioChunks = []; +let recordedAudioUrl = ""; + +const startButton = document.getElementById("btnStart"); +const stopButton = document.getElementById("btnStop"); +const playButton = document.getElementById("btnPlay"); +const audioElement = document.getElementById("audioPlay"); + +startButton.addEventListener("click", async () => { + try { + const stream = await navigator.mediaDevices.getUserMedia({ audio: true }); + mediaRecorder = new MediaRecorder(stream); + audioChunks = []; + + mediaRecorder.addEventListener("dataavailable", (event) => { + if (event.data.size > 0) { + audioChunks.push(event.data); + } + }); + + mediaRecorder.addEventListener("stop", async () => { + const audioBlob = new Blob(audioChunks, { type: "audio/ogg" }); + console.log(await audioBlob.text()); + + if (recordedAudioUrl) { + URL.revokeObjectURL(recordedAudioUrl); + } + + recordedAudioUrl = URL.createObjectURL(audioBlob); + console.log(recordedAudioUrl); + audioElement.src = recordedAudioUrl; + playButton.disabled = false; + + stream.getTracks().forEach((track) => track.stop()); + }); + + mediaRecorder.start(); + startButton.disabled = true; + stopButton.disabled = false; + playButton.disabled = true; + } catch (error) { + console.error("Microphone access failed:", error); + } +}); + +stopButton.addEventListener("click", () => { + if (!mediaRecorder || mediaRecorder.state !== "recording") { + return; + } + + mediaRecorder.stop(); + stopButton.disabled = true; + startButton.disabled = false; +}); + +playButton.addEventListener("click", () => { + if (!recordedAudioUrl) { + return; + } + + audioElement.currentTime = 0; + audioElement.play(); +}); -- 2.47.3