Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
ich sitze seit 17 Stunden daran einfach einen Sound abzuspielen. Ich habe dabei so ziemlich jedes Tutorial und Forum im Internet in den verschiedensten Sprachen durchgearbeitet, aber egal auf welche Weise ich es versuche, es funktioniert einfach nicht. Da mein Projekt in 3 Tagen fertig sein soll und der Sound so ziemlich das einzige ist an dem ich noch arbeiten muss, brauche ich eure HILFE.
Ich brauch einfach ein ganz simples Beispiel bei dem ein Sound bei Klick auf Button ausgeführt wird. Ich weiß es ist eigentlich echt simpel, aber kriege es einfach nicht hin.
Weder haben wir eine Kristallkugel, noch können wir uns in deinen Rechner einhacken um uns den Code anzusehen. Du musst ihn uns schon geben
Hast du dir schon die Java Sound API angeguckt?
Eine andere Möglichkeit, die ich direkt davor getestet habe, ist folgenden:
Java:
public static void playSound(){
AudioPlayer AP = AudioPlayer.player;
AudioStream AS;
AudioData AD;
sun.audio.ContinuousAudioDataStream loop = null;
try{
AS = new AudioStream( new FileInputStream("allWeAre.wav"));
AD = AS.getData();
loop = new sun.audio.ContinuousAudioDataStream(AD);
}catch(IOException error){}
AP.start(loop);
}
Bei Variante 1 bekomme ich eine Fehlermeldung: java.lang.NullPointerException .
Bei der zweiten Variante bekomme ich keine Fehlermeldung, höre aber auch kein Sound.
Also du dein Sound wird wieder gegeben aber du musst deinem Programm auch die Zeit geben die der Ton braucht also den Thread solange der Sound Schlafen legen.
Ich habe mir dafür eine Statische Classe angelegt mit einer Statischen Methode playSound(File file); und darin immer mein .wav File angegeben.
Java:
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
public class SoundPlay {
public static void main(String[] args) {
playSound(new File("./explosion.wav"));
}
private static void playSound(File file) {
if (!file.getName().endsWith("wav")) {
System.err.println("Falscher Dateitype!!");
return;
}
new Thread(new Runnable() {
@Override
public void run() {
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat af = audioInputStream.getFormat();
int size = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
byte[] audio = new byte[size];
DataLine.Info info = new DataLine.Info(Clip.class, af, size);
audioInputStream.read(audio, 0, size);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(af, audio, 0, size);
clip.start();
Thread.sleep(clip.getMicrosecondLength()/1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
ACHTUNG bevor das jemand kopiert ich habe etwas geändert ich muss natürlich die Micro sec noch durch 1000 Teilen!!!!!
hoffe es Hilft
Gruß Simon
Ich benutze netbeans. In welche ordner soll ich die datei packen?
wenn ich es mit C:\\.... versuche bekomme ich immer folgende Fehlermeldung:
java.io.FileNotFoundException:
Du kannst dir auch noch einen Ordner im package erstellen, zB "sound". Dort packst du das file rein und versuchst mal es direkt im AudioInputStream Konstruktor anzugeben :
Also ich hatte damals Probleme mit verschiedenen .wav Formaten. Nur um mal ausszuschliessen das es wirklich nicht daran liegt versuche mal folgendes: WAV Files dort unter "other waves" das file HUGEWAV runterladen. Das file in einen Ordner "sound" in dein Package legen. Mit folgendem Code funzt das bei mir: