我想在玩游戏时从我的电脑播放音频片段。但我只能使用非常短的声音。有没有类似的方式播放像我播放音效的歌曲?
如果重要的话,我会在游戏中使用摇摆图形。
我尝试使用歌曲时收到的错误 " javax.sound.sampled.UnsupportedAudioFileException:无法从输入文件中获取音频输入流"
public static void main(String args[]) {
Sound s = new Sound();
s.playSound("C:/Users/isac/Desktop/banjos.wav");
}
}
public void playSound(String file) {
try {
AudioInputStream audio = AudioSystem.getAudioInputStream(new File(
file));
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
}
catch (UnsupportedAudioFileException uae) {
System.out.println(uae);
} catch (IOException ioe) {
System.out.println(ioe);
} catch (LineUnavailableException lua) {
System.out.println(lua);
}
}
}
答案 0 :(得分:3)
您收到的错误消息表明问题可能与文件的格式有关,而不是文件的长度。
您可以通过查看音频文件的属性来检查音频文件的格式 - 通常需要右键单击Windows。重要的属性可能位于“高级”选项卡上。 Java可以读取多种格式,但我最常见的是它挂起的内容如下:
一个人试图加载.mp3或.ogg或其他形式的压缩,但没有实现任何可以解压缩这些文件的库(不是你的情况,因为你的banjo.wav是一个wav)。 / p>
.wav不是标准的“CD质量”格式(44100 fps,16位编码,立体声),而是类似24位或32位编码或48000或96000 fps。
目前的DAW通常可以很容易地以优于“CD质量”的格式进行录制,但Java还不支持它们。
在大多数情况下,如果您不使用其他家庭工作室程序,则可以将使用Java无法读取的音频文件转换为Audacity(免费)的音频文件。在获得Audacity的地方要小心,因为提供它的一些网站(官方网站除外)将包括广告软件或恶意软件或病毒。
作为旁注,对于较长的文件,最好加载到SourceDataLine中进行播放而不是Clip。使用SourceDataLine,您不必在开始播放之前等待整个文件加载,并且它不会占用任何接近RAM的位置。 Java Tutorials有一个Java Sound部分和一个专门播放的页面。