Объем находится за пределами диапазона - PullRequest
0 голосов
/ 21 декабря 2018

Мой журнал консоли выдает следующую ошибку:

Uncaught DOMException: не удалось установить свойство 'volume' для '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 Ответ

0 голосов
/ 21 декабря 2018

Для audio_fade_out() возможно получить значение ниже 0.Если myAudio.volume равно 0.001, это проходит тест на > 0, и все же вы все равно вычитаете 0.003 из него.

В audio_fade_in(), кто знает, потому что вы не показали нам что-либо$audio_volume is.

Следуя вашему методу, вы должны установить громкость на Math.max(myAudioVolume - 0.003, 0), чтобы зафиксировать любое значение на уровне или выше 0.Сделайте обратное для audio_fade_in() ... Math.min(myAudioVolume + 0.005, 1).

Что вы должны действительно сделать, однако использовать API-интерфейс Web Audio и увеличить значение параметра gain для GainNode,Это будет звучать намного плавнее.

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

...