31 lines
870 B
JavaScript
31 lines
870 B
JavaScript
let mediaRecorder;
|
|
let recordedChunks = [];
|
|
|
|
window.startRecording = async () => {
|
|
recordedChunks = [];
|
|
console.log("startRecording called");
|
|
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
mediaRecorder = new MediaRecorder(stream);
|
|
|
|
mediaRecorder.ondataavailable = (event) => {
|
|
if (event.data.size > 0) {
|
|
recordedChunks.push(event.data);
|
|
}
|
|
};
|
|
|
|
mediaRecorder.onstop = async () => {
|
|
const blob = new Blob(recordedChunks, { type: 'audio/webm' });
|
|
const arrayBuffer = await blob.arrayBuffer();
|
|
const byteArray = new Uint8Array(arrayBuffer);
|
|
|
|
// Send to Blazor server
|
|
DotNet.invokeMethodAsync('BLAIzor', 'SendAudioToServer', Array.from(byteArray));
|
|
};
|
|
|
|
mediaRecorder.start();
|
|
};
|
|
|
|
window.stopRecording = () => {
|
|
mediaRecorder.stop();
|
|
};
|