基本上都在标题中,我怎么知道或者如何访问 Web Audio API 中 soundNode 的持续时间。我期待类似source.buffer.size
或source.buffer.duration
可用的东西。
如果无法完成,我能想到的唯一选择是读取文件元数据。
假设您正在加载音频,当您使用 context.decodeAudioData 对其进行解码时,生成的 arrayBuffer 具有 .duration 属性。这将与您用于创建源节点的数组缓冲区相同。
您可以查看SoundJS 实现,尽管那里也有更容易遵循的教程。
希望有帮助。
好消息和坏消息;节点没有长度 - 但我敢打赌你可以通过另一种方式实现你想要的。
音频节点是声音处理器或发生器。一个节点处理或发出的声音的持续时间可以改变 - 对计算机来说都是一样的,缺少声音是一个充满零而不是其他值的缓冲区。
因此,如果您需要动态确定声音的持续时间,您可以编写一个节点,在它接收到的输入音频中定时“静音”。
但是,我从您提到的元数据中怀疑您正在加载现有的声音-在这种情况下,您确实应该使用它们的元数据,或者通过加载到音频元素并从中请求长度来确定长度。