Java - 为什么我不能播放任何声音?

时间:2015-12-15 22:03:35

标签: java audio

我试图将声音加载到游戏中,并且在观看了六个不同的YouTube教程之后它才开始工作。

这是我尝试的最后一件事:

    public static Mixer mixer;
public static Mixer.Info[] info;
public static DataLine.Info dataline;
public static AudioInputStream stream;

public static Clip title;
public static Clip click;

public static void init()
{
    info = AudioSystem.getMixerInfo();
    mixer = AudioSystem.getMixer(info[0]);
    dataline = new DataLine.Info(Clip.class, null);

    title = load("/music/title");

    click = load("/effects/click");
}

public static void play(Clip clip)
{
    clip.start();
}

public static void stop(Clip clip)
{
    clip.stop();
}

public static Clip load(String path)
{
    Clip clip = null;

    try
    {
        clip = (Clip) mixer.getLine(dataline);
        URL file = Sounds.class.getResource("/assets/sounds/effects/" + path + ".wav");
        stream = AudioSystem.getAudioInputStream(file);
        clip.open(stream);
    }
    catch (LineUnavailableException | UnsupportedAudioFileException | IOException e)
    {
        e.printStackTrace();
    }

    return clip;
}

加载声音时出现此错误:

Exception in thread "Thread-2" java.lang.NullPointerException
at com.sun.media.sound.StandardMidiFileReader.getSequence(StandardMidiFileReader.java:207)
at javax.sound.midi.MidiSystem.getSequence(MidiSystem.java:841)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:178)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1147)
at data.resources.Sounds.load(Sounds.java:54)
at data.resources.Sounds.init(Sounds.java:31)
at data.Game.init(Game.java:60)
at data.Game.run(Game.java:69)
at java.lang.Thread.run(Thread.java:745)

文件位于:     RES /资产/声音/效果/ clip.wav     RES /资产/声音/音乐/ title.wav

我试过了:     / RES /资产/ ...     RES /资产/ ...     /资产/...     资产/...

我试过了:     .WAV     .MP3     .OGG     .WMA     .M4A

并没有它们的组合起作用。文件没有损坏。它们在VLC,Windows Media Player以及用它们取代Minecraft的音乐文件(如.ogg' s)时完美无缺。所以他们在Java和普通玩家中都被认可和可玩。

我无法理解我做错了什么。

0 个答案:

没有答案