Audio streamen bricht immer ab nach kurzer Zeit

Diskutiere Audio streamen bricht immer ab nach kurzer Zeit im Netzwerkprogrammierung Bereich.
Dann07

Dann07

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:

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. ;)
 
Dann07

Dann07

Update:
Nach einiger analyse glaube ich das er einige Stücke des Audios überspringt und dann auch nur einige Stücke sendet weshalb dann es so schnell zuende ist.
Hoffe so kann mir endlich jemand helfen mit der Info...
 
mihe7

mihe7

Naja, UDP ist eben kein verlässliches Protokoll. Vermutlich läuft folgendes ab: Du bombadierst den Server mit Paketen, der mit dem Abspielen nicht mehr hinterherkommt, daher gehen Pakete verloren.
 
Dann07

Dann07

Naja, UDP ist eben kein verlässliches Protokoll. Vermutlich läuft folgendes ab: Du bombadierst den Server mit Paketen, der mit dem Abspielen nicht mehr hinterherkommt, daher gehen Pakete verloren.
Das funktioniert aber wenn ich es nicht mit einer Datei mache sondern mit dem Mikro.
Irgendwie komisch.
 
mihe7

mihe7

Das ist nicht komisch sondern stützt meine These: die Aufnahme bremst die Geschwindigkeit, mit der der Server mit Paketen bedient wird. Folglich hat der genügend Zeit zum Abspielen, ohne dass (massiv) Pakete verloren gehen. Liest Du dagegen einfach aus der Datei, kannst Du in wenigen Millisekunden mehrere Sekunden Audio übertragen.
 
Dann07

Dann07

Hey, jetzt funktioniert es endlich. Ich hab es mit TCP versucht.
Danke für deine Hilfe und das du mir es erklärt hast. :D
 
Thema: 

Audio streamen bricht immer ab nach kurzer Zeit

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben