javascript - 无法避免 javascript 音频延迟

标签 javascript audio delay

我想知道这是否是一个 Unresolved 问题。

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

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

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

我遇到的问题是我得到了不可预测的结果。有时(实际上是大多数时候),根本听不到音频。其他时候,可以听到音频,但并不总是在同一时间段内。

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

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

-谢谢

最佳答案

避免使用 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

关于javascript - 无法避免 javascript 音频延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486946/

相关文章:

jquery - 是否有要添加的短代码或 HTML 元素来设置 MediaElement.js 中的默认音量?

Java没有为按钮播放声音

ios - 如何在使用 swift 切换到它之前实例化和加载 View Controller

javascript - 如何在分形绘图递归函数中创建延迟

javascript - 如何在 Redux 状态下访问对象数组中的属性?

javascript - f.call(null,x) 与 f(x) 速度

javascript - AngularJS JSON 编辑器切换可编辑

php - 使用ajax从javascript/jquery调用php函数

javascript - 要在空格键上播放的音频,请单击

iphone - 如何在 Cocoa Touch 上延迟的同时保留响应式 GUI?