Я пытаюсь создать осциллограф XY на Java, и я застрял.Я прочитал всю документацию для 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 Гц, 16 бит, стерео, 4 байта / кадр, порядковый номер с прямым порядком байтов
из вышеприведенного кода, pcm.getLen () возвращает значение 16384и pcm.getData () возвращает байтовый массив длины 90112. Это данные в этом байтовом массиве, если я не ошибаюсь, что мне нужно отделить левый и правый каналы от, а затем преобразовать в целочисленные массивы.Это та часть, которую я не понимаю, как это сделать.
Редактировать: я изменил приведенный выше код на что-то, с чем я столкнулся, я думаю, может быть, как получить массив байтов в массив целых чисел, но явсе еще не понимает, как устроены левый и правый каналы.