Audio Datei abspielen

Hallo zusammen ich habe mich gerade daran versucht eine Audiodatei
abzuspielen, was leider nicht funktioniert hat!
Mein Code war folgender:

    public static void AUDIO() throws LineUnavailableException, UnsupportedAudioFileException, IOException{
           
            Clip audioClip = AudioSystem.getClip();
            AudioInputStream ais = AudioSystem.getAudioInputStream(new File("F:\\fertig.wav"));
            audioClip.open(ais);
           
        }

Das hat nicht funktioniert!
wenn ich jedoch das F:\fertig.wav gegen getSelectedFile austausche geht das ganze!
Das sieht dann so aus:

    JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        fc.setFileFilter(new FileNameExtensionFilter("*.wav", "wav"));
        fc.setCurrentDirectory(new File("C:\\Windows\\Media\\"));
        int status = fc.showOpenDialog(null);
        if (status == JFileChooser.APPROVE_OPTION) {
            jBtnSchleife.setEnabled(true);
            jBtnEinmal.setEnabled(true);
            try {
            audioClip = AudioSystem.getClip();
            AudioInputStream ais = AudioSystem.getAudioInputStream(fc
                .getSelectedFile());
            audioClip.open(ais);
            } catch (Exception e) {
            JOptionPane.showMessageDialog(null,
                "Fehler beim Öffnen der datei!");
            }
        }

Könnt ihr mir sagen wie ich das ganze ohne JFileChooser hinbekomme?
Ich würde mich sehr freuen!!!
Auserdem wollte ich noch fragen was der Unterschied zwischen den
beiden Methoden ist und warum das eine geht das andere aber nicht?!?

MFG
programmierer12

x-post: [noparse]http://www.java-forum.org/java-basics-anfaenger-themen/156083-audio-datei-abspielen.html[/noparse]

Was soll das ich weiß das das die gleiche Frage ist wie hier ich habe nur gedacht, dass
hier vielleicht personen im forum sind, die mir weiterhelfen könnten.
PS. : Wenn ich das nicht darf gebt mir bescheid weil ich das nicht wusste.

Was heißt denn “geht nicht”? Fehlermeldung, Keine Reaktion, Systemabsturz, Apokalypse…?

Wenn es über den Filechooser funktioniert und nicht über Direktaufruf, dann tippe ich mal darauf, dass der Pfad nicht in Ordnung ist. Bekommst du denn ein ordentliches File-Objekt? Was sagt der Debugger dazu?

Das weiß ich jetzt nicht genau.
Habe noch nie was mit dem debugger gemacht!
Kannst du mir schnell erklären wie ich diesen nutze?

In was für einer Umgebung programmiert du? Eclipse, Netbeans? Oder benutzt du nur einen Text-Editor?

Und nicht vergessen meine Frage zu beantworten: Bekommst du eine Fehlermeldung, oder tut der Code einfach nichts?

[quote=programmierer12]Habe noch nie was mit dem debugger gemacht!
Kannst du mir schnell erklären wie ich diesen nutze?[/quote]
Das hängt von der IDE ab, die Du verwendest. Allgemein Haltepunkt vor der entscheidenden Stelle einfügen Code im Debugger starten…
Alternativ die Werte per System.out… ausgeben, z.B. getAbsolutePath oder getCanonicalPath() und mal vergleichen, was die beiden Varianten liefern.

Wir haben nichts gegen X-Postings, allerdings würden wir uns eine Sache wünschen: Wenn das Problem in einem anderen Forum zuerst gelöst wird, dann vergiss dein Thema hier bei byte-welt nicht. Also in so einem Fall bitte entweder eine Erklärung, wie du das Problem gelöst hast, oder einen Link zur Lösung posten.

Oder einfach direkt auf byte-welt nachfragen, die Chancen auf brauchbare Antworten sind hier deutlich höher als in der werbeverseuchten Forenruine…

