我正在尝试用 Java 创建一个 XY 示波器,但我被卡住了。我已经阅读了 jFlac 的所有文档、我用来解码我的 .flac 音频文件的库以及这里的免费无损音频编解码器文档。我似乎无法找到我遇到的问题的答案。请考虑以下事项。
public void processPCM(ByteData pcm) {
byte[] temp = pcm.getData();
line.write(temp, 0, pcm.getLen());
leftAndRight = new int[pcm.getData().length];
for(int i = 0; i < temp.length; i+=2){
leftAndRight[i/2] = (temp[i + 1]<<8) + (temp[i] & 0xff);
}
}
这是将我文件中的示例数据放入 SourceDataLine 并播放的地方。将数据写入行后,我希望将左右音频分别转换为单独的整数数组变量 x[] 和 y[]。
这是我正在使用的文件的 StreamInfo:
PCM_SIGNED 44100.0 Hz,16 位,立体声,4 字节/帧,小端
从上面的代码中,pcm.getLen() 返回值 16384,pcm.getData() 返回一个长度为 90112 的字节数组。如果我没记错的话,我需要将这个字节数组中的数据分开左右声道,然后转换成整数数组。这是我不明白如何完成的部分。
编辑:我将上面的代码更改为我遇到的东西,我认为可能是如何将字节数组转换为整数数组,但我仍然对左右通道的排列方式一无所知。