使用HTML5实现录音功能的方法及步骤

36 min read

HTML5提供了MediaRecorder API用于录制音频,可以通过以下步骤实现录音功能:

  1. 首先,在HTML中创建一个<audio>元素来播放录制后的音频,以及一个<button>元素来开始和停止录音。
<audio id="audio" controls></audio>
<button id="btn-start">开始录音</button>
  1. 在JavaScript中获取<audio><button>元素,以及定义一个MediaRecorder变量来存储录音的实例。
const audio = document.getElementById('audio');
const startBtn = document.getElementById('btn-start');
let mediaRecorder = null;
  1. 当单击开始录音按钮时,启动MediaRecorder实例并开始录制音频。
startBtn.addEventListener('click', () => {
  navigator.mediaDevices.getUserMedia({ audio: true })
    .then(stream => {
      mediaRecorder = new MediaRecorder(stream);
      mediaRecorder.start();
    });
});
  1. MediaRecorder实例添加数据获取事件监听器,将音频数据存储在一个Blob对象中。
mediaRecorder.addEventListener('dataavailable', (event) => {
  audio.src = URL.createObjectURL(event.data);
});
  1. 当单击停止录音按钮时,停止录制音频并停止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>