6

我对java很陌生...我想从wav文件中绘制频率/时间图或样本图像。首先,我正在努力使用 AudioInputStream 从 Wav 文件中获取原始数据数组,同时也参考Reading wav file in Java我还尝试了引用http://www.labbookpages.co.uk/audio/javaWavFiles.html的 WavFile 类,但是在测试时,我无法找到正确的包来满足“WavFile”-“找不到符号”错误。提供的导入 java.io.*;因为那个样本不满足这个......

重申一下,我希望获得 Wav 文件数组格式的原始数据。

我会喜欢这方面的任何小例子,因为我从例子中学习起来更容易!谢谢你的时间

4

2 回答 2

3

从 wav 文件(标题)中跳过前 44 个字节,然后使用此函数读取数据:

private static double readLEShort(RandomAccessFile f) {
try {
    byte b1 = (byte) f.read();
    byte b2 = (byte) f.read();
    return (double) (b2 << 8 | b1 & 0xFF) / 32767.0;
} catch (IOException e) {
    e.printStackTrace();
}
return 0;
}

每个通道一个值。这将为您提供介于 -1 和 1 之间的数字,您可以在图表上绘制该数字。我希望这可能有效

于 2012-05-19T16:52:47.450 回答
0

在我的Java DSP 集合中,有一个名为 TestSignalPlot.java 的测试程序可以显示 WAV 文件。它使用 AudioIo.loadWavFile() 将 WAV 文件内容加载到内存中,并使用 SignalPlot 类来显示音频信号。所有类都是开源集合的一部分。

于 2013-08-25T21:46:42.840 回答