有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

音频Java读取WAV文件作为浮点数组

我试图将WAV文件(将来也将MP3Ogg)读取为Java中的浮点数组,很像C中的libsndfile

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

有什么建议吗


共 (2) 个答案

  1. # 1 楼答案

    JavaSound只允许您“原始”访问WAV文件中嵌入的声音数据,例如8位无符号PCM或16位有符号PCM数据(如果您的WAV文件是PCM编码的)。在这两种情况下,每个样本的值都在0到255或-32768到32767的范围内,您只需将范围移动到-1f到1f即可

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

  2. # 2 楼答案

    找到此页面:

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

    具体请参见9.4:如何从字节数组重建样本值

    它通过与Java C++(LIbSNDFrm)和MATLAB(WAVRADE)的java输出进行比较,效果良好。 当我有时间的时候,我会把代码放到我的github帐户上