Hallo!
Ich habe ein kleines Problem mit dem FileInputStream. Ich möchte eine mp3 mit dem Player von Javazoom abspielen.
Das funktioniert in Eclipse auch relativ gut, aber halt nur relativ.
Das Problem dabei ist, dass der Player einen FileInputStream bekommt (für Musik auch ne ganz gute Variante).
Hier mal der kleine Codeschnipsel, um den es geht:
So, nun gibt mir
als Rückgabe "file:<richtigerPfad>/girls.mp3"
zurück.
Alles schön und gut, aber der FileInputStream findet die Datei nicht. Ich habe dann herausgefunden, dass wenn ich das "file:" am Anfang wegnehme, der ganze Spaß abgespielt wird.
Daher auch
Okay, also funktioniert das schon mal...
Problem ist nun, dass ich das gerne in eine .jar packen würde (soll ein Geschenk für meine Freundin werden)...
Die Musik wird mit in der .jar exportiert und ist auch an der richtigen Stelle (bzw. weiß ich, an welcher Stelle sie nach dem Exportieren ist).
Jetzt ist der Pfad natürlich:
"jar:file:<Pfad zur jar>/kalender.jar!/<Pfad zur Datei>/girls.mp3"
An sich total korrekt, aber unangenehme Sache dabei ist, dass der FileInputStream wohl (bei mir) nicht klar kommt mit dem jar:file:...
Nehme ich das raus, kann er auch nicht in die jar.
Ich hoffe, dass das Problem klar geworden ist...
Wenn ich statt FileInputStream einfach File nehme, dann findet er die File, aber dann müsste ich warten, bis das gesamte Lied in den Speicher geladen wurde, bevor ich's abspielen kann, weil's sonst ja echt mies klingt, daher würde ich ungern auf den Stream verzichten.
Also kann man irgendwie einen Pfad zu einer Datei in einer jar für den FileInputStream angeben?
Randinfo:
OS: Ubuntu
IDE: Eclipse
Ich habe ein kleines Problem mit dem FileInputStream. Ich möchte eine mp3 mit dem Player von Javazoom abspielen.
Das funktioniert in Eclipse auch relativ gut, aber halt nur relativ.
Das Problem dabei ist, dass der Player einen FileInputStream bekommt (für Musik auch ne ganz gute Variante).
Hier mal der kleine Codeschnipsel, um den es geht:
Java:
FileInputStream fis = null;
System.out.println(this.getClass().getResource("/res/music/girls.mp3"));
String urlString = this.getClass().getResource("/res/music/girls.mp3").toString();
urlString = urlString.replaceAll("file:", "");
try {
fis = new FileInputStream(urlString);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
mp3Player = new Player(fis);
} catch (JavaLayerException e) {
e.printStackTrace();
}
So, nun gibt mir
Java:
System.out.println(this.getClass().getResource("/res/music/girls.mp3"));
als Rückgabe "file:<richtigerPfad>/girls.mp3"
zurück.
Alles schön und gut, aber der FileInputStream findet die Datei nicht. Ich habe dann herausgefunden, dass wenn ich das "file:" am Anfang wegnehme, der ganze Spaß abgespielt wird.
Daher auch
Java:
urlString = urlString.replaceAll("file:", "");
Okay, also funktioniert das schon mal...
Problem ist nun, dass ich das gerne in eine .jar packen würde (soll ein Geschenk für meine Freundin werden)...
Die Musik wird mit in der .jar exportiert und ist auch an der richtigen Stelle (bzw. weiß ich, an welcher Stelle sie nach dem Exportieren ist).
Jetzt ist der Pfad natürlich:
"jar:file:<Pfad zur jar>/kalender.jar!/<Pfad zur Datei>/girls.mp3"
An sich total korrekt, aber unangenehme Sache dabei ist, dass der FileInputStream wohl (bei mir) nicht klar kommt mit dem jar:file:...
Nehme ich das raus, kann er auch nicht in die jar.
Ich hoffe, dass das Problem klar geworden ist...
Wenn ich statt FileInputStream einfach File nehme, dann findet er die File, aber dann müsste ich warten, bis das gesamte Lied in den Speicher geladen wurde, bevor ich's abspielen kann, weil's sonst ja echt mies klingt, daher würde ich ungern auf den Stream verzichten.
Also kann man irgendwie einen Pfad zu einer Datei in einer jar für den FileInputStream angeben?
Randinfo:
OS: Ubuntu
IDE: Eclipse