用Java从.wav文件中提取数据

时间:2018-03-23 15:58:57

标签: java wav

我正在尝试从.wav文件中提取数据以绘制波形图,但我陷入困境,因为我只使用我的代码获得0 s的唯一流:

AudioInputStream ais = AudioSystem.getAudioInputStream(new File("audio/sine_-06_05_02000.wav"));
AudioFormat format = ais.getFormat();

format = new AudioFormat(format.getFrameRate(), format.getSampleSizeInBits(), format.getChannels(), true, true);

ais = AudioSystem.getAudioInputStream(format, ais);
int sample_size = format.getSampleSizeInBits() / 8;
ArrayList<Long> data = new ArrayList<Long>();
int size = 400;

while (data.size() < size)
{
    byte[] buffer = new byte[8];
    ais.read(buffer, 8-sample_size, sample_size);
    if (buffer[8-sample_size] < 0)
    {
        for (int i = 0; i < 8 - sample_size; i++)
        {
            buffer[i] = -1;
        }
    }
    data.add(ByteBuffer.wrap(buffer).getLong());
}
for(long value:data)
{
    System.out.println(value);
}

请告诉我为什么我无法获取数据以及我的代码出错的地方如果你能找到答案。谢谢!

编辑:我发现我的音频资源是数字的,但代码是模拟音频。

0 个答案:

没有答案