使用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); } };