HTML5提供了MediaRecorder
API用于录制音频,可以通过以下步骤实现录音功能:
- 首先,在HTML中创建一个
<audio>
元素来播放录制后的音频,以及一个<button>
元素来开始和停止录音。
<audio id="audio" controls></audio> <button id="btn-start">开始录音</button>
- 在JavaScript中获取
<audio>
和<button>
元素,以及定义一个MediaRecorder
变量来存储录音的实例。
const audio = document.getElementById('audio'); const startBtn = document.getElementById('btn-start'); let mediaRecorder = null;
- 当单击开始录音按钮时,启动
MediaRecorder
实例并开始录制音频。
startBtn.addEventListener('click', () => { navigator.mediaDevices.getUserMedia({ audio: true }) .then(stream => { mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(); }); });
- 为
MediaRecorder
实例添加数据获取事件监听器,将音频数据存储在一个Blob对象中。
mediaRecorder.addEventListener('dataavailable', (event) => { audio.src = URL.createObjectURL(event.data); });
- 当单击停止录音按钮时,停止录制音频并停止
MediaRecorder
实例。
stopBtn.addEventListener('click', () => { mediaRecorder.stop(); });
完整的示例代码如下所示:
<audio id="audio" controls></audio> <button id="btn-start">开始录音</button> <button id="btn-stop">停止录音</button> <script> const audio = document.getElementById('audio'); const startBtn = document.getElementById('btn-start'); const stopBtn = document.getElementById('btn-stop'); let mediaRecorder = null; startBtn.addEventListener('click', () => { navigator.mediaDevices.getUserMedia({ audio: true }) .then(stream => { mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(); }); }); stopBtn.addEventListener('click', () => { mediaRecorder.stop(); }); mediaRecorder.addEventListener('dataavailable', (event) => { audio.src = URL.createObjectURL(event.data); }); </script>