当前位置:首页 > 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实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…