Java-将音频字节数组转换为整数数组

Java-将音频字节数组转换为整数数组,java,Java,我需要将音频数据作为“16位整数数组”传递到第三方系统(来自有限的文档) 这就是我到目前为止所尝试的(系统从生成的bytes.dat文件中读取它) 这似乎不起作用-第三方系统无法识别它,我也无法将文件作为原始音频导入Audacity 有没有什么明显的错误,或者有没有更好的方法 额外信息:波形文件为16位、44100Hz、单声道。编辑2: 我很少使用AudioInputStream,但写出原始数据的方式似乎相当复杂。文件只是一组后续字节,因此您可以通过一个FileOutputStream.writ

我需要将音频数据作为“16位整数数组”传递到第三方系统(来自有限的文档)

这就是我到目前为止所尝试的(系统从生成的bytes.dat文件中读取它)

这似乎不起作用-第三方系统无法识别它,我也无法将文件作为原始音频导入Audacity

有没有什么明显的错误,或者有没有更好的方法

额外信息:波形文件为16位、44100Hz、单声道。

编辑2: 我很少使用AudioInputStream,但写出原始数据的方式似乎相当复杂。文件只是一组后续字节,因此您可以通过一个FileOutputStream.write()调用编写音频字节数组。系统可能使用big-endian格式,而WAV文件存储在little-endian(?)中。然后您的音频可能会播放,但非常安静,例如

编辑3

删除了代码示例

是否有理由将音频字节作为字符串写入带有换行符的文件?
我想系统需要的是二进制格式的音频数据,而不是字符串格式的音频数据。

我刚刚设法解决了这个问题

在创建ByteBuffer之后,我不得不添加这一行

bb.order(ByteOrder.LITTLE_ENDIAN);

你能告诉我更多关于这个第三方系统的信息吗?谢谢你的帮助。我接受了你的回答,因为你暗示了big/little endian:)@kd304在使用
AudioInputStream的读取方法将字节写入字节数组后,是否可以将该数组转换回音频/从该字节数组提取音频?
bb.order(ByteOrder.LITTLE_ENDIAN);
AudioFileFormat audioFileFormat;
try {
    File file = new File("path/to/wav/file");
    audioFileFormat = AudioSystem.getAudioFileFormat(file);
    int intervalMSec = 10; // 20 or 30
    byte[] buffer = new byte[160]; // 320 or 480.
    AudioInputStream audioInputStream = new AudioInputStream(new FileInputStream(file),
            audioFileFormat.getFormat(), (long) audioFileFormat.getFrameLength());
    int off = 0;
    while (audioInputStream.available() > 0) {
        audioInputStream.read(buffer, off, 160);
        off += 160;
        intervalMSec += 10;
        ByteBuffer wrap = ByteBuffer.wrap(buffer);
        int[] array = wrap.asIntBuffer().array();
    }
    audioInputStream.close();
} catch (UnsupportedAudioFileException | IOException e) {
    e.printStackTrace();
}