【发布时间】:2013-03-10 03:44:23
【问题描述】:
我在使用 Java 中的 WAV 文件时遇到了一些问题。
WAV 格式:PCM_SIGNED 44100.0 Hz,24 位,立体声,6 字节/帧,little-endian。
- 我将 WAV 数据提取到一个字节数组中,没有任何问题。
- 我正在尝试将字节数组转换为双精度数组,但有些双精度值带有
NaN值。
代码:
ByteBuffer byteBuffer = ByteBuffer.wrap(byteArray);
double[] doubles = new double[byteArray.length / 8];
for (int i = 0; i < doubles.length; i++) {
doubles[i] = byteBuffer.getDouble(i * 8);
}
16/24/32 位单声道/立体声的事实让我感到困惑。
我打算将double[] 传递给 FFT 算法并获取音频频率。
【问题讨论】:
-
听起来有些数字实际上不能解释为
double... -
@maszter:不是重复的,因为字节不代表双精度。
-
@Leandro T 如果您对答案感到满意,请接受它,或者发表评论为什么认为应该改进答案。
标签: java arrays floating-point fft wav