我想知道这是否是一个 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();
});
}
关于javascript - 无法避免 javascript 音频延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486946/