如何设置HTML5音频的响度?

cor*_*zza 8 javascript audio html5 html5-audio

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

playSound = function(id)
{
    sounds[id].play();
}
Run Code Online (Sandbox Code Playgroud)

sounds是一个充满了new Audio("url")'s 的数组.

j08*_*691 17

使用audio元素的volume属性.从W3:

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

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


Chr*_*est 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;
}
Run Code Online (Sandbox Code Playgroud)

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

var amp = amplifyMedia(sounds[id], 1);
Run Code Online (Sandbox Code Playgroud)

然后,如果您需要声音大一倍,可以执行以下操作:

amp.amplify(2);
Run Code Online (Sandbox Code Playgroud)

如果要减半,可以执行以下操作:

amp.amplify(0.5);
Run Code Online (Sandbox Code Playgroud)

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