Sound wird nicht abgespielt

Guten Tag/Abend!
Ich habe eine eigene kleine Library für mich geschrieben um das abspielen von Sounds leichter zu gestalten.
Nur habe ich ein Problem. Es wird alles ordnungsgerecht ausgegeben nur wird der Sound nicht abgespielt.

Code:

Java:
package *****.audio;

import java.io.*;

import javax.sound.sampled.*;

public class Audio {

    private Clip audioClip;
  
    public Audio(String audioFile) {
        try {
            File file = new File(audioFile);
            AudioInputStream ais = AudioSystem.getAudioInputStream(file);
            System.out.println("Create Clip...");
            audioClip = AudioSystem.getClip();
          
            System.out.println("Init...");
            init(ais);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  
    private void init(AudioInputStream ais) throws LineUnavailableException, IOException {
        audioClip.open(ais);
    }
  
    public void play() {
        audioClip.start();
        System.out.println("Started");
    }
  
    public void stop() {
        audioClip.stop();
        System.out.println("Stopped");
    }
}
EDIT:

Benutzung:

Java:
import *****.audio.Audio;

public class Main {

    public static void main(String[] args) {
        Audio audio = new Audio("wavFile.wav");
       
        audio.play();
    }

}
Einige vielleicht hilfreiche Informationen:
Java: JRE 1.8.0_201
JDK 1.8.0_211
Betriebssystem: Microsoft Windows 10
Editor/IDE: Eclipse
Grafikkarte, Prozessor usw. auf Abfrage
 
Zuletzt bearbeitet:
Java:
import *****.audio.Audio;

public class Main {

    public static void main(String[] args) {
        Audio audio = new Audio("wavFile.wav");
        
        audio.play();
    }

}
 
Aha woher sollte ich das wissen?

Brauch getAudioInputStream() nicht absolute Pfade?

Ist das wav vielleicht klein/kurz? Hörst du was wenn du etwas anderes abspielst?
 
Nagut lade den Clip mal hoch

Bearbeitung:
Oder ne, versuche das mal
Java:
clip.start();
while (!clip.isRunning())
    Thread.sleep(10);
while (clip.isRunning())
    Thread.sleep(10);
clip.close();
 
Eigentlich nicht, mir brummt gerade die Rübe (Kopfschmerzen...)

Aber das Programm ist wohl schon zuende bevor der Clip startet. :(
Clip startet zwar einen Thread, aber das dauert ja auch etwas... Zudem ist er kein Daemon.
 
Der Clip startet einen eigenen (Daemon)-Thread, deine Main-Methode läuft nach play also weiter, während das Lied gespielt wird.
Wenn die Main-Methode durchgelaufen ist, gibt es deshalb nur noch den anderen Thread, da dieser aber ein Daemon ist, wird das Programm beendet.

Mit der Schleife wartest du jetzt so lange, wie der Clip läuft, du verhinderst also das Programmende :)
 
Qautsch, das Programm wäre schon fertig, bevor der (Daemon oder nicht) Thread startet. Das war das Problem.
Nein, ist es nicht. Der Thread wird schon in open gestartet, er läuft also bereits, wenn man bei play ankommt.

Das Spielen der Musik geht aber erst mit play los - und direkt danach wird das Programm beenden (weil es eben ein Deamon-Thread ist), deshalb hört man nichts.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben