我想一起播放一首歌曲的多个轨道,并且能够将其中一些轨道静音并播放其他轨道。所以我需要能够同时启动它们。现在,它们都开始有点不同步:
// Start playing
for ( i = 0; i < 5; i++ ) {
tracks[i].audio.play();
}
即使这样显然也不够快,无法同时启动它们。
在 javascript 中有什么方法可以保证 HTML5 音频标签将同时开始播放吗?
最佳答案
不确定您是否已经这样做了,但这里有一些用于预加载音频的示例代码。
var audios = [];
var loading = 0;
AddNote("2C");
AddNote("2E");
AddNote("2G");
AddNote("3C");
function AddNote(name) {
loading++;
var audio = document.createElement("audio");
audio.loop = true;
audio.addEventListener("canplaythrough", function () {
loading--;
if (loading == 0) // All files are preloaded
StartPlayingAll();
}, false);
audio.src = "piano/" + name + ".mp3";
audios.push(audio);
}
function StartPlayingAll() {
for (var i = 0; i < audios.length; i++)
audios[i].play();
}
}
您可以尝试的另一件事是在每个轨道上设置 audio.currentTime
以手动同步音频。
关于javascript - 如何同时启动多个音频标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377237/