当前位置:首页 > JavaScript

js实现录音

2026-04-05 06:54:43JavaScript

使用 Web Audio API 实现录音

Web Audio API 提供了音频处理能力,结合 MediaRecorder 可以实现录音功能。

// 获取音频流
navigator.mediaDevices.getUserMedia({ audio: true })
  .then(stream => {
    const mediaRecorder = new MediaRecorder(stream);
    const audioChunks = [];

    mediaRecorder.addEventListener('dataavailable', event => {
      audioChunks.push(event.data);
    });

    mediaRecorder.addEventListener('stop', () => {
      const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
      const audioUrl = URL.createObjectURL(audioBlob);
      const audio = new Audio(audioUrl);
      audio.play(); // 播放录音
    });

    mediaRecorder.start();
    setTimeout(() => mediaRecorder.stop(), 5000); // 5秒后停止
  });

使用第三方库 RecordRTC

RecordRTC 简化了录音流程,支持更多格式和功能。

const recordRTC = RecordRTC(stream, {
  type: 'audio',
  mimeType: 'audio/wav'
});

recordRTC.startRecording();
setTimeout(() => {
  recordRTC.stopRecording(() => {
    const blob = recordRTC.getBlob();
    const audioUrl = URL.createObjectURL(blob);
    document.getElementById('audio').src = audioUrl;
  });
}, 5000);

处理录音权限问题

确保在 HTTPS 环境或 localhost 下运行,避免权限错误。

navigator.mediaDevices.getUserMedia({ audio: true })
  .catch(error => {
    console.error('录音权限被拒绝:', error);
    alert('请允许麦克风访问权限');
  });

保存录音文件

将录音保存为可下载文件。

js实现录音

function saveAudio(blob) {
  const a = document.createElement('a');
  a.href = URL.createObjectURL(blob);
  a.download = 'recording.wav';
  a.click();
}

注意事项

  • iOS 设备需要用户交互(如点击事件)才能触发录音
  • 不同浏览器支持的音频格式可能不同
  • 长时间录音需注意内存占用问题

标签: js
分享给朋友:

相关文章

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现隐藏div

js实现隐藏div

隐藏div的几种方法 使用JavaScript隐藏div元素可以通过多种方式实现,以下是几种常见的方法: 方法一:修改style.display属性 将div的display属性设置为"none"…

js 实现进度条

js 实现进度条

使用 HTML 和 CSS 创建基础结构 进度条需要一个容器和一个填充元素。HTML 结构可以简单如下: <div class="progress-container"> <d…

vue.js实现app

vue.js实现app

Vue.js 实现 App 的方法 Vue.js 可以用于开发移动端 App,主要通过以下两种方式实现: 使用 Capacitor 或 Cordova 进行混合开发 Capacitor 和 Cor…

vue.js实现checkbox

vue.js实现checkbox

使用 v-model 绑定复选框 在 Vue.js 中,可以通过 v-model 指令实现复选框的双向数据绑定。复选框的值会与 Vue 实例中的数据属性同步。 <template>…

vue.js实现异步

vue.js实现异步

Vue.js 实现异步的方法 Vue.js 提供了多种方式来处理异步操作,以下是常见的实现方法: 使用 async/await 语法 在 Vue 组件的方法中,可以使用 async/await 来简…