我如何知道Web Audio API中声音的持续时间

时间:2013-10-18 21:16:30

标签: api audio web

它基本上都在标题中,我如何知道或如何在Web Audio API中访问soundNode的持续时间。我期待source.buffer.sizesource.buffer.duration之类的内容可用。

我无法想到的唯一选择是读取文件元数据。

2 个答案:

答案 0 :(得分:1)

假设您正在加载音频,当您使用context.decodeAudioData对其进行解码时,生成的arrayBuffer具有.duration属性。这与用于创建源节点的arraybuffer相同。

您可以查看SoundJS implementation,但也可以更轻松地按照教程进行操作。

希望有所帮助。

答案 1 :(得分:0)

好消息和坏消息;节点没有长度 - 但我敢打赌,你可以用另一种方式实现你想要的东西。

音频节点是声音处理器或发生器。由节点处理或发出的声音的持续时间可以改变 - 对于计算机它是完全相同的,缺少声音是一个充满零而不是其他值的缓冲区。

因此,如果您需要动态确定声音的持续时间,您可以编写一个节点,该节点在收到的输入音频中定时“静音”。

但是,我怀疑你提到元数据时你正在加载现有声音 - 在这种情况下你应该确实使用他们的元数据,或者通过加载到音频元素并从中请求长度来确定长度。