音量超出范围

Posted

技术标签:

【中文标题】音量超出范围【英文标题】: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);
      
  

【问题讨论】:

您似乎已达到最大音量。设置一个条件以在该点停止计时器。 【参考方案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

【讨论】:

很好的反馈。谢谢布拉德!

以上是关于音量超出范围的主要内容,如果未能解决你的问题,请参考以下文章

linux进不了,提示信号超出范围。

分配对局部变量的引用,如果局部变量超出范围,它会超出范围吗?

对于char型的,如果超出范围怎样算?

对于char型的,如果超出范围怎样算?

JsLint'超出范围'错误

PDO PHP - PDOException - 数值超出范围:1264 第 1 行的列“customer_id”的值超出范围