Morgen.
Ich spiel grad unter Java ein bisschen mit nem AudioInputStream herum und habe folgendes Problem:
Ich versuche, den Stream mit der Utility-Klasse AudioSystem in ein passendes Format zu verwandeln und dann die einzelnen Samplewerte auszulesen und in einen int[]-Buffer zu packen. Mein Code dazu sieht so aus:
Code:
public int[] getIntBuffer()
throws UnsupportedAudioFileException, IOException {
AudioInputStream stream = getStream();
int[] buffer = null;
try {
AudioFormat tmpFormat =
new AudioFormat(
Encoding.PCM_SIGNED,
stream.getFormat().getSampleRate(),
stream.getFormat().getSampleSizeInBits(),
1,
stream.getFormat().getFrameSize(),
stream.getFormat().getSampleRate(),
false);
AudioInputStream tmpStream =
AudioSystem.getAudioInputStream(tmpFormat, stream);
byte[] buf = new byte[tmpFormat.getFrameSize()];
buffer = new int[(int) tmpStream.getFrameLength()];
if (tmpFormat.getFrameSize() > 1) {
for (int i = 0; i < buffer.length; i++) {
tmpStream.read(buf);
buffer[i] = (int) (buf[0]) | (int) (buf[1])<<8;
System.out.println(buffer[i]);
}
} else {
for (int i = 0; i < buffer.length; i++) {
tmpStream.read(buf);
buffer[i] = (int) (buf[0]);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return buffer;
}
Das Problem ist, dass mir der Stream Werte jenseits von Gut und Böse liefert, mit denen ich gar nichts anfangen kann.