Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ubuntu上通过PulseAudio播放Java音频文件时出错_Java_Linux_Pulseaudio - Fatal编程技术网

在Ubuntu上通过PulseAudio播放Java音频文件时出错

在Ubuntu上通过PulseAudio播放Java音频文件时出错,java,linux,pulseaudio,Java,Linux,Pulseaudio,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.

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)
我尝试下载新的音频驱动程序,尝试重新安装openJDK 7和openJRE 7,还尝试安装java 7

我已经在另一台计算机上验证了我的代码,它可以工作,我使用的桌面板是intel d525mw,我尝试播放的音频格式是.wav。我使用的linux版本是Ubuntu 12.04.3。请给我帮助。谢谢

这是我的代码,我尝试播放一个.wav音频格式

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版本是Ubuntu12.04.3

错误消息说输入文件格式有点错误

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


查看此问题以获取一些可以尝试的代码:

我遇到了相同的问题,并发现此代码正常工作:

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()
中。引述:

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


来源:

我只需将参数
null
传递到
AudioSystem.getClip()
中,就解决了这个问题


我不知道为什么会发生这种异常,我以前在Windows上运行过这个项目,它工作正常。。。在Linux上和这里之后,它就不起作用了

音频格式为.wav。我已经在其他计算机上证明了这一点,它是有效的。我不知道如何配置音频驱动程序。