如何设置HTML5音频的响度?

时间:2012-04-09 15:57:03

标签: javascript html5 html5-audio audio

在我正在制作的HTML5游戏中,当事物发生碰撞时,我会发出“砰”的声音。但是,这有点不切实际。无论物体的速度如何,它们总会产生相同的,响亮的“砰”声。我想做的是让声音的响度取决于速度,但我该怎么做?我只知道如何播放声音。

playSound = function(id)
{
    sounds[id].play();
}

sounds是一个充满new Audio("url")的数组。

3 个答案:

答案 0 :(得分:17)

使用音频元素的音量属性。来自W3

  

元素的有效媒体量是音量,相对解释   到0.0到1.0的范围,0.0是静默的,1.0是   最响亮的设置,响度增加之间的值。范围   不必是线性的。最响亮的设置可能低于系统的设置   最大的设置;例如,用户可以设置一个   最大音量。

例如:sounds[id].volume=.5;

答案 1 :(得分:6)

你甚至可以玩增益并使音量大于100%。您可以使用此功能放大声音:

function amplifyMedia(mediaElem, multiplier) {
  var context = new (window.AudioContext || window.webkitAudioContext),
      result = {
        context: context,
        source: context.createMediaElementSource(mediaElem),
        gain: context.createGain(),
        media: mediaElem,
        amplify: function(multiplier) { result.gain.gain.value = multiplier; },
        getAmpLevel: function() { return result.gain.gain.value; }
      };
  result.source.connect(result.gain);
  result.gain.connect(context.destination);
  result.amplify(multiplier);
  return result;
}

您可以执行以下操作将初始放大率设置为100%:

var amp = amplifyMedia(sounds[id], 1);

然后,如果你需要声音大两倍,你可以做这样的事情:

amp.amplify(2);

如果你想减半,你可以这样做:

amp.amplify(0.5);

此处可找到该功能的完整说明: http://cwestblog.com/2017/08/17/html5-getting-more-volume-from-the-web-audio-api/

答案 2 :(得分:4)

您可以通过设置来调整音量:

setVolume = function(id,vol) {
    sounds[id].volume = vol; // vol between 0 and 1
}

但是,请记住,设置的音量之间会有一个小的延迟,并且它会生效。您可能会听到声音开始在前一个音量播放,然后跳转到新音量。