blob: 7e8de6ab6131cbfd88c4d36e094a5931a2bb0241 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
const volumeHtml = document.getElementById("volume");
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const source = audioContext.createMediaStreamSource(stream);
audioContext.audioWorklet.addModule("scripts/volume_processor.js")
.then(() => {
const volumeNode = new AudioWorkletNode(audioContext, "volume_processor");
source.connect(volumeNode).connect(audioContext.destination);
volumeNode.port.onmessage = (event) => {
const volume = event.data;
const db = 20 * Math.log10(volume);
volumeHtml.innerHTML = `${db.toFixed(2)} dB`;
};
}).catch((err) => {
console.log(err);
})
})
.catch(err => {
console.error('The following getUserMedia error occurred: ' + err);
});
} else {
console.warn('getUserMedia not supported on your browser!');
}
|