【问题标题】:Volume is outside the range音量超出范围
【发布时间】:2018-12-21 17:00:48
【问题描述】:

我的控制台日志抛出以下错误:

未捕获的 DOMException:无法设置“音量”属性 'HTMLMediaElement':提供的音量 (1.005) 超出范围 [0, 1]。

谁能向我解释如何解决这个问题?任何帮助表示赞赏!谢谢。

代码:

// Fade out/in functions for music player

function audio_fade_out(){
      var timer,
          myAudio = document.getElementById("musicPlayer");
      if (myAudio.volume > 0) {
          myAudio.volume -= 0.003;
          timer = setTimeout(audio_fade_out,0);
          console.log(myAudio.volume);
      }
  }

function audio_fade_in(){
      var timer,
          myAudio = document.getElementById("musicPlayer");
      if (myAudio.volume < $audio_volume) {
          myAudio.volume += 0.005;
          timer = setTimeout(audio_fade_in,10);
          console.log(myAudio.volume);
      }
  }

【问题讨论】:

  • 您似乎已达到最大音量。设置一个条件以在该点停止计时器。

标签: javascript audio html5-audio


【解决方案1】:

对于audio_fade_out(),有可能低于0。如果myAudio.volume0.001,这通过了&gt; 0 的测试,但你仍然从中减去0.003

audio_fade_in(),谁知道呢,因为你没有向我们展示$audio_volume 是什么。

按照您的方法,您要做的是将音量设置为Math.max(myAudioVolume - 0.003, 0),以钳制该值等于或高于0。在audio_fade_in() 上做相反的事情...Math.min(myAudioVolume + 0.005, 1)

然而,您应该真正做的是使用 Web 音频 API 并增加 GainNodegain 参数。这听起来会更流畅。

https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/exponentialRampToValueAtTime

【讨论】:

  • 很好的反馈。谢谢布拉德!
猜你喜欢
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多