BaseAudioContext:createGain() 方法

基线 广泛可用

此功能已完善,可在许多设备和浏览器版本中使用。它自以下时间起在浏览器中可用: 2021 年 4 月.

BaseAudioContext 接口的 createGain() 方法创建一个 GainNode,可用于控制音频图的整体增益(或音量)。

注意: GainNode() 构造函数是创建 GainNode 的推荐方法;请参阅 创建 AudioNode

语法

js
createGain()

参数

无。

返回值

一个 GainNode,它接收一个或多个音频源作为输入,并输出音量已根据节点的 GainNode.gain a-rate 参数调整到指定级别的音频。

示例

以下示例显示了 AudioContext 的基本用法,用于创建 GainNode,然后在单击“静音”按钮时通过更改 gain 属性值来使用它静音和取消静音音频。

下面的代码片段不能按原样工作——有关完整的有效示例,请查看我们的 变声器 演示(查看源代码)。

html
<div>
  <button class="mute">Mute button</button>
</div>
js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
const mute = document.querySelector(".mute");
let source;

if (navigator.mediaDevices.getUserMedia) {
  navigator.mediaDevices.getUserMedia(
    // constraints - only audio needed for this app
    {
      audio: true,
    },

    // Success callback
    (stream) => {
      source = audioCtx.createMediaStreamSource(stream);
    },

    // Error callback
    (err) => {
      console.error(`The following gUM error occurred: ${err}`);
    },
  );
} else {
  console.error("getUserMedia not supported on your browser!");
}

source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// …

mute.onclick = () => {
  if (mute.id === "") {
    // 0 means mute. If you still hear something, make sure you haven't
    // connected your source into the output in addition to using the GainNode.
    gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
    mute.id = "activated";
    mute.textContent = "Unmute";
  } else {
    gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
    mute.id = "";
    mute.textContent = "Mute";
  }
};

规范

规范
Web Audio API
# dom-baseaudiocontext-creategain

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