Web Audio API

Web Audio API: 控制Web上的音频提供了一个功能强大的通用系统,允许开发人员选择音频源,为音频添加效果,创建音频可视化,应用空间效果(如平移)等等

  • (oscillator)振荡器播放声音
<button type="button" class="btn-play">play</button>

<script>
  // Web Audio API

  // 创建一个 AudioContext 对象
  const context = new AudioContext();
  console.log('context => ', context);

  // 创建一个(oscillator)振荡器节点
  const oscillator = context.createOscillator();
  console.log('oscillator => ', oscillator);

  // 连接(oscillator)振荡器节点到输出节点
  oscillator.connect(context.destination);

  // 设置(oscillator)振荡器类型为 sine
  oscillator.type = 'sine';
  // 设置(oscillator)振荡器频率为 880Hz
  oscillator.frequency.setValueAtTime(880, context.currentTime);

  const playBtn = document.querySelector('.btn-play');
  let paused = false;
  playBtn.addEventListener('click', () => {
    // 开始播放(oscillator)振荡器
    oscillator.start();
  });
</script>

  • 播放音频

点击按钮,音频文件将被获取、解码和播放

<button type="button" class="btn-play">play</button>

<script>
  // Web Audio API

  // 创建一个 AudioContext 对象
  const context = new AudioContext();
  console.log('context => ', context);

  const playBtn = document.querySelector('.btn-play');
  playBtn.addEventListener('click', async () => {
    // 加载音频文件
    const buf = await fetch('./tts.mp3').then((res) => res.arrayBuffer());

    // 将音频文件解码为 AudioBuffer 对象
    context.decodeAudioData(buf, (decodeData) => {
      // 创建一个 BufferSourceNode 对象
      const source = context.createBufferSource();
      // 将 AudioBuffer 对象赋值给 BufferSourceNode 对象
      source.connect(context.destination);
      source.buffer = decodeData;
      // 开始播放
      source.start();
    });
  });
</script>
posted @ 2024-05-01 16:16  _clai  阅读(89)  评论(0编辑  收藏  举报