我正在尝试使用 Web Audio API 创建一个非常简单的音乐播放器。其中一项要求是当一首轨道完成时,下一首轨道自动开始的功能。
目前我正在订阅“已结束”事件。类似的东西
nodeSource.onEnded = function () {}
nodeSource.start(0, offset, duration);
问题来自于“onending”在两种情况下被触发:
- 声音播放完毕(正是需要的)
- 有人实际上停止了声音(根本不需要)
我需要一种方法来区分这两种情况。目前我无法找到声音缓冲区内当前位置的值,因此我可以将其与声音应该结束的时间进行比较。
我知道可以在播放开始时创建一个单独的计时器,然后在停止之前检查声音是否仍在播放,但这是一种非常奇怪的方法。
有没有办法通过网络音频本身获得我需要的东西?或者,也许还有其他不那么奇怪的方式?
最佳答案
如果有人停止了声音,你的程序一定知道这一点并停止了声音。在真正停止声音之前,请删除 onished
处理程序。
关于javascript - 在 HTML5 WebAudio 中如何知道声音是否停止或播放完毕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333245/