console
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>麦克风音量测试</title>
</head>
<body>
<h1>麦克风音量测试</h1>
<button id="startButton">开始</button>
<p id="volumeDisplay">音量: </p>
<script>
const startButton = document.getElementById('startButton');
const volumeDisplay = document.getElementById('volumeDisplay');
let audioContext;
let analyser;
let microphoneStream;
startButton.addEventListener('click', async () => {
try {
microphoneStream = await navigator.mediaDevices.getUserMedia({ audio: true });
audioContext = new (window.AudioContext || window.webkitAudioContext)();
analyser = audioContext.createAnalyser();
analyser.fftSize = 256;
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
const source = audioContext.createMediaStreamSource(microphoneStream);
source.connect(analyser);
const updateVolume = () => {
analyser.getByteFrequencyData(dataArray);
let sum = 0;
for (let i = 0; i < bufferLength; i++) {
sum += dataArray[i];
}
let average = sum / bufferLength;
volumeDisplay.textContent = `音量: ${average.toFixed(2)}分贝`;
requestAnimationFrame(updateVolume);
};
updateVolume();
} catch (err) {
console.error('访问麦克风时出错:', err);
}
});
</script>
</body>
</html>