首页 > 解决方案 > 音量超出范围

问题描述

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

未捕获的 DOMException:无法在 'HTMLMediaElement' 上设置 'volume' 属性:提供的音量 (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);
      }
  }

标签: javascriptaudiohtml5-audio

解决方案


对于audio_fade_out(),有可能低于0。如果myAudio.volume0.001,这通过了 的测试> 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 Audio APIgain并将GainNode. 这听起来会更流畅。

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


推荐阅读