代码之家  ›  专栏  ›  技术社区  ›  Nicola Montecchio

Java-读取wav文件作为浮点数组[复制]

  •  2
  • Nicola Montecchio  · 技术社区  · 16 年前

    这个问题已经有了答案:

    我想读一本 WAV 文件 MP3 和 Ogg 将文件作为Java中的浮点数数组,非常类似 libsndfile 在C.

    我正在查看javax.sampled包中的各种文档,但我找不到有关如何执行此操作的明确解释;如果可能,我希望避免重复出现在外部库中。

    有什么建议吗?

    2 回复  |  直到 12 年前
        1
  •  2
  •   jarnbjo    16 年前

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

    你应该从 AudioSystem.getAudioInputStream(...) 使用适当的源(文件、输入流或url),检查格式以检查样本大小和通道数,然后您可以相应地从音频输入流读取和转换PCM编码的数据。

        2
  •  0
  •   Nicola Montecchio    14 年前

    找到此网页:

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

    具体见9.4: 如何从字节数组重新构造示例值?

    它的工作与预期的一样,通过比较Java的输出与C++(LIbSNDFrm)和Matlab(WavRead)。 我有时间的时候会把代码放在m github帐户上