JLayer und MP3

Status
Nicht offen für weitere Antworten.

Monkey_D_Ace

Mitglied
Hi Leute,

Hab folgendes Problem mit meiner "Mp3Player" Klasse
(eigentlich ist es nicht meine, die hab ich von der javazoom-Seite)
Hier erst mal der Code:
Code:
import javazoom.jl.player.*;
import java.io.*;

public class Mp3Player {

	 private Player player;
	 private InputStream is;
	 
	 /** Creates a new instance of MP3Player */
	 public Mp3Player( String filename ){
		 
		 try{
			 
			 // Create an InputStream to the file
			 is = new FileInputStream( filename );
		 }
		 catch( Exception e ){
			 
			 e.printStackTrace();
	 	 }
	 }
	 
	 public void play(){
	  
		 try{
			 
			 player = new Player( is );
			 PlayerThread pt = new PlayerThread();
			 pt.start();
			 while( !player.isComplete() ){
				 
				 int position = player.getPosition();
				 System.out.println( "Position: " + position );
				 
				 try{
					 
					 Thread.sleep( 1000 );
				 }
				 catch( Exception ee ){
					 
					 ee.printStackTrace();
				 }
			 }
		 }
		 catch( Exception e ){
			 
			 e.printStackTrace();
		 }
	 }
	 
	 class PlayerThread extends Thread{
		 
		public void run(){
			try{
			
				player.play();
			}
			catch( Exception e ){

				e.printStackTrace();
			}
		}
	 }
}
ich will die Klasse so verwenden:

Mp3Player introPlayer = new Mp3Player("sound/intro.mp3");

aber er gibt mir folgenden Fehler aus:

java.io.FileNotFoundException: intro.mp3 (Das System kann die angegebene Datei nicht finden)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at Mp3Player.<init>(Mp3Player.java:15)
at GamePanel.doInitializations(GamePanel.java:134)
at GamePanel.<init>(GamePanel.java:82)
at Start.main(Start.java:6)

erbraucht ja laut Konstruktor nen String als Übergabe aber wie geb ich ihm dann gleichzeitig den Pfad mit?

hat jemand schon Erfahrungen mit der Klasse? kann mir jemand helfen?
 

The_S

Top Contributor
Naja, dann wird deine mp3 Datei nicht unter "sound/intro.mp3" liegen. Versuchs zuerst einmal mit absoluten Pfadangaben.
 

Monkey_D_Ace

Mitglied
Hi Hobbit!

danke schon mal für die Antwort!

habs auch schon mit dem ganzen Pfad versucht aber das hat ihm auch net gepasst.

jetzt ist die Frage wieso es nicht funktioniert weil ein Freund die Klasse auch mal ausprobiert hat und bei ihm funktionierts einwandfrei.
er ruft sie genauso auf wie ich.

hab XP SP2

kann mir aber trotzdem nicht erklären was da schief läuft.

der Classpath is angepasst und die Import funzt auch einwandfrei.

nur der Stream macht Probleme obwohl ich den auf meinem System schon öfter verwendet hab und da lief er.

Die Sounddateien sind auch ordnungsgemäß eingefügt in Eclipse weil ich auch waves verwende aber mit einer anderen Klasse aber die findet er ja auch und das wäre dann ne entsprechende Pfadangabe für die mp3 weil sie im gleichen Ordner liegt.

kanns vielleicht in irgeneiner Weise an der mp3 liegen? (Bitrate etc.)

gruß Ace
 

The_S

Top Contributor
Eine FileNotFoundException bezeugt definitiv, dass die Datei nicht an der angegebenen Stelle ist. Das kannst du drehen und wenden soviel du willst, es gibt unter "sound" keine "intro.mp3".
 

Monkey_D_Ace

Mitglied
C:\Dokumente und Einstellungen\Hanson\Eigene Dateien\3.Semester\Programmieren\Workspace\Earth Escape\bin\sound\StarWars2.mp3

das is der genaue Pfad

wie kann ich den denn einfügen bzw. absolut angeben?

denn wenn ich diesen Pfad in den String schreibe meckert er:

"invalid escape sequence(valid ones are: \b \t \n \f \r \" \' \\)
 

ARadauer

Top Contributor
du musst die \ durch \\ ersetzen

denn ein \t wär zb ein tabulator, oder ein \n ein zeilenumbruch aber ein \\ ist ein \

also:
C:\\Dokumente und Einstellungen\\Hanson\\Eigene Dateien\\3.Semester\\Programmieren\\Workspace\\Earth Escape\\bin\\sound\\StarWars2.mp3
 

Monkey_D_Ace

Mitglied
den Pfad nimmt er jetzt schon mal aber:

java.io.FileNotFoundException: C:\Dokumente und Einstellungen\Hanson\Eigene Dateien\3.Semester\Programmieren\Workspace\Earth Escape\bin\sound\StarWars2.mp3 (Das System kann die angegebene Datei nicht finden)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at Mp3Player.<init>(Mp3Player.java:12)
at GamePanel.doInitializations(GamePanel.java:132)
at GamePanel.<init>(GamePanel.java:80)
at Start.main(Start.java:6)

trotzdem danke
 

The_S

Top Contributor
uff ... sehr ungewöhnlich. Verschieb die mp3 mal in C:\ und pass den Pfad an. Auch mal auf korrekte Groß- und Kleinschreibung achten.
 

Monkey_D_Ace

Mitglied
:toll: :toll: :toll: :applaus: :applaus: :applaus:

danke!!!

funktioniert!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

aber warum???
 

lhein

Top Contributor
Wenn ich es nicht besser wüßte, würd ich meinen, daß der keine Leerzeichen im Pfad verträgt ;)

Schon irgendwie komisch.

lr
 

The_S

Top Contributor
Leerzeichen im Namen sollten kein Problem sein, weil es wird ein FileInputStream verwendet, und der hatte noch nie damit Probleme ;) .

Führst du direkt aus Eclipse aus? Hast du evtl. deine mp3 in das bin-Verzeichnies deines Projekts in den Workspace über das Windows-File-System kopiert? Das mag Eclipse nicht so ...

[edit]äh ... nein ... warum sollte es eine Property für den aktuellen Ort des Workspaces für Eclipse geben :shock: ?
 

Monkey_D_Ace

Mitglied
naja hab mir die file im WinExplorer genommen und per drag'n'drop in mein /Sound - Package geworfen

also direkt nach eclipse rein mein ich halt
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben