wenn ich in der while schleife auskomentierte Bedienung eingebe wird schneller abgespielt , aber wenn ich so lasse wie es ist wird normal abgespielt. Woran liegt das?
int numBytesRead = 0;
int bytesPerFrame = dinFormat.getFrameSize();
int numBytes = 1024 * bytesPerFrame;
byte[] audioBytes = new byte[numBytes];
//(numBytesRead = audio.read(audioBytes)) != -1
while (numBytesRead!= -1) {
try {
numBytesRead = audio.read(audioBytes, 0, audioBytes.length);
} catch (IOException e) {
e.printStackTrace();
}
if ( numBytesRead >= 0) {
int nBytesWritten = line.write(audioBytes, 0, numBytesRead);
}
}
das einzig auskommentierte, die 8. Zeile hier nach Forumzählung, sieht doch aus wie eine Bedingung für eine Schleife,
nicht so schwer zu kombinieren?
diese Bedingung liest aus dem Stream, innerhalb der Schleife wird auch aus dem Stream gelesen,
also wird doppelt gelesen, nur die Hälfte weitergeschrieben?
wenn ich nicht eher den Weltuntergang oder zumindest irgendwas kaputtes vermuten würde,
ist das eine typische Erscheinungsform von ‘schneller werden’
audio.read(audioBytes) ist dabei gleichbedeutend und kürzer als audio.read(audioBytes, 0, audioBytes.length), generell zu bevorzugen,
wieso zwei verschiedene reads…?
Also Mit NIO/Netty habe ich schon mall gearbeiten aber will mir das leben auch nicht unnötig schwer machen
und mit dem guten alten java io geht das, das der server gruppen von 4 spielern unabängig von einander bedienen kann?