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 - 不支持的音频文件异常 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Videogular 不支持 flac 音频文件

火狐和IE都支持音频格式有啥啊?

Java:不支持主增益异常

合并背景音频文件

pyaudio支持播放哪些文件?

qq音乐网络异常获取音频失败怎么办