在Jquery中检测音频何时结束

时间:2019-07-06 23:08:45

标签: jquery

我已经可以检查音频何时结束,然后用它做我想做的事情。但是,如何检测音频何时即将结束?假设音频结束前仅剩200毫秒。我已经做了一个小功能来获取当前音频的毫秒数,但似乎无法弄清楚逻辑部分。代码是:

audio.play();

function detectEnd() {

  var Mins = Math.floor(audio.currentTime / 60),
      Secs = audio.currentTime - Mins * 60,
      MilliSecs = Math.round(Secs * 1000);

  if( /* the audio is about to end (200 ms remaining) */ ) 
    alert("The audio is about to end...");

}

audio.addEventListener('timeupdate', detectEnd, false);

有可能吗?

2 个答案:

答案 0 :(得分:1)

好的,所以: 您已经有了audio.currentTime,现在需要一个audio.duration的音频总长度变量。 然后,如果audio.currentTime ==(audio.duration-x)触发事件。

在此示例中,x代表您希望的剩余时间。请注意,audio.duration以秒为单位。

希望有帮助

答案 1 :(得分:1)

当然有可能!

audio.play();

var count = 0;

function detectEnd() {
  if (audio.duration - audio.currentTime <= 0.2) {
    if (!count) {
      alert("The audio is about to end...");
    } else {}
    count++;
  }
}

audio.addEventListener('timeupdate', detectEnd, false);

audio.onended = function() {
  count = 0; // RESET
}; 

PS:我添加了一个变量count来一次显示警报。

REF URL:https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_av_event_timeupdate