我有多个必须同步播放的音频文件。我已经读过Web Audio API是最好的解决方案。但是,我找不到任何显示如何实现这一目标的文件。
我读过的几乎所有文章都是为了开始播放。
//Let's say I have AudioBufferSourceNode connected to two buffers
var source1, source2;
source1.start(0);
source2.start(0);
这不应该导致source2比source1稍晚开始播放吗?
此外,是什么让这些来源保持同步?我在任何文档中都找不到提及确保源同步播放的内容。
感谢。
答案 0 :(得分:1)
音频上下文有一个时钟,缓冲区播放在那个时钟上 - 所以是的,它们将保持同步。
甚至调用start(0); (0)开始;如上所述将完美同步,因为start()正在音频线程上设置调度请求,并且这两者的实际调度将一起发生。 “now”实际上是未来(音频系统延迟)。
答案 1 :(得分:0)
您可以在将来稍微安排它们。
var source1, source2;
var when = context.currentTime + 0.01;
source1.start(when);
source2.start(when);
从你定义when
的那一刻开始,这两个声音都会安排好10毫秒。它足够快,它会被视为立即,但为第一个源节点上实际调用start
的开销提供了一些喘息空间。
如果您有大量节点,有更好的方法可以做到这一点,但对于简单的情况,这应该没问题。