有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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) 个答案

  1. # 1 楼答案

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

    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的话:

    Obtains the audio format of the sound data in this audio input stream.

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

  2. # 2 楼答案

    我通过简单地将参数null传递到AudioSystem.getClip()来解决这个问题

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

  3. # 3 楼答案

    错误消息表示输入文件格式有误

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

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