我知道我可以使用getByteFrequenzyData()
收集当前播放音频的音频数据,然后我会返回Uint8Array
。
现在我通过推送每个animationFrame
数组中的当前数据来收集一个音频文件的所有数据,例如:
我有一个持续时间为20分钟的音频文件。 然后我在20分钟后在一个数组中获得所有音频数据,然后看起来像这样:
var data = [Uint8Array[1024], Uint8Array[1024], Uint8Array[1024], Uint8Array[1024], ... ];
是否有更快的方法来获取所有这些音频数据,因此我不必等待视频的整整20分钟,并且几乎立即获得音频数据?
以50ms左右的固定步骤接收音频信息会很好!
答案 0 :(得分:2)
使用OfflineAudioContext处理数据,而不是使用AudioContext。这比实时运行得快得多。要在明确定义的时间获得一致的数据,您还需要使用一个浏览器,为离线上下文实现最近添加的suspend和resume功能,以便您可以对getByteFrequencyData的数据进行采样。定义的时间间隔。