Web Audio API分析器节点getByteFrequencyData返回空数组

5

我正在尝试使用 analyser.getByteFrequencyData(array) 从分析器节点访问FFT数据,但似乎返回一个空数组:

var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);

然而,使用 analyser.getFloatFrequencyData(array) 将返回一组数据:
var array = new Float32Array(analyser.frequencyBinCount);
analyser.getFloatFrequencyData(array);

我使用以下信号链: -> 分析器 -> 脚本处理器 -> 上下文目标 为什么我不能以字节形式获取频率数据? 提前致谢。
3个回答

3

没有看到你的更多代码,我的最佳猜测是你将minDecibels和maxDecibels设置为超过通过分析器传输的数据范围,因此它被归零了。


那就可以了。我怎么知道要设置minDecimals/maxDecimals的值呢?谢谢。 - RobotEyes
1
OP:这真的是正确答案吗?也就是说,你是否尝试调整最小/最大分贝值,然后它开始正常工作了? - Danny Bullis
此外,对于像我这样偶然发现这个S/O问题的任何人,这里有一个有用的链接(http://docs.webplatform.org/wiki/apis/webaudio/AnalyserNode)。 - Danny Bullis
@fettereddingoskidney 是的。调整最小/最大分贝值解决了这个问题。 - RobotEyes
7
你设置了最小和最大分贝值是多少?我尝试过-100,-30和0,255。数组仍然为空。 - JeremyFromEarth

1
如果有可能在播放开始之前,你们中的某个人已经获取了数据,因此还没有可读取的内容,这种情况的可能性有多大?如果是这种情况,请尝试在播放开始后调用getByteFrequencyData

0

检查是否将smoothingTimeConstant设置为1。当设置为1时,getFloatFrequencyData始终返回一个由零组成的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接