Zum Topic:
Der Pfad sieht erstmal richtig aus, new File("C:\\Windows").exists() gibt bei mir z.B. true.

Liegt bei dir direkt auf F: denn die Datei mit dem Namen?
Im Auswahlmodus startest du nämlich auf Laufwerk C:

Gruß

Hallo nochmal ich habe gerade euere Beiträge gelesen!
Hierzu meine Antworten:
1:

Und nicht vergessen meine Frage zu beantworten: Bekommst du eine Fehlermeldung, oder tut der Code einfach nichts?

Es tut sich nichts und ich bekomme keine Fehlermeldung. JUnit hat auch nichts gefunden!
2:

In was für einer Umgebung programmiert du? Eclipse, Netbeans? Oder benutzt du nur einen Text-Editor?

Ich programmiere in Eclipse (meiner Meinung nach die beste IDE für Java)
3:

Liegt bei dir direkt auf F: denn die Datei mit dem Namen?

Ich habe meine Datei direkt auf F: und in dem src-Ordner meines Projekts

Ich hoffe jetzt sind alle Unklarheiten beseitigt!
PS. : Ich habe mir jetzt beigebracht mit dem Debugger zu arbeiten!

MFG
programmierer12

und bei beiden Varianten verweist das jeweilige File Objekt auf den selben Pfad?

Ja bei beiden Objekten verweiße ich auf das gleiche Objekt!
PS: im anderen Forum haben alle aufgegeben weil mir keiner helfen konnte!

MFG
programmierer12

Auf das „selbe“ Objekt, das glaube ich nicht :wink:
Zeig mal deinen gesamten Code und einen Screenshot von deinem Explorer der zeigt, wo die Datei liegt (kannst ja andere Bereiche schwärzen, z.B.).

[QUOTE=programmierer12]PS: im anderen Forum haben alle aufgegeben weil mir keiner helfen konnte![/QUOTE]Die die dort einst helfen konnten, sind ja nun auch alle hier… :wink:

Zum Thema…
Dein erstes Codebeispiel sieht schon richtig aus, nur solltest du nicht erwarten, dass dort etwas spielt, wenn du den Clip nicht startest. Wenn der Clip null ist (UnsupportedAudioFileException), stimmt etwas mit der Datei nicht und wenn es eine LineUnavailable Exception gibt, hat die WAV-Datei ein nicht abspielbares Format (z.B. A- / µLAW). In letzterem Fall muss das Format gewandelt werden:

	{
		AudioFormat af = source.getFormat();
		Encoding enc = af.getEncoding();
		if(!PCM_SIGNED.equals(enc) && !PCM_UNSIGNED.equals(enc)) {
			int ssb = af.getSampleSizeInBits();
			int c = af.getChannels();
			if(ssb < 8) {
				ssb = 8;
			}
			int minFs = c * ssb / 8;
			int fs = af.getFrameSize();
			if(fs < minFs) {
				fs = minFs;
			}
			af = new AudioFormat(
					PCM_SIGNED,
					af.getSampleRate(),
					ssb * 2,
					af.getChannels(),
					fs * 2,
					af.getSampleRate(),
					af.isBigEndian()
				);
			source = AudioSystem.getAudioInputStream(af, source);
		}
		return source;
	}```

Ich wollte eigentlich schon längst einen Blog drüber verfasst haben, aber die Zeit reicht grad nicht hinten und nicht vorne für eine solche Komplexität.
Ich habe deswegen noch mal mein nerviges Dialpad als demo drangehängt. Hoffe, du kannst dich da durch wühlen.

Moin,

Was nicht mehr ganz stimmt … seit heute morgen gibt es dort wohl zwei neue Antworten !!

Gruß
Klaus

Hallo Alle zusammen!
Ich habe mein Problem gelöst!
Das Problem war, dass das ganze durch
eine Aktion ausgelöst werden musste,
weshalb es auch nur mit dem FileChooser
funktioniert hat!

Das heißt, du hattest die Funktion Audio() gar nicht aufgerufen gehabt?