Guten Tag/Abend!
Ich hatte mal langeweile und hab versucht ein Programm zu machen worüber man Audio streamen kann.
Ansich klingt es nicht schwer. War es auch nicht aber irgendwie bricht der Client immer nach ein paar Sekunden die Übertragung ab.
Also am Server kommt nur ein bisschen was an. Man hört kurz was und dann nicht mehr.
Aber hier der Code vom Client:
Code vom Server:
Falls mir jemand helfen kann wäre es schon.
Ich hatte mal langeweile und hab versucht ein Programm zu machen worüber man Audio streamen kann.
Ansich klingt es nicht schwer. War es auch nicht aber irgendwie bricht der Client immer nach ein paar Sekunden die Übertragung ab.
Also am Server kommt nur ein bisschen was an. Man hört kurz was und dann nicht mehr.
Aber hier der Code vom Client:
Java:
public AudioClient() {
try {
int port = 50056;
AudioInputStream audio = AudioSystem.getAudioInputStream(new File("audio.wav"));
byte[] data = new byte[1024];
int bytesRead = 0;
InetAddress addr = InetAddress.getByName("127.0.0.1");
DatagramSocket udpSocket = new DatagramSocket();
int readed = 0;
while((readed = audio.read(data, 0, data.length)) != -1) {
DatagramPacket packet = new DatagramPacket(data, readed, addr, port);
udpSocket.send(packet);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Code vom Server:
Java:
public AudioServer() {
try {
int port = 50056;
int samplerate = 44100;
int channels = 2;
boolean bigEndian = false;
DatagramSocket udpSocket = new DatagramSocket(port);
byte[] buf = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);
ByteArrayInputStream baiss = new ByteArrayInputStream(receivePacket.getData());
AudioFormat format = new AudioFormat(samplerate, 16, channels, true, bigEndian);
DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, format);
SourceDataLine dataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo);
dataLine.open(format);
dataLine.start();
byte[] bytes;
while((bytes = receivePacket.getData()) != null) {
udpSocket.receive(receivePacket);
dataLine.write(bytes, 0, bytes.length);
}
baiss.close();
udpSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Falls mir jemand helfen kann wäre es schon.