从计算机文件中播放java中的.wav文件

package soundTest; import java.applet.*; import java.net.*; import javax.swing.*; import javax.sound.sampled.*; import java.io.*; import java.util.*; public class SoundTest { public static void main(String[] args) throws Exception { try { AudioClip clip1 = Applet.newAudioClip(new URL(new File("E0.wav").getAbsolutePath())); clip1.play(); } catch (MalformedURLException murle) { System.out.println(murle); } URL url = new URL( "http://www.mediafire.com/listen/tok9j9s1hnogj1y/downloads/E0.wav"); Clip clip = AudioSystem.getClip(); AudioInputStream ais = AudioSystem.getAudioInputStream(url); clip.open(ais); URL url2 = new URL( "http://www.villagegeek.com/downloads/webwavs/Austin_Powers_death.wav"); Clip clip2 = AudioSystem.getClip(); AudioInputStream ais2 = AudioSystem. getAudioInputStream(url2); clip2.open(ais2); clip.loop(1); clip2.loop(Clip.LOOP_CONTINUOUSLY); SwingUtilities.invokeLater(new Runnable() { public void run() { JOptionPane.showMessageDialog(null, "Close to exit!"); } }); } 

}

我无法弄清楚如何从我的计算机(而不是从URL)播放一个wav文件。 我确信我把它放在了正确的区域,SRC(我也把它放在几乎所有其他空间以防万一……)。

第一次尝试来自http://www.cs.cmu.edu/~illah/CLASSDOCS/javasound.pdf它给了我一个catch语句。

第二次尝试是将我录制的.wav文件放在mediafire上。 但是,这没有用。 “线程中的exception”主“javax.sound.sampled.UnsupportedAudioFileException:无法从输入URL获取音频输入流”

第三个例子工作正常,但是,与我的文件不同,它是来自在线的文件。 单击那个时,它会将您带到一个音频播放器,而mediafire链接会将您带到一个包含其他内容的页面和一些播放该文件的应用程序。

第一次尝试

 AudioClip clip1 = Applet.newAudioClip(new URL(new File("E0.wav").getAbsolutePath())); 

这不是您构建FileURL方式。 相反,您应该使用File#getURI#getURL

 AudioClip clip1 = Applet.newAudioClip(new File("/full/path/to/audio.wav").toURI().toURL()); 

第二次尝试

mediafire返回一个html响应,而不是音频文件…你可以用…来测试它

 URL url = new URL("http://www.mediafire.com/listen/tok9j9s1hnogj1y/downloads/E0.wav"); try (InputStream is = url.openStream()) { int in = -1; while ((in = is.read()) != -1) { System.out.print((char)in); } } catch (IOException exp) { exp.printStackTrace(); } 

第三次尝试

open剪辑,但从来没有start它…

 URL url2 = new URL("http://www.villagegeek.com/downloads/webwavs/Austin_Powers_death.wav"); Clip clip2 = AudioSystem.getClip(); AudioInputStream ais2 = AudioSystem.getAudioInputStream(url2); clip2.open(ais2); clip2.start();