【问题标题】:Graphing/Plotting a Wav File java绘制/绘制 Wav 文件 java
【发布时间】:2012-05-26 21:12:00
【问题描述】:

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

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

我会喜欢这方面的任何小例子,因为我从例子中学习要容易得多! 感谢您的宝贵时间

【问题讨论】:

  • 您还需要解决方案吗?我有完整的答案。

标签: java


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    跳过 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 之间的数字,您可以在图表上绘制该数字。我希望这可以工作

    【讨论】:

    • OP 仍然需要将其转换为频率。为此,这个链接可能很方便——stackoverflow.com/questions/636686/…
    • 不是很懂,你说你的文件怎么用这个函数?
    • @Andfoy 这很有帮助,虽然我不知道如何将它放入数组中......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 2015-10-01
    • 2015-02-03
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多