我想知道这是否是一个未解决的问题。
好的,所以我有这个非常简单的测试代码:
var audio = new Audio("0.mp3");
audio.oncanplay = function() {
audio.play();
setTimeout(function() {
audio.pause();
}, 30);
}
我打算做的是在很短的时间内播放我的声音
我确信音频(中间C音符)在0:00:00开始
请注意,我使用oncanplay
事件来确保在我尝试播放音频时加载音频。
我遇到的问题是我得到了不可预知的结果。有时(大部分时间,真的),根本听不到音频。其他时候,音频被听到,但并不总是在同一段时间内听到。
我知道Javascript可能很慢,但我想知道,例如在第一种情况下,如果音频尚未播放,为什么timeout
设置完毕。
这是一个已知问题吗?可以更好地控制音频吗?
- 感谢
答案 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();
});
}