Java - 不支持的音频文件异常 [重复]
Posted
技术标签:
【中文标题】Java - 不支持的音频文件异常 [重复]【英文标题】:Java - Unsupported Audio File Exception [duplicate] 【发布时间】:2013-05-28 23:02:16 【问题描述】:我正在尝试为我的 java 游戏添加声音...
我在运行时玩 Sultans of swing:
static String WHOOSH = "res/WHOOSH.WAV";
static String SULTANS = "res/DireStraits_SultansOfSwing.wav";
music(SULTANS, true);
当球击中球拍时会发出嗖嗖声
music(WHOOSH, false);
public void music(String path, Boolean loop)
try
//will go into file folder and get music file (getResource)
AudioInputStream audio = Audiosystem.getAudioInputStream(GamePanel.class.getResource(path));
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
if (loop)
clip.loop(1000);
catch (Exception e)
System.out.println("Check: " + path + "\n");
e.printStackTrace();
问题:
“嗖嗖”总是有效,但摇摆苏丹却没有。 Sultans 给了我这个“不支持的音频文件异常”错误,oracle 文档告诉我
An UnsupportedAudioFileException is an exception indicating that an operation failed because a file did not contain valid data of a recognized file type and format.
错误:
Check: res/DireStraits_SultansOfSwing.wav
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input URL at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
但你可以从这些照片中看到它们都是.wav文件...
为什么会抛出这个错误?是尺寸问题吗?
谢谢!
【问题讨论】:
我怀疑文件的内部编码不受支持或文件已损坏。 +1 苏丹 ;) 检查这个:***.com/questions/11104118/… 【参考方案1】:当我在游戏中使用 wav 文件时,我做过这样的事情(我已经用你的路径更新了它):
public void endingSound() throws IOException
ClassLoader cl = this.getClass().getClassLoader();
InputStream failSound = cl.getResourceAsStream("res/DireStraits_SultansOfSwing.wav");
if (failSound != null)
AudioStream as = new AudioStream(failSound);
AudioPlayer.player.start(as);
else
System.err.println("cannot load ending sound");
通过这种方式,我保证您在导出为 jar 时不会遇到任何问题。如果仍然不起作用,请尝试重命名或替换该文件;正如@MadProgrammer 所说,它可能已损坏。
【讨论】:
AudioStream
来自 sun.audio
非标准包。以上是关于Java - 不支持的音频文件异常 [重复]的主要内容,如果未能解决你的问题,请参考以下文章