Sound wird nicht abgespielt

Dann07

Aktives Mitglied
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:

Dann07

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

public class Main {

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

}
 
X

Xyz1

Gast
Ich denke das hast Du vergessen:
Java:
// open audioInputStream to the clip 
clip.open(audioInputStream);
 
X

Xyz1

Gast
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?
 
X

Xyz1

Gast
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();
 
X

Xyz1

Gast
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.
 

mrBrown

Super-Moderator
Mitarbeiter
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 :)
 
X

Xyz1

Gast
Qautsch, das Programm wäre schon fertig, bevor der (Daemon oder nicht) Thread startet. Das war das Problem.
 

mrBrown

Super-Moderator
Mitarbeiter
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.
 

mihe7

Top Contributor
Wie würde das denn so etwa aussehen?
Zum Beispiel (Achtung: main inkl.)
Java:
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 addListener(LineListener listener) {
        audioClip.addLineListener(listener);
    }

    public void removeListener(LineListener listener) {
        audioClip.removeLineListener(listener);
    }
  
    public void play() {
        audioClip.start();
        System.out.println("Started");
    }

    public void stop() {
        audioClip.stop();
        System.out.println("Stopped");
    }

    public static void main(String[] args) {
        final Object lock = new Object();

        Audio audio = new Audio("wavFile.wav");
        audio.addListener(new LineListener() {
            @Override
            public void update(LineEvent e) {
                if (e.getType() == LineEvent.Type.STOP) {
                    synchronized(lock) {
                        lock.notify();
                    }
                }
            }
        });      

        synchronized(lock) {       
            audio.play();
            try {
                lock.wait();
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }
}
 

Blender3D

Top Contributor
Wie auch immer: LineListener dazu, Thread warten lassen und im Listener am Ende des Clips aufwecken :)
Oder das Ganze in einen eigenen Thread packen, der nach dem Start des Sounds etwas wartet.
Java:
public class AudioPlayer extends Thread {
    private URL url;

    public AudioPlayer(String fileName) {
        try {
            File file = new File(fileName);
            if (file.canRead())
                url = file.toURI().toURL();
            else
                throw new IllegalArgumentException("can't read '" + fileName + "'");
        } catch (MalformedURLException e) {
            throw new IllegalArgumentException("can't convert '" + fileName + "' to URL", e);
        }
        if (url == null)
            throw new IllegalArgumentException("could not play '" + fileName + "'");
    }

