在Ubuntu上通过PulseAudio从Java播放audio文件时出错

shell上的消息是:

Exception in thread "main" 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) at reprod.ReproducirFichero(reprod.java:16) at reprod.main(reprod.java:44) 

我尝试下载新的audio驱动程序,我尝试重新安装openJDK 7和openJRE 7,也尝试安装java 7。

我已经certificate我的代码在另一台电脑,它的工作原理,我使用的台式机主板是英特尔d525mw,我试图播放的audio格式是.wav。我使用的Linux版本是Ubuntu 12.04.3。请帮我。谢谢

这里是我的代码派对,我尝试播放.wavaudio格式

 import javax.sound.sampled.*; public class reprod { public static void play(){ try { Clip cl = AudioSystem.getClip(); File f = new File("/home/usr/Desktop/d.wav"); AudioInputStream ais = AudioSystem.getAudioInputStream(f); cl.open(ais); cl.start(); System.out.println("playing..."); while (cl.isRunning()) Thread.sleep(4000); cl.close(); 

我使用的Linux版本是Ubuntu 12.04.3

Solutions Collecting From Web of "在Ubuntu上通过PulseAudio从Java播放audio文件时出错"

我只需将参数null传入AudioSystem.getClip()即可解决问题。

我不知道为什么会发生这个异常,我之前在Windows上运行这个项目,它工作…在Linux上,在这里,它没有工作。

我有同样的问题,并发现这个代码工作:

 File soundFile = new File("/home/usr/Desktop/d.wav"); AudioInputStream soundIn = AudioSystem.getAudioInputStream(soundFile); AudioFormat format = soundIn.getFormat(); DataLine.Info info = new DataLine.Info(Clip.class, format); Clip clip = (Clip)AudioSystem.getLine(info); clip.open(soundIn); clip.start(); while(clip.isRunning()) { Thread.yield(); } 

关键在于soundIn.getFormat() 。 引用文档 :

获取此音频输入流中声音数据的音频格式。

资料来源: http : //ubuntuforums.org/showthread.php?t=1469572

错误消息说输入文件格式是错误的。

如果您向我们提供了更多信息(文件格式,可能是您获得的信息,打开文件的代码以及配置音频驱动程序的方式),我们可能会提供帮助。

看到这个问题的一些代码,你可以尝试: 如何播放与Java的.wav文件