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

问题描述 投票:0回答:2

基本上都在标题中,我如何知道或如何访问 Web Audio API 中

soundNode
的持续时间。我期待类似
source.buffer.size
source.buffer.duration
之类的内容。

如果无法实现这一点,我能想到的唯一替代方法是读取文件元数据。

audio web-audio-api
2个回答
1
投票

假设您正在加载音频,当您使用 context.decodeAudioData 对其进行解码时,生成的 arrayBuffer 有一个 .duration 属性。这将与您用来创建源节点的数组缓冲区相同。

您可以查看 SoundJS 实现,尽管那里也有更容易遵循的教程。

希望有帮助。


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.