在java中播放wav文件
我试着为我的游戏制作音效,但我还没来得及玩它。 我到处都查过,但每次我试图做我看到的事情时,我总是有这样的错误:在java中播放wav文件,java,audio,Java,Audio,我试着为我的游戏制作音效,但我还没来得及玩它。 我到处都查过,但每次我试图做我看到的事情时,我总是有这样的错误: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source) at pong.Pong.loadResou
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at pong.Pong.loadResources(Pong.java:114)
at pong.Pong.<init>(Pong.java:69)
at pong.Pong.main(Pong.java:34)
为了确定,我将同一个命名的wav文件直接放在项目文件夹、src文件夹和res文件夹下。顺便说一句,我想从res文件夹打开它,但我要做的第一件事就是修改代码来播放声音。然后我可以使用路径声明。任何帮助都将不胜感激 试试这样的方法:
File file = new File("clip.wav");
if(file.exists()) {
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat audioFormat = audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
SourceDataLine sourceLine = (SourceDataLine) AudioSystem.getLine(info);
sourceLine.open(audioFormat);
sourceLine.start();
int nBytesRead = 0;
byte[] abData = new byte[128000];
while (nBytesRead != -1) {
try {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
} catch (IOException e) {
e.printStackTrace();
}
if (nBytesRead >= 0) {
sourceLine.write(abData, 0, nBytesRead);
}
}
sourceLine.drain();
sourceLine.close();
} catch (UnsupportedAudioFileException | IOException e) {
e.printStackTrace();
} catch (LineUnavailableException e) {
e.printStackTrace();
}
} else {
System.err.println("The selected file doesn't exist!");
}
它很好用。
如果您使用的是Eclipse(我不知道它如何与其他IDE协同工作),请确保将文件放在项目的根文件夹中
问题的解决方案。尝试以下方法:
File file = new File("clip.wav");
if(file.exists()) {
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
AudioFormat audioFormat = audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
SourceDataLine sourceLine = (SourceDataLine) AudioSystem.getLine(info);
sourceLine.open(audioFormat);
sourceLine.start();
int nBytesRead = 0;
byte[] abData = new byte[128000];
while (nBytesRead != -1) {
try {
nBytesRead = audioInputStream.read(abData, 0, abData.length);
} catch (IOException e) {
e.printStackTrace();
}
if (nBytesRead >= 0) {
sourceLine.write(abData, 0, nBytesRead);
}
}
sourceLine.drain();
sourceLine.close();
} catch (UnsupportedAudioFileException | IOException e) {
e.printStackTrace();
} catch (LineUnavailableException e) {
e.printStackTrace();
}
} else {
System.err.println("The selected file doesn't exist!");
}
它很好用。
如果您使用的是Eclipse(我不知道它如何与其他IDE协同工作),请确保将文件放在项目的根文件夹中
问题的解决方案。尝试输入
System.out.println(新文件(“score.wav”).exits())在你的代码中,我怀疑这个文件不存在于你认为它应该放在System.out.println(新文件(“score.wav”).exits()中的地方代码>在你的代码中,我怀疑该文件不存在,你认为它不存在。我也尝试过该解决方案,但它不起作用,但我通过你使用的操作系统和java的哪个版本得到相同的错误异常?@TolgaŞen还尝试其他wav文件,可能你的文件已损坏。我使用windows8.1和java7,当我尝试使用其他文件时,它仍然抛出相同的错误。我想这个文件没有问题,我使用的是“java8 update 73”,代码运行良好,我不知道,但可能是java版本的错误,如果可以的话,尝试更新java。我也尝试过这个解决方案,但它不起作用,但我还是通过你使用的操作系统和java的哪个版本得到了相同的错误异常?@TolgaŞen也尝试使用其他wav文件,可能你的文件已损坏。我使用windows8.1和java7,当我尝试使用其他文件时,它仍然抛出相同的错误。我想我使用的文件“java8 update 73”没有问题,代码运行良好,我不知道,但可能是java版本的错误,如果可以的话,尝试更新java。