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
# 1 楼答案
我遇到了同样的问题,并发现此代码正常工作:
密钥在
soundIn.getFormat()
中。引用docs的话:资料来源:http://ubuntuforums.org/showthread.php?t=1469572
# 2 楼答案
我通过简单地将参数
null
传递到AudioSystem.getClip()
来解决这个问题我不知道为什么会发生这种异常,我以前在Windows上运行过这个项目,它工作正常。。。在Linux上和这里之后,它就不起作用了
# 3 楼答案
错误消息表示输入文件格式有误
如果您向我们提供更多信息(文件格式,可能是从哪里获得的,用于打开文件的代码,以及如何配置音频驱动程序),我们可能会提供帮助
有关可以尝试的代码,请参见此问题:How to play .wav files with java