Audioübertragung zwischen zwei Geräten mit Server

  • Hallo Community!


    //EDIT: Das Problem scheint gelöst zu sein. Ich habe dem Clienten einfach einen anderen Port gegeben, auf einmal gings. Ist aber nicht schlimm, damit kann ich leben^^ Jetzt ist aber ein neues Problem entstanden womit ich hätte rechnen sollen... Da ich das Bytearray als komplettes immer von einer Klasse zur anderen übertrage auf dem Mainserver hört man alles abgehackt. Gibt es eine Möglichkeit, dass ich es dort auch "streamen" kann? Gemeint ist die "SendData()"-Methode fast ganz unten in der Klasse "AudioServerClient". Dankeschön nochmal!


    Ich hoffe ihr könnt mir ein wenig weiterhelfen... Ich programmiere noch nicht sehr lange Java und ich stehe irgendwie mal wieder auf dem Schlauch^^
    Ich weiß, dass das einiges an Text ist womit ich euch zubombe, aber ihr
    würdet mir wirkliche helfen wenn ihr mal drüberschaut. Ich drehe bald
    durch hier^^


    Zum Problem:
    Ich möchte von Gerät A zu Gerät B Audio streamen. Zum testen habe ich hier das MIC als Audioquelle genommen. Das funktioniert auch wunderbar, allerdings nur wenn Gerät B (also der Empfänger) mit W-LAN verbunden ist und der Port (auf dem der SocketServer läuft) freigeschaltet ist. Also habe ich mir gedacht, dass die Audiodaten einen Zwischenstopp bei einem Server bei mir Zuhause einlegen, damit ich auch von unterwegs aus jederzeit Audio übertragen und empfangen kann. Der Code der bereits funktionierte habe ich mir aus einigen Tutorials und Codefetzen zusammengebastelt die ich im Netz gefunden habe. Nennen wir im weiteren Verlauf das Gerät welches Audio empfängt "Client", und das Gerät welches Audio sendet "Server". Den Zwischenstopp bei mir Zuhause "Mainserver".


    Hier einmal der Teil vom Client:


    Dieser hatte vorher anstatt eine Verbindung aufzubauen immer auf einem Port gelauscht mittels *.accept()


    Und hier der Code vom Server:



    An beiden Klassen habe ich soweit nichts verändert außer beim CLienten anstatt einen ServerSocket zu erstellen, eine Verbindung zu meinem Mainserver aufzubauen.


    Auf dem Mainserver lauscht ein Programm auf Port x, ob der Client eine Verbindung möchte. Falls dies der Fall ist führt er das für den Server aus:



    Nachdem diese Klasse ausgeführt worden ist startet er diese Klasse für den Clienten:



    Diese Klasse bekommt das volle Bufferarray aus "AudioServer" über die Methode "sendData()" und soll sie weiter streamen, allerdings klappt das aus irgendwelchen unbekannten Gründen nicht so... Sobald ich die Übertragung starte erhalte ich auf der Seite des Clienten eine Nullpointerexception für die Zeile:


    Java
    [...] try { readSize = connfd.getInputStream().read(buffer); } [...]


    Und die App auf der Serverseite stürzt ab, allerdings kann ich nicht die genaue Exception die er wirft einsehen, weil mir nichts angezeigt wird... :( aus was für Gründen auch immer... (recht altes Handy vielleicht?^^). Die Nullpointer lässt sich aber durch das nicht Empfangen der Daten erklären. Aber warum sendet mein Mainserver denn nichts?


    Auf der Seite des Mainservers läuft alles normal... Nur wenn ich die Übertragung stoppe und wieder starte sagt er mir, dass die Adresse bereits genutzt wird. aber durch einen Neustart des Programmes auf dem Mainserver ist das auch temporär behoben.


    Ich danke nochmal fürs Lesen, und hoffe, dass mir der eine oder andere helfen kann. :)


    mfg


    Barny

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!