当前位置:首页 > JavaScript

js 实现音频

2026-03-15 10:00:51JavaScript

使用 Web Audio API 播放音频

通过 AudioContextfetch 加载音频文件并播放:

const audioContext = new (window.AudioContext || window.webkitAudioContext)();
fetch('audio.mp3')
  .then(response => response.arrayBuffer())
  .then(buffer => audioContext.decodeAudioData(buffer))
  .then(decodedData => {
    const source = audioContext.createBufferSource();
    source.buffer = decodedData;
    source.connect(audioContext.destination);
    source.start();
  });

使用 HTML5 <audio> 标签

直接在 HTML 中嵌入音频控件,通过 JavaScript 控制播放:

<audio id="myAudio" src="audio.mp3"></audio>
<script>
  const audio = document.getElementById('myAudio');
  audio.play(); // 播放
  audio.pause(); // 暂停
  audio.currentTime = 0; // 重置进度
</script>

动态生成音频(Oscillator)

使用 AudioContext 生成简单音调:

const ctx = new AudioContext();
const oscillator = ctx.createOscillator();
oscillator.type = 'sine'; // 波形类型:sine, square, sawtooth, triangle
oscillator.frequency.value = 440; // 频率(Hz)
oscillator.connect(ctx.destination);
oscillator.start();
oscillator.stop(ctx.currentTime + 2); // 2秒后停止

音频可视化(AnalyserNode)

结合 Canvas 实现音频频谱可视化:

js 实现音频

const audioCtx = new AudioContext();
const analyser = audioCtx.createAnalyser();
const source = audioCtx.createMediaElementSource(document.getElementById('myAudio'));
source.connect(analyser);
analyser.connect(audioCtx.destination);

const bufferLength = analyser.frequencyBinCount;
const dataArray = new Uint8Array(bufferLength);
analyser.getByteFrequencyData(dataArray);

// 使用 Canvas 绘制频谱(需循环调用)
function draw() {
  requestAnimationFrame(draw);
  analyser.getByteFrequencyData(dataArray);
  // 绘制逻辑...
}

注意事项

  • 跨浏览器兼容性:部分旧浏览器需使用 webkit 前缀(如 webkitAudioContext)。
  • 用户交互限制:现代浏览器要求音频播放必须由用户手势(如点击)触发。
  • 格式支持:常见音频格式为 MP3、WAV、OGG,需根据浏览器兼容性选择。

标签: 音频js
分享给朋友:

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现vr

js实现vr

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