# Sound abspielen



## clyde (8. Nov 2009)

Hallo zusammen,

hätte ne Frage zum Abspielen eines Sounds,
würde gerne während meines Programms Musik abspielen,
kann mir da jemand helfen? 

Danke schon mal hier der Code:


```
public class Musik {
	
	public static void main(String[] args) throws MalformedURLException, InterruptedException{
		File f = new File( "C://Training//01.mp3" ); 
		AudioClip sound = Applet.newAudioClip( f.toURL() ); 
		sound.play(); 
		Thread.sleep( 100000 );
	}
}
```

Es passiert garnichts, auch keine Fehlermeldung...


----------



## TheKing (8. Nov 2009)

Hallo..Ich hab ein kleines Spiel programmiert und es wird auch Sound abgespielt:


```
import java.applet.*;
import java.io.*;
import java.net.*;

public class Sound {

   private File datei;
   private AudioClip clip;

   public Sound() {

      datei = new File("backgroundSound.wav");

      try {
         clip = Applet.newAudioClip(f.toURL());
         clip.play();            
      }
      catch (MalformedURLException e) {
        System.out.println("Error: " + e);
      }

   }
}
```


----------



## Spacerat (8. Nov 2009)

MP3 wird standardmässig nicht von Java unterstützt. Deswegen funtz es nicht. [c]<File>.toURL()[/c] (im übrigen seit 1.6 deprecated) liefert stets eine URL, auch dann, wenn die Datei nicht existiert. Durch [c]Applet.newAudioClip()[/c] wird (afaik ohne Fehlermeldung) ein leerer Clip zurückgegeben, wenn 1. die Datei nicht existiert und 2. das Dateiformat nicht unterstützt wird.


----------



## homer65 (10. Nov 2009)

Google mal nach Javazoom. Die haben eine Bibliothek zum abspielen von MP3.


----------



## Java@home (10. Nov 2009)

Hi,
oder schaue dir das auch mal an, ist total einfach damit!
File-Upload.net - mp3Lib.rar
MFG


----------



## clyde (10. Nov 2009)

ok danke bin jetz aber doch eher den umständlicheren weg gegangen,
aber die probleme hören nicht auf!
also es soll eine bestimmte Zeit lang Musik kommen, dann wieder keine mehr

Hier jetz mal mein Programm:

```
import java.applet.*;
import java.io.*;
import java.net.*;
 
public class Musik{

	   File datei = new File("C://Training//phone.wav");
	   AudioClip clip;
	   
	   public void starten(){

		  for (int i = 1; i<2; i++){
	      try {
	         clip = Applet.newAudioClip(datei.toURL());
	         clip.play();            
	      }
	      catch (MalformedURLException e) {
	        System.out.println("Error: " + e);
	      }
	   }
	   }   
   		public void stoppen() throws InterruptedException{
   			try {
   	         clip = Applet.newAudioClip(datei.toURL());
   	         clip.stop();       
   	      }
   	      catch (MalformedURLException e) {
   	        System.out.println("Error: " + e);
   	      }
   	   }
  
	   
   public static void main(String[] args){
	   final Musik a1 = new Musik();
	   a1.starten();
	   
	   Runnable r1 = new Runnable(){
			public void run() {
			try{
			Thread.currentThread().sleep(15000);//10 min = 600.000
			a1.stoppen();
			}
			catch(InterruptedException e1){
			e1.printStackTrace();
			}
			}	
			};
			new Thread(r1).start();
   }   
}
```

soweit funktioniert das programm zwar, die Musik wird abgespielt, aber beim stoppen scheints noch ein Problem zu geben:

Exception in thread "Thread-3" java.lang.OutOfMemoryError: Java heap space
	at com.sun.media.sound.JavaSoundAudioClip.readStream(Unknown Source)
	at com.sun.media.sound.JavaSoundAudioClip.loadAudioData(Unknown Source)
	at com.sun.media.sound.JavaSoundAudioClip.<init>(Unknown Source)
	at sun.applet.AppletAudioClip.createAppletAudioClip(Unknown Source)
	at sun.applet.AppletAudioClip.<init>(Unknown Source)
	at java.applet.Applet.newAudioClip(Unknown Source)
	at Musik.stoppen(Musik.java:37)
	at Musik$1.run(Musik.java:54)
	at java.lang.Thread.run(Unknown Source)

Danke schon mal


----------



## Levitas (6. Dez 2009)

@ TheKing:

bei deinem Code fehlt noch "extends Applet" in deiner Klasse... sonst geht's glaub ich nicht...


----------

