我对java很新... 我想从wav文件中绘制频率/时间图或样本图像。 首先,我正在努力从Wav文件中使用AudioInputStream从Reading wav file in Java引用来获取原始数据数组。 我也试过WavFile类引用http://www.labbookpages.co.uk/audio/javaWavFiles.html但是在测试时,我无法找到正确的包以满足“WavFile” - “找不到符号”错误。提供的import java.io. *;因为那个样本不符合这个......
重申我希望以WAV文件的数组格式获取原始数据。
我会喜欢这方面的任何小例子,因为我从例子中学到的更容易! 谢谢你的时间
答案 0 :(得分: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之间的数字,您可以在图表上绘制。我希望这可能有用
答案 1 :(得分:0)
在我的Java DSP collection中有一个名为TestSignalPlot.java的测试程序,可以显示WAV文件。它使用AudioIo.loadWavFile()将WAV文件内容加载到内存中,使用SignalPlot类显示音频信号。所有类都是开源集合的一部分。