# InputStream cachen



## windl (25. Jan 2013)

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 

```
try
         {
           audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes);
         }
         catch (UnsupportedAudioFileException e)
         {
           inputStream.close();
           throw e;
         }
```

Wenn die Funktion 
	
	
	
	





```
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


----------



## tröööt (25. Jan 2013)

ganz doof ins blaue geraten : [japi]BufferedInputStream[/japi] ???


----------



## Bernd Hohmann (25. Jan 2013)

windl hat gesagt.:


> 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


----------



## windl (29. Jan 2013)

Ja - Du hattest Recht! Ich habe das TTL reduziert und schon kam eine Fehlermeldung!


----------

