.wav abspielen

Thommi

Mitglied
Steh grad irgendwie vor nem kleine Problem, oder vielleichtg nur ein bisschen aufm Schlauch 🙂
Ich will in einem Spiel im Hintergrund eine Musikdatei abspielen. Ich hab dan so ein bisschen rumgesucht und bin darauf gestoßen dass mit mit den meisten Formaten recht kompliziert ist, aber mit .wav eigentlich recht einfach.
Ich hab jetzt mal das hier dazu gefunden:

Java:
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
public class Audioabspielen {
    // private Audioabspielen () { }
 
    public static void main (final String[] args) {
        // URL vom Lied
        URL url = null;
        try {
            url = new URL("file://G:/Projekt/Nyan.wav");
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return;
        }
 
        //neues AudioClip element
        AudioClip clip = Applet.newAudioClip(url);
 
        //abspielen
        clip.play();
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Jetzt meine Frage: Was mus sich machen dass es das ganze abspielt? 😀 ich komm einfach nicht drauf
 
Hi,

wenn Du den Sound länger abspielen willst, verlängerte die Zeit in der Zeile:

Code:
  Thread.sleep(5000);

Besser wäre es das Abspielen des Sound in einem eigenen Thread laufen zu lassen,
dann ist der Sound unabhängig vom übrigen Programm.

Schau Dir mal die Anhänge in diesem Beitrag an. Damit funktioniert sogar mp3.
http://www.java-forum.org/spiele-mu...-mp3-lied-laenge-auslesen-jmf.html#post796554
 
Zuletzt bearbeitet:
damit der Sound startet, fehlt in der Zeilen
Java:
url = new URL("file://G:/Projekt/Nyan.wav");

ein "/" 🙂

Java:
url = new URL("file:///G:/Projekt/Nyan.wav");

Dann wir der Sound auch abgespielt.

wenn Du den Sound länger abspielen willst, verlängerte die Zeit in der Zeile:
Code:
Thread.sleep(5000);

hat sich damit erledigt 😳
 
Ich frage mich dabei immer, wieso zum Abspielen von Audio immer wieder AudioClip des Appletpaketes verwendet wird. Liegt wohl an der "einfachen" Handhabung.
Wie dem auch sei. Neben den Applet-Klassen gibt es immer noch "javax.sound.sampled" und ein darin befindliches Interface Clip. Dieses kann noch einige Dinge mehr, als dieser Applet-AudioClip, unter anderem hat es auch eine Methode "getMicrosecondLength" mit welcher man die Länge des Clips feststellen kann. Teilt man diese durch 1000, hat man die genaue Threadwartezeit.
"javax.sound.sampled" ist nur geringfügig unhandlicher, aber es lohnt sich, es sich mal anzusehen.
 
Danke, es hat jetzt geklappt mit dem abspielen 🙂
Hat allerdings zu einem neuen Problem geführt 😀
Wie kann ich das ganze wieder Beenden? Ich habs mal gan einfach versucht, aber so gings auf jedenfall nicht :
Java:
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
public class Audioabspielen {
    // private Audioabspielen () { }
    static AudioClip clip;
    
  
    public static void main () {
        // URL vom Lied
        URL url = null;
        try {
            url = new URL("file:///G:/Projekt/Nyan.wav");
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return;
        }
 
        //neues AudioClip element
        AudioClip clip = Applet.newAudioClip(url);
 
        //abspielen
        clip.play();
        try {
            Thread.sleep(600000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    
     public static void stop()
        {
            clip.stop();
        }
    
}

Wenn ich versuch stop() auszuführen kommt das hier :

Exception in thread "Thread-39" java.lang.NullPointerException
at Audioabspielen.stop(Audioabspielen.java:35)
 
Ich gehe davon aus, dass Du die Klasse "Audioabspielen"
aus einer anderen Klassen aufruft, denn eigenständig funktioniert diesen Klasse
nicht mehr.

Die Variabel "clip" ist in Deiner Main Methode definiert und somit nur dort gültig.
Du versuchst aber sie in der "stop" Methode zu verwenden. Das geht natürlich nicht.

Welche IDE benutzt Du ?
 

Neue Themen


Zurück
Oben