    @Override
    public void run() {
        AudioClip clip = Applet.newAudioClip(url);
        clip.play();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
Java:
..
new AudioPlayer(fileName).start();
..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Sound wird nicht abgspielt Java Basics - Anfänger-Themen 8
R Sound wird im Applet nicht abgespielt Java Basics - Anfänger-Themen 13
Pinhg Sound in Greenfoot Code einbinden Java Basics - Anfänger-Themen 2
SpigBin Sound einbinden bei Funktionsaufruf Java Basics - Anfänger-Themen 4
R MediaPlayer: Sound hat Verzögerung Java Basics - Anfänger-Themen 2
B Eclipse spielt Sound nicht ab Java Basics - Anfänger-Themen 12
CptK Erste Schritte Sound-Datei einbinden Java Basics - Anfänger-Themen 2
R Sound abspielen Java Basics - Anfänger-Themen 9
N kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 1
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
U Sound einfügen Java Basics - Anfänger-Themen 6
Anfänger2011 Input/Output Sound abspielen - ICH VERZWEIFLE!!!! Java Basics - Anfänger-Themen 24
K Sound speichern Java Basics - Anfänger-Themen 3
J Sound-Wiedergabe Java Basics - Anfänger-Themen 6
P Java Sound midi Java Basics - Anfänger-Themen 3
D Sound abspielen, wo muss die .wav liegen Java Basics - Anfänger-Themen 3
R Erste Schritte Exception bei erstellen von Java Sound Java Basics - Anfänger-Themen 23
2 Input/Output Sound aufnehmen/abspielen? Java Basics - Anfänger-Themen 2
SheldoN Sound abspielen nach Buttonklick in Applets Java Basics - Anfänger-Themen 17
J WAVE-file mit Java Sound erstellen Java Basics - Anfänger-Themen 9
F sound nur abspielen, wenn er nicht läuft Java Basics - Anfänger-Themen 6
B Sound-Wiedergabe Java Basics - Anfänger-Themen 4
F Spiel geht nicht mehr nach neuer Klasse Sound Java Basics - Anfänger-Themen 18
S kein sound? Java Basics - Anfänger-Themen 3
A Jlayer: Wie sound stoppen der in einem Thread läuft Java Basics - Anfänger-Themen 7
M Kein Sound in der .jar, davor schon Java Basics - Anfänger-Themen 6
M sound abspielen Java Basics - Anfänger-Themen 3
C Wav-Sound nur unter Window Java Basics - Anfänger-Themen 5
C Sound abspielen Java Basics - Anfänger-Themen 6
R Problem mit Sound Java Basics - Anfänger-Themen 5
R Sound Problem Java Basics - Anfänger-Themen 25
P Sound in Applikation (nicht Applet) Java Basics - Anfänger-Themen 5
Developer_X Java can't play mid sound? Java Basics - Anfänger-Themen 16
K kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 2
X Benutzung von Mixer (Sound, nicht Küche!) Java Basics - Anfänger-Themen 2
V Serialisieren einer ShortMessage (javax.sound.midi) Java Basics - Anfänger-Themen 5
S Java Sound mit 24 bit/96 kHz Audio? Java Basics - Anfänger-Themen 12
0 Problem mit Bild und Sound im Applet Java Basics - Anfänger-Themen 12
D Sound in Frames möglich? EDIT Class Clip Java Basics - Anfänger-Themen 5
K Sound stoppt nicht Java Basics - Anfänger-Themen 3
M Sound Abspielen Java Basics - Anfänger-Themen 9
N Java Sound - Unsupported control type Java Basics - Anfänger-Themen 2
F Sound Interface Richtig implementieren Java Basics - Anfänger-Themen 4
G Sound/Endlosschleife/Abbruchproblem Java Basics - Anfänger-Themen 3
B Wo finde ich die Klasse javax.sound.sampled.AudioSystem Java Basics - Anfänger-Themen 7
G Sound bei buttonklick abspielen Java Basics - Anfänger-Themen 7
B Sound einbinden und abspielen Java Basics - Anfänger-Themen 9
D .wav Sound in einer simplen Applikation abspielen Java Basics - Anfänger-Themen 3
K Java Sound Application Java Basics - Anfänger-Themen 2
G Sound einbinden Java Basics - Anfänger-Themen 2
G sound in applikation Java Basics - Anfänger-Themen 7
G Sound Java Basics - Anfänger-Themen 13
megachucky wo gibts icons, images und sound dateien zum download? Java Basics - Anfänger-Themen 2
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
T if-else Bedingung wird ignoriert Java Basics - Anfänger-Themen 4
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
P Webseite vom Smartmeter wird nur unleserlich angezeigt Java Basics - Anfänger-Themen 7
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
Ostkreuz Wieso wird die Methode nochmal aufgerufen? Java Basics - Anfänger-Themen 5
Oneixee5 Maven Plugin wird 2 mal ausgeführt Java Basics - Anfänger-Themen 10
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
D Interface Methode wird ungewollt in der Subklasse überschrieben Java Basics - Anfänger-Themen 5
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
schemil053 Multithread - Input verrutscht während etwas ausgegeben wird Java Basics - Anfänger-Themen 6
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
M Text wird in der Console nicht ausgegeben. Java Basics - Anfänger-Themen 11
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
sserio Math. Befehl wird rot markiert Java Basics - Anfänger-Themen 5
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
B Bungeecord | ProxiedPlayer wird nicht in ArrayList hinzugefügt Java Basics - Anfänger-Themen 1
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
S Methoden Return Rückgabewert wird nicht übergeben Java Basics - Anfänger-Themen 8
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
I Code wird nicht ausgeführt Java Basics - Anfänger-Themen 2
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Präzedenregeln in Java sagen, dass +expr und -expr vor + von Addition und - von Addition stehen, warum wird dann z. B. a+b als eine Addition ausgeführ Java Basics - Anfänger-Themen 7
M Was wird hier genau getestet? Java Basics - Anfänger-Themen 9
M Wie schreibe ich eine if-Verzweigung um, so dass ein Bedingungsoperator benutzt wird? Java Basics - Anfänger-Themen 9
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben