当前位置:首页 > JavaScript

js实现录音功能

2026-03-16 02:51:40JavaScript

使用Web Audio API实现录音

通过navigator.mediaDevices.getUserMedia获取麦克风权限,结合MediaRecorderAPI进行录音。

// 请求麦克风权限
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);
      const audioUrl = URL.createObjectURL(audioBlob);
      const audio = new Audio(audioUrl);
      audio.play();
    });

    // 开始录音
    mediaRecorder.start();

    // 停止录音
    setTimeout(() => {
      mediaRecorder.stop();
    }, 3000);
  });

录音格式设置

MediaRecorder支持多种音频格式,通过mimeType参数指定。

js实现录音功能

const options = {
  audioBitsPerSecond: 128000,
  mimeType: 'audio/webm' // 或 'audio/mp3', 'audio/wav'
};
const mediaRecorder = new MediaRecorder(stream, options);

处理录音数据

将录音数据转换为可下载的文件。

mediaRecorder.addEventListener("stop", () => {
  const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
  const audioUrl = URL.createObjectURL(audioBlob);

  // 创建下载链接
  const downloadLink = document.createElement('a');
  downloadLink.href = audioUrl;
  downloadLink.download = 'recording.wav';
  downloadLink.click();
});

错误处理

添加权限拒绝和错误处理逻辑。

js实现录音功能

navigator.mediaDevices.getUserMedia({ audio: true })
  .catch(err => {
    console.error('Error accessing microphone:', err);
    alert('无法访问麦克风,请检查权限设置');
  });

兼容性处理

检查浏览器是否支持相关API。

if (!navigator.mediaDevices || !window.MediaRecorder) {
  alert('您的浏览器不支持录音功能');
}

实时音频处理

使用AudioContext对录音进行实时处理。

const audioContext = new AudioContext();
const source = audioContext.createMediaStreamSource(stream);
const analyser = audioContext.createAnalyser();

source.connect(analyser);
analyser.connect(audioContext.destination);

// 获取音频数据
const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);

标签: 录音功能js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…