# Musik abspielen



## Java20134 (29. Aug 2014)

Hallo,

ich habe schon seit langem vor in mein Spiel Musik abzuspielen und habe da auch schon einige Codes ausprobiert. Doch es funktioniert nicht wirklich. Könntet ihr mir da helfen? 

```
package music;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.swing.JFrame;

public class Musik extends JFrame {

	private static final long serialVersionUID = -8944335417176425492L;

	public static void main(String[] args) {
		Musik frame = new Musik(); 
		frame.setVisible(true);
	}
	
	public Musik(){
		setTitle("Musik");
		setBounds(100,100,200,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		playSound(); 
	}
	
	public static void playSound(){
		new Thread(new Runnable(){
			public void run(){
				try{
					Clip clip = AudioSystem.getClip();
					AudioInputStream inputStream = AudioSystem.getAudioInputStream(
							getClass().getClassLoader().getResourceAsStream("sounds\\ende.mp3"));
					clip.open(inputStream);
					clip.start();
				}
				catch(Exception e){
					e.printStackTrace();
				}
			}
		}).start();
	}
}
```
So sieht mein Desktop aus:


----------



## Joose (29. Aug 2014)

Du hast eine Exception inkl StackTrace. Dadurch kann man bei Google leicht Lösungen finden.
UnsupportedAudioFileException - StackOverflow


----------



## Java20134 (29. Aug 2014)

Kommt bei dir da eine Internetseite, denn bei mir kommt nur die Meldung das keine gefunden werden kann!


----------



## Joose (29. Aug 2014)

Ja da kommt eine Seite. Und selbst wenn es bei dir anscheinend nicht geht.
Google einfach mal nach dem Exception Name, es haben schon viele so ein Problem gehabt und ihnen wurde geholfen.


----------



## Java20134 (29. Aug 2014)

Ok Danke!


----------



## kaoZ (29. Aug 2014)

Sicher das es nicht

"/sounds/deinSong.eineDateiEndung" sein müsste ?


----------



## Java20134 (29. Aug 2014)

Ja, habe es ausprobiert. Dies ergibt weitere Fehler!

Aber wie weit ich nun schon die Seiten durchgeforstet habe. Ist mein Fehler wohl das ich keine .wav-Datei habe. doch es muss noch etwas falsch sein.


----------



## Java20134 (29. Aug 2014)

Kann mir da noch jemand helfen?


----------



## kaoZ (30. Aug 2014)

Ja, habe es ausprobiert. Dies ergibt weitere Fehler!

welche Fehler ?

Stacktrace bitte

btw.

Könnte man so z.B eine Wav Datei abspielen
(code stammt aus einem meiner alten Projekte und ist bei weitem nicht aktuell, aber Funktionsfähig)


du müsstest lediglich song.getFile() durch deine Datei in Form eines File objektes ersetzen.


```
new Thread(){
        @Override
        public void run(){
        	try {
        		AudioInputStream stream = AudioSystem.getAudioInputStream(song.getFile());
    			AudioFormat audioFormat = stream.getFormat();
    			DataLine.Info info = new DataLine.Info(Clip.class, audioFormat);
    			      Clip clip = (Clip) AudioSystem.getLine(info);
    			      clip.open(stream);
    			      clip.start();
    			        
    			      while(clip.getFramePosition() < clip.getFrameLength()) {};
    			        
                  } catch (IOException | UnsupportedAudioFileException | LineUnavailableException  e) {

                   System.out.println("Folgender Fehler ist aufgetretten : " + e.toString());
               
                  }
        }
       }.start();
```

entscheidend ist dieser Teil hier :


```
while(clip.getFramePosition() < clip.getFrameLength()) {};
```

da sonst der Clip nicht abgespielt wird


----------



## Java20134 (31. Aug 2014)

Ich habe deinen Code ausprobiert und bei mir kommt wieder die selbe Exception (
UnsupportedAudioFileException).

Bei der anderen Variante habe ich diesen Fehler: Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ ). Kann es irgendwo ein anderer Fehler geben?


----------



## kaoZ (31. Aug 2014)

Das kann unter anderem an der Art der Codierung liegen, ich habe dazu damals in dem Thread schon Informationen gepostet

Hier ein ausschnitt zu der nötigen Codierund der .wav datei 

Es werden nur Dateien akzeptiert die PCM_SIGNED Kodiert sind, andernfalls musst du selbst dafür sorgen das deine Dateien mit dieser Kodierung vorliegen.



und hier mal der Link zu dem Thread :

mit Java Musik machen

Vielleicht hift dir das ja weiter


----------



## Java20134 (31. Aug 2014)

Habe es hinbekommen, die Codierung war falsch. Danke


----------

