无法避免javascript音频延迟

时间:2015-12-28 02:19:21

标签: javascript audio delay

我想知道这是否是一个未解决的问题。

好的,所以我有这个非常简单的测试代码:

var audio = new Audio("0.mp3");
audio.oncanplay = function() {
    audio.play();
    setTimeout(function() {
        audio.pause();
    }, 30);
}

我打算做的是在很短的时间内播放我的声音 我确信音频(中间C音符)在0:00:00开始 请注意,我使用oncanplay事件来确保在我尝试播放音频时加载音频。

我遇到的问题是我得到了不可预知的结果。有时(大部分时间,真的),根本听不到音频。其他时候,音频听到,但并不总是在同一段时间内听到。

我知道Javascript可能很慢,但我想知道,例如在第一种情况下,如果音频尚未播放,为什么timeout设置完毕。

这是一个已知问题吗?可以更好地控制音频吗?

- 感谢

1 个答案:

答案 0 :(得分:1)

避免使用setTimeout,这不准确并且可能会导致(如您的情况)在竞争条件下。使用'timeupdate'事件来跟踪进度。这首歌将播放并在7秒后自动暂停:

var audio = new Audio("0.mp3");
audio.oncanplay = function() {

  audio.play();
  audio.addEventListener('timeupdate', function() {
    console.log(audio.currentTime.toFixed());
    if ( audio.currentTime >= 7 ) audio.pause();
  });

} 

JSFiddle Demo