sound play java swing audio io javasound

sound - play mp3 java



Error al reproducir AudioInputStream (1)

Este SSCCE es un ''resultado nulo'' aquí, en el que el audio se reinicia (se prueba al menos 3 veces) sin excepciones.

import java.net.URL; import java.awt.event.*; import javax.swing.*; import javax.sound.sampled.*; public class RestartableLoopSound { public static void main(String[] args) throws Exception { URL url = new URL( "http://pscode.org/media/leftright.wav"); final Clip clip = AudioSystem.getClip(); AudioInputStream ais = AudioSystem. getAudioInputStream( url ); clip.open(ais); SwingUtilities.invokeLater(new Runnable() { public void run() { final JToggleButton b = new JToggleButton("Loop"); ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent ae) { if (b.isSelected()) { // loop continuously clip.loop(Clip.LOOP_CONTINUOUSLY); } else { clip.stop(); } } }; b.addActionListener(listener); JOptionPane.showMessageDialog(null, b); } }); } }

Quiero crear 2 JMenuItem que pueda iniciar y detener el audio de fondo.

Aquí está mi código:

public class MainClass extends JFrame { private AudioInputStream audioInputStream; private Clip clip; public MainClass(String title) { try { audioInputStream = AudioSystem.getAudioInputStream(new File("Background.wav")); clip = AudioSystem.getClip(); clip.loop(Clip.LOOP_CONTINUOUSLY); clip.open(audioInputStream); } catch(Exception e) { System.out.println("Error with playing sound."); e.printStackTrace(); } } public void startSound() { clip3.start(); settingSubMenuItem1.setEnabled(false); settingSubMenuItem2.setEnabled(true); } public void stopSound() { clip3.stop(); settingSubMenuItem1.setEnabled(true); settingSubMenuItem2.setEnabled(false); } private class MenuItemListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == settingSubMenuItem1) { startSound(); } if(e.getSource() == settingSubMenuItem2) { stopSound(); } } } }

Cuando hago clic en settingSubMenuItem1 , funciona bien, se reproduce el audio.

Pero cuando hago clic en settingSubMenuItem2 , hay errores y si vuelve a hacer clic en settingSubMenuItem1 , no habrá más sonido.

Aquí están los errores:

Error with playing sound. java.lang.IllegalStateException: Clip is already open with format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian and frame lengh of 7658

¿Cuál es el error de mi programa?