AudioClip hängt Programm auf

Q

qwert_zuiopü

Gast
Hallo,

ich möchte in meinem Programm regelmäßig Sound ausgeben. Dazu verwende ich den AudioClip mit play() und stop(); Nach einigem Abspielen hängt allerdings das gesamte Programm und auch der Sound. Komischerweise passiert das nur mit einem meiner beiden PCs. Der AudioClip läuft übrigens in einem eigenen Thread.
An was könnte das liegen, bzw. wie kann ich das beheben?

Vielen Dank!
 
Q

qwert_zuiopü

Gast
Ich hab mich geirrt, läuft doch nicht in einem eigenen Thread. Hier mal der Code, der nichts besonderes enthält:
Java:
class Soundausgabe extends JFrame {
     AudioClip soundFile1; 
     AudioClip soundFile2;

     public Soundausgabe()  
     {
         soundFile1 = Applet.newAudioClip(getClass().getResource("richtig.wav"));
         soundFile2 = Applet.newAudioClip(getClass().getResource("falsch.wav"));
     }
     public void playRichtig() {
         soundFile1.play();
     }
     public void playFalsch() {
         soundFile2.play();
     }
}
 

Fu3L

Top Contributor
Soweit ich weiß, sorgt AudioClip.play() immer für 'nen eigenen Thread. Da du aber anscheinend mit Threads arbeitest und es auf einem (vllt einem Mehrkerner?) passiert und auf einem anderen nicht, klingt ein Threadingfehler mit Deadlock oder irgendwelchen zu Fehlern führenden Raceconditions wahrscheinlich.
 
Q

qwert_zuiopü

Gast
So, ich komme einfach nicht drauf, deswegen hier mal ein kleines Programm, das sich bei mir aufhängt:
Java:
package audiotest;

import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.*; 

public class AudioTest extends JFrame {
    int breite = 600;
    int hoehe = 700;

    public AudioTest(File f) {
        setSize(breite, hoehe);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }  
    public static void main(String[] args) {
        new Hauptfenster();
    }
}

class Hauptfenster extends JFrame implements ActionListener {
    JButton start = new JButton("Start");
    public Hauptfenster() {
        setSize(300, 300);
        setLocation(600, 100);
        setLayout(new GridLayout(1, 1));
        start.addActionListener(this);
        add(start);
        setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == start) {
            new Methode();
        }
    }
}

class Methode extends JFrame implements Runnable {
    File file;
    AudioTest sm;
    boolean change = false;
    boolean flag = false;
    AudioClip richtig,falsch;
    public Methode() {
        richtig = Applet.newAudioClip(getClass().getResource("richtig.wav"));
        falsch = Applet.newAudioClip(getClass().getResource("falsch.wav"));
        file = ladeDatei();
        sm = new AudioTest(file);
        Thread th=new Thread(this);
        th.start();
    }
    public void run() {
        while(true) {
            boolean check;
            Random rand = new Random();
            int a=rand.nextInt(2);
            if(a==1) check = true;
            else check = false;
            if(check) {
                if(!flag) {
                    change = true;
                    flag = true;
                }
            }
            else {
                if(flag) {
                    change = true;
                    flag = false;
                }
            }
            System.out.println("läuft");
            if(change) {
                if(flag) {
                    falsch.play();
                }
                else {
                    richtig.play();
                }
                change = false;
            }
            try{Thread.sleep(200);}catch(InterruptedException err){System.out.println(err.toString());}
            System.out.print(" ----->  Methode läuft noch.. <-----");
        }
    }
     public File ladeDatei() {
        JFileChooser jfc = new JFileChooser();
        int returnVal = jfc.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = jfc.getSelectedFile();
            return file;
        }
        return null;
    }   
}

So, hab versucht, das Programm so klein wie möglich zu halten :).

Läuft das bei euch? Und warum bei mir nicht?

Danke!!
 
Q

qwert_zuiopü

Gast
So, hab das Beispiel nochmal drastisch gekürzt.

Java:
import java.applet.*; 

public class AudioTest {
    public static void main(String[] args) {
        new Methode();
    }
}

class Methode implements Runnable {
    AudioClip richtig,falsch;
    public Methode() {
        richtig = Applet.newAudioClip(getClass().getResource("richtig.wav"));
        falsch = Applet.newAudioClip(getClass().getResource("falsch.wav"));
        Thread th=new Thread(this);
        th.start();
    }
    public void run() {
        while(true) {
            System.out.println("läuft");
                    falsch.play();
            try{Thread.sleep(1000);}catch(InterruptedException err){System.out.println(err.toString());}
                    richtig.play();
            try{Thread.sleep(1000);}catch(InterruptedException err){System.out.println(err.toString());}
        }
    }
}

Ich erhalte als Ausgabe manchmal "läuft" und manchmal "läuft \n läuft".
 
Q

qwert_zuiopü

Gast
Ich möchte noch anmerken, dass der Code auf einem meiner beiden PC's funktioniert, nur auf meinem Laptop nicht.

Hat wirklich niemand eine Idee?
 

Marco13

Top Contributor
Ja, hier geht's, aber ab und zu werden Sounds "verschluckt". Das ist aber ein Effekt, den ich in ähnlicher Form schon gelegentlich beobachtet habe. Warum es bei dem Laptop gar nicht geht, bzw. sich aufhängt, ist schwer zu sagen. Ich weiß nur, dass bei so einem lapidaren "audioclip.play()" unglaublich viel "unter der Haube" passiert ... also kann auch viel schiefgehen... Irgendeine Treibersache KÖNNTE die Ursache sein, aber das ist hier eher unwahrscheinlich...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Lautstärke AudioClip Spiele- und Multimedia-Programmierung 8
C Alles hängt, wenn ein Sound abgespielt wird Spiele- und Multimedia-Programmierung 9
S Programm hängt sich auf wenn Lied abspielt Spiele- und Multimedia-Programmierung 4
W Programm hängt manchmal Spiele- und Multimedia-Programmierung 5
Leon.tr3x Mein erstes Programm/Spiel Spiele- und Multimedia-Programmierung 10
P Wie kann ich einem Programm hinter eine GUI verstecken? Spiele- und Multimedia-Programmierung 12
P Programm welches auf CMD basirende Programme öffnet (Notepad), sucht , ausführt und compiliert Spiele- und Multimedia-Programmierung 23
A Code in Programm wandeln, wie? Spiele- und Multimedia-Programmierung 3
J Pong Programm Spiele- und Multimedia-Programmierung 1
J Programm "fehlerhaft" als .jar Spiele- und Multimedia-Programmierung 4
P schach programm- wo anfangen? Spiele- und Multimedia-Programmierung 13
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
J programm mit java-plugin Spiele- und Multimedia-Programmierung 2
B Mein Programm reagiert nicht auf den Tasstendruck Spiele- und Multimedia-Programmierung 1
C Mein Programm wird sofort terminated Spiele- und Multimedia-Programmierung 8
A Minecraft Minecraft, Programm funktioniert nur in Eclipse richtig Spiele- und Multimedia-Programmierung 24
P Quiz-Programm Spiele- und Multimedia-Programmierung 4
F Screenshot Programm nach Exception weiterlaufen lassen? Spiele- und Multimedia-Programmierung 9
S Wolken Bild/Grafik vom Programm erstellen lassen Spiele- und Multimedia-Programmierung 11
C Minecraft Minecraft-Programm: Server anpingen Spiele- und Multimedia-Programmierung 2
J Suche 3D Programm für jMonkeyEngine Spiele- und Multimedia-Programmierung 5
S Kann mir wer verraten wie mann ein java programm Starten? Spiele- und Multimedia-Programmierung 4
U Value in Programm ändern? Spiele- und Multimedia-Programmierung 5
F Programm für Bildbearbeitung gesucht: Skalieren und Speichern Spiele- und Multimedia-Programmierung 6
D VOte programm aber wie ?? Spiele- und Multimedia-Programmierung 8
F Programm mit Java3D unter Linux laufen lassen Spiele- und Multimedia-Programmierung 3
S Java 3D Szenegraph programm Spiele- und Multimedia-Programmierung 3
G AffineTransform macht programm immer langsamer Spiele- und Multimedia-Programmierung 3
M warum funkt dieses Programm nicht? (Menübar, Java 3D) Spiele- und Multimedia-Programmierung 2
G Simples Programm sollte laufen? Spiele- und Multimedia-Programmierung 8
A Programm für ein Backgammon (tavli) Spiel Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben