fixed some error frontend stuff
This commit is contained in:
+42
-31
@@ -6,6 +6,11 @@ let dataArray;
|
||||
let animationId;
|
||||
let audioOutSource;
|
||||
|
||||
console.log("Asking for Audio permissions...");
|
||||
window.addEventListener("load", async (event) => {
|
||||
await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
});
|
||||
|
||||
function startButtonPulse(analyser) {
|
||||
const button = document.querySelector('#recordbutton');
|
||||
|
||||
@@ -52,6 +57,7 @@ const startPlayback = async () => {
|
||||
analyser.fftSize = 2048;
|
||||
dataArray = new Uint8Array(analyser.frequencyBinCount);
|
||||
audioOutSource.connect(analyser);
|
||||
analyser.connect(audioContext.destination);
|
||||
}
|
||||
|
||||
startButtonPulse(analyser);
|
||||
@@ -73,41 +79,46 @@ const stopPlayback = async () => {
|
||||
|
||||
const startRecording = async () => {
|
||||
try {
|
||||
console.log("Started recording!");
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
mediaRecorder = new MediaRecorder(stream);
|
||||
audioChunks = [];
|
||||
navigator.permissions.query({ name: "microphone" }).then(async (result) => {
|
||||
if (result.state === "granted") {
|
||||
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
||||
mediaRecorder = new MediaRecorder(stream);
|
||||
audioChunks = [];
|
||||
console.log("Started recording!");
|
||||
|
||||
// Audio analysis
|
||||
audioContext = new AudioContext();
|
||||
analyser = audioContext.createAnalyser();
|
||||
const source = audioContext.createMediaStreamSource(stream);
|
||||
analyser.fftSize = 2048;
|
||||
dataArray = new Uint8Array(analyser.frequencyBinCount);
|
||||
source.connect(analyser);
|
||||
// Audio analysis
|
||||
audioContext = new AudioContext();
|
||||
analyser = audioContext.createAnalyser();
|
||||
const source = audioContext.createMediaStreamSource(stream);
|
||||
analyser.fftSize = 2048;
|
||||
dataArray = new Uint8Array(analyser.frequencyBinCount);
|
||||
source.connect(analyser);
|
||||
|
||||
startButtonPulse(analyser);
|
||||
startButtonPulse(analyser);
|
||||
|
||||
mediaRecorder.ondataavailable = async event => {
|
||||
if (event.data.size > 0) {
|
||||
audioChunks.push(event.data);
|
||||
url = "/api/v1/upload";
|
||||
if (mediaRecorder.state === 'inactive') {
|
||||
url = "/api/v1/send";
|
||||
}
|
||||
fetch(url, {
|
||||
method: 'POST',
|
||||
body: event.data,
|
||||
});
|
||||
mediaRecorder.ondataavailable = async event => {
|
||||
if (event.data.size > 0) {
|
||||
console.log("audio available!");
|
||||
audioChunks.push(event.data);
|
||||
url = "/api/v1/upload";
|
||||
if (mediaRecorder.state === 'inactive') {
|
||||
url = "/api/v1/send";
|
||||
}
|
||||
fetch(url, {
|
||||
method: 'POST',
|
||||
body: event.data,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
mediaRecorder.onstop = async () => {
|
||||
console.log("Stopped recording!");
|
||||
stopButtonPulse();
|
||||
};
|
||||
|
||||
mediaRecorder.start(1000);
|
||||
}
|
||||
};
|
||||
|
||||
mediaRecorder.onstop = async () => {
|
||||
console.log("Stopped recording!");
|
||||
stopButtonPulse();
|
||||
};
|
||||
|
||||
mediaRecorder.start(1000);
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('Microphone access denied or error:', err);
|
||||
alert('Please allow microphone access to record audio.');
|
||||
|
||||
Reference in New Issue
Block a user