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

时间:2013-09-22 09:41:27

标签: 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.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版本是Ubuntu 12.04.3

3 个答案:

答案 0 :(得分:6)

我只是将参数null传递给AudioSystem.getClip()来解决问题。

我不知道为什么会发生这种异常,我之前在Windows上运行这个项目,并且它有效......在Linux之后,在这里,它没有用。

答案 1 :(得分:4)

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

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()。引用docs

  

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

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

答案 2 :(得分:0)

错误消息表明输入文件格式不正确。

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

有关您可以尝试的一些代码,请参阅此问题:How to play .wav files with java