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?!?
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?
[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.
Auf das „selbe“ Objekt, das glaube ich nicht
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…
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.
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!