使用gainNode改变音频播放音量实例页面
回到相关文章 »效果:
原始音频
//zxx: 原始音频音量较大,播放前请注意周围环境
音量20%
代码:
HTML代码:
<h4>原始音频</h4> <audio src="./bgmusic.mp3" controls></audio> <h4>音量20%</h4> <button id="button">播放</button>
JS代码:
// 定义一个AudioContext对象
// 因为 Web Audio API都是源自此对象
const audioContext = new AudioContext();
// 创建一个gainNode对象
// gainNode可以对音频输出进行一些控制
const gainNode = audioContext.createGain();
// 音量设置为20%
gainNode.gain.value = 0.2;
// 这个很有必要,建立联系
gainNode.connect(audioContext.destination);
// 创建AudioBufferSourceNode
let source = audioContext.createBufferSource();
// 获取音频资源
fetch('./bgmusic.mp3')
  .then(res => res.arrayBuffer())
  .then(buffer => audioContext.decodeAudioData(buffer))
  .then(audioBuffer => {
    source.buffer = audioBuffer;
    source.connect(gainNode);
  });
// 点击按钮播放
button.onclick = function () {
    if (this.textContent == '播放') {
        source.start(0);
        this.textContent = '暂停';
    } else {
        const buffer = source.buffer;
        // 停止播放
        source.stop(0);
        this.textContent = '播放';
        // stop会销毁数据,所以再次赋值
        source = audioContext.createBufferSource();
        source.buffer = buffer;
        source.connect(gainNode);
    }
};