Warum wird audio schneller abgespielt?

Hallo an Alle ,

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);
			}
			
			
		}

danke euch allen

Hm :confused: welche auskommentierte Bedingung?

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…?

Danke für die wunderbare Erklärung
schade, dass ich nicht selbst dazu gekommen bin :frowning:

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?