Java - 将WAV文件作为float数组读取

时间:2010-08-30 10:00:10

标签: java audio wav

我正在尝试将WAV文件(以及将来的MP3Ogg)文件作为Java中的浮点数组读取,就像libsndfile一样在C.

我正在查看javax.sampled包中的各种文档,但是我找不到关于如何做到这一点的明确解释;如果可能的话,我想避免重复使用外部库。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

JavaSound只会让您对WAV文件中嵌入的声音数据进行“原始”访问,例如: 8位无符号PCM或16位有符号PCM数据(如果您的WAV文件是PCM编码的)。在任何一种情况下,每个样本的值都在0到255或-32768到32767的范围内,你只需要移动范围以适应-1f到1f。

您应该使用适当的源(File,InputStream或URL)从AudioSystem.getAudioInputStream(...)开始,检查格式以检查样本大小和通道数,然后您可以从中读取和转换PCM编码数据相应的AudioInputStream。

答案 1 :(得分:0)

找到了这个页面:

http://www.jsresources.org/faq_audio.html

特别参见9.4:如何从字节数组中重建样本值?

通过比较java的输出与c ++(libsndfile)和matlab(wavread),它可以正常工作。 当我有时间时,我将把代码放在m github帐户上