【问题标题】:'Pop noise' sounds when audio paused with Javascript使用 Javascript 暂停音频时发出“流行噪音”
【发布时间】:2016-07-15 03:00:21
【问题描述】:

我的 html 中有一个音频标签,里面有 .wav。使用 Javascript,我选择音频标签并播放 wav,我使用键盘键触发。 我想要实现的是,例如,在按下每个“A”键时,重放 .wav/从头开始播放声音)

音频播放正常,暂停也正常。但是,当我直接暂停播放 .wav 时,我会听到爆裂声。

var audio = document.getElementById(sound);

if (!isPlaying(audio)) {
   audio.play();     // works
} else {
   audio.pause();    // pops on this line; I checked with commenting below lines.
   audio.currentTime = 0;
   audio.play();
}

我找到了this answer,据我了解,这是因为我立即将音量设置为 0;但我无法弄清楚我的情况。我相信使用带有 setInterval 的推子不是一个好方法

我还找到了audio.muted = true,并尝试在暂停音量之前使用它(并在播放音频之前使用audio.muted = false),但这也会产生爆音


更新:

我认为我需要使用淡出来解决这个问题。有没有办法立即淡出音频?

【问题讨论】:

  • 我认为使用带有 setInterval 的推子不是一个好方法 为什么不呢?
  • 我不确定我说的......我需要播放 3 秒的音频和 0.2 秒的镜头;不仅是示例镜头。这就是为什么我认为设置一个间隔并相应地触发淡出不会让我拥有 3 秒和 0.2 秒音频的通用代码。如果这是一个好方法,你能澄清一下吗?

标签: javascript jquery html audio


【解决方案1】:

更新:

我认为我需要使用淡出来解决这个问题。有没有 如何立即淡出音频?

您可以使用.animate()volume 属性从当前值动画到0

var audio = $("audio");
$("button").click(function() {
  if (audio[0].volume > 0) {
    audio.animate({volume:0});
    // call `.pause()` here
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<audio controls  src="https://upload.wikimedia.org/wikipedia/commons/6/6e/Micronesia_National_Anthem.ogg"></audio>
<button>fade out audio</button>

【讨论】:

  • 太酷了,这个动画需要@9​​87654326@吗?
  • @zer00ne "这个动画需要@9​​87654327@"没有
  • 我之前没有设置音量。恢复的默认音量是多少?
  • @senty "默认音量是多少"if条件之前尝试console.log(audio[0].volume);
猜你喜欢
  • 2010-12-08
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 2017-03-19
相关资源
最近更新 更多