我的代码如下,仍未解决录音未停止的问题。 function stopRecording() { recordButton.disabled = false; stopButton.disabled = true; recordButton.textContent = '点击录音'; mediaRecorder.stop(); mediaRecorder = null; mediaRecorder.addEventListener('stop', function() { const audioBlob = new Blob(chunks, { type: 'audio/wav' }); chunks = []; const formData = new FormData(); formData.append('audio', audioBlob, 'recording.wav'); processSpeech(formData); }); }
时间: 2024-02-14 13:10:33 浏览: 366
你的代码中,`mediaRecorder.stop()` 方法已经被正确调用,但是在`mediaRecorder` 对象的`stop`事件回调函数中,依然在处理录音数据。这可能会导致录音数据没有完全处理完毕,从而导致浏览器仍然认为正在录音,出现录音提示红点未消失的问题。
为了解决这个问题,你可以将录音数据的处理逻辑放在`mediaRecorder.stop()` 方法之前,例如:
```javascript
function stopRecording() {
recordButton.disabled = false;
stopButton.disabled = true;
recordButton.textContent = '点击录音';
mediaRecorder.stop();
mediaRecorder = null;
const audioBlob = new Blob(chunks, { type: 'audio/wav' });
chunks = [];
const formData = new FormData();
formData.append('audio', audioBlob, 'recording.wav');
processSpeech(formData);
}
```
这样做可以确保录音数据在`mediaRecorder.stop()` 方法被调用前就已经处理完毕,从而避免浏览器出现录音提示红点未消失的问题。
阅读全文