【发布时间】:2012-02-08 16:02:54
【问题描述】:
我正在尝试在 java 和 matlab 中读取 .wav 文件的数据并保存为字节数组。
在java中代码如下:
public byte[] readWav2(File file) throws UnsupportedAudioFileException, IOException {
AudioFormat audioFormat;
AudioInputStream inputAIS = AudioSystem.getAudioInputStream(file);
audioFormat = inputAIS.getFormat();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// Read the audio data into a memory buffer.
int nBufferSize = BUFFER_LENGTH * audioFormat.getFrameSize();
byte[] abBuffer = new byte[nBufferSize];
while (true) {
int nBytesRead = inputAIS.read(abBuffer);
if (nBytesRead == -1) {
break;
}
baos.write(abBuffer, 0, nBytesRead);
}
byte[] abAudioData = baos.toByteArray();
return abAudioData;
}
在 matlab 中我使用的是 wavread 函数:
[Y, FS] = wavread('sound.wav', 'native');
但我得到的结果不同。
在java中前20个字节:
53, 0, 19, 0, -71, -1, -80, -1, -99, -1, 10, 0, 87, 0, -69, -1, 123, -1, -77, -1
在matlab中:
53, 19, -71, -80, -99, 10, 87, -69, -133, -77, 38, 143, 13, -100, 39, 45, -52, -83, -82, 56
为什么java中的每个第二个字节都是0或-1,而matlab中没有?即使我跳过了 0 和 -1,在 java 中有 123 对于 matlab 有 -133?为什么不一样?
【问题讨论】:
-
文件是立体的吗?在此media page 上可用的
leftright.wav得到什么结果?为了尽快获得更好的帮助,请发帖SSCCE。