InputStream cachen

windl

Bekanntes Mitglied
Hallo,

ich habe folgendes Problem! Ein Bekannter hat sich den Subsonic Server installiert. Nun hat er mir Zugriff via Internet auf diesen Server eingeräumt (Die Musik die dort liegt ist rechtlich ok).
Jetzt habe ich eine Java-Anwendung geschrieben (Subsonic » Free Music Streamer), um Lieder von dort abzuspielen.
Auf jeden Fall, bestimme ich den Stream-Header mit dem tritonus_share.jar. Dort gibt es eine Funktion
Java:
 try
         {
           audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes);
         }
         catch (UnsupportedAudioFileException e)
         {
           inputStream.close();
           throw e;
         }

Wenn die Funktion
Java:
getAudioInputStream
aufgerufen wird kommt der Stream nicht mehr zurück - wirft keinen Fehler - ist einfach tot.
Mein Verdacht ist nun, dass der Stream abreisst und daher nicht zurück kommt.

Jetzt zu meinem Lösungsvorschlag: Ich würde den Stream cachen. D.h. ich würde erst einmal 1 MB in einen internen Stream schreiben und dann diesen Stream zum Abspielen bringen.

Hat jemand eine Idee bzw. hat jemand schon einmal einen InputStream gechached?

Danke
Uwe
 
Mein Verdacht ist nun, dass der Stream abreisst und daher nicht zurück kommt.

Jetzt zu meinem Lösungsvorschlag: Ich würde den Stream cachen. D.h. ich würde erst einmal 1 MB in einen internen Stream schreiben und dann diesen Stream zum Abspielen bringen.

Ich gehe mal davon aus, dass die Lib intern auch schon einen Cache hat. Du wirst Dir wohl die Sourcen besorgen müssen und dann mit einem Debugger tracen wo er hängt.

Ich tippe irgendwo auf einen Protokollfehler in Deiner Implementierung, denn einfach so im Stream zu hängen wäre entweder doof implementiert oder die Implementation wartet auf etwas, was nicht kommt.

Wenn Du irgendwo Zugriff auf den genutzten TCP/IP Socket hast, setze mal das Socket Timeout runter (vielleicht gibt es da einen Schalter in der von Dir genutzten API).

Bernd
 

Zurück
Oben