用java播放一首歌

时间:2014-12-01 14:36:40

标签: java eclipse audio javasound

我想在玩游戏时从我的电脑播放音频片段。但我只能使用非常短的声音。有没有类似的方式播放像我播放音效的歌曲?

如果重要的话,我会在游戏中使用摇摆图形。

我尝试使用歌曲时收到的错误 " 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);
    }
}

}

1 个答案:

答案 0 :(得分:3)

您收到的错误消息表明问题可能与文件的格式有关,而不是文件的长度。

您可以通过查看音频文件的属性来检查音频文件的格式 - 通常需要右键单击Windows。重要的属性可能位于“高级”选项卡上。 Java可以读取多种格式,但我最常见的是它挂起的内容如下:

  1. 一个人试图加载.mp3或.ogg或其他形式的压缩,但没有实现任何可以解压缩这些文件的库(不是你的情况,因为你的banjo.wav是一个wav)。 / p>

  2. .wav不是标准的“CD质量”格式(44100 fps,16位编码,立体声),而是类似24位或32位编码或48000或96000 fps。

  3. 目前的DAW通常可以很容易地以优于“CD质量”的格式进行录制,但Java还不支持它们。

    在大多数情况下,如果您不使用其他家庭工作室程序,则可以将使用Java无法读取的音频文件转换为Audacity(免费)的音频文件。在获得Audacity的地方要小心,因为提供它的一些网站(官方网站除外)将包括广告软件或恶意软件或病毒。

    作为旁注,对于较长的文件,最好加载到SourceDataLine中进行播放而不是Clip。使用SourceDataLine,您不必在开始播放之前等待整个文件加载,并且它不会占用任何接近RAM的位置。 Java Tutorials有一个Java Sound部分和一个专门播放的页面。