2015-06-14 56 views
0

我想只是玩Java中的基本的聲音播放聲音...格式無效,試圖在Java中

這裏是我的代碼,根據代碼在各種論壇中發現:

Clip clip = null; 

    try { 
     clip = AudioSystem.getClip(); 
     AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(url)); 
     clip.open(inputStream); 
    } catch (LineUnavailableException | IOException | UnsupportedAudioFileException ex) { 
     Logger.getLogger(Pomodoro.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    return clip; 

我檢查:new File(url).exists();返回true,我檢查了文件類型是真正的音頻WAV(音頻/ x-wav),我檢查了問題仍然存在於另一個文件中......我不明白我是什麼做錯了。

錯誤:

Exception in thread "main" java.lang.ExceptionInInitializerError 
Caused by: java.lang.IllegalArgumentException: Invalid format 
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142) 
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99) 
    at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283) 
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402) 
    at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453) 

幫助!

+0

我在下一個鏈接中找到解決方案http://stackoverflow.com/questions/30833342/invalid-format-with-getaudioinputstream-trying-to-play-a -sound-in-java Bye –

回答

2

我終於找到了我的問題的副本。對不起,我困擾你。

AudioInputStream is not working

我的代碼變成了:

Clip clip = null; 

    try { 
     AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(url)); 
     DataLine.Info info = new DataLine.Info(Clip.class, inputStream.getFormat()); 
     clip = (Clip)AudioSystem.getLine(info); 
     clip.open(inputStream); 
    } catch (LineUnavailableException | IOException | UnsupportedAudioFileException ex) { 
     Logger.getLogger(Pomodoro.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    return clip; 

不過,我很驚訝,我以前的代碼沒有工作。有時候,我對Java非常絕望......

0

您可以使用波紋管代碼在Java中播放聲音。

try { 
     DataLine.Info daInfo = new DataLine.Info(Clip.class, null); 
     try { 
      URL sounURL = ClassName.class.getResource("/com/notification.wav"); 

      AudioInputStream inputStream = AudioSystem.getAudioInputStream(sounURL); 
      DataLine.Info info = new DataLine.Info(Clip.class, inputStream.getFormat()); 
      Clip clip = (Clip) AudioSystem.getLine(info); 
      clip.open(inputStream); 
      clip.start(); 
     } catch (LineUnavailableException e) { 
      e.printStackTrace(); 
     } catch (UnsupportedAudioFileException ex) { 
      ex.printStackTrace(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } catch (Exception e) { 
     System.out.println("music"); 
    } 
+0

謝謝。我發現了相同的結果。只有帶混音器的部分似乎沒有必要。我們只能用AudioSystem.getLine(info)進行總結; – Sharcoux