我目前正在用 Java 制作一个游戏,需要在玩家受到伤害时播放声音,每次运行测试代码时都会出现错误“音频线路不可用”。我很确定 .wav 文件的路径是正确的。
这是我的代码(这个类只是为了运行一些带有声音的测试,这样我就不会破坏我的主程序)
package interfaces;
import java.io.IOException;
import javax.sound.sampled.*;
public class TestSound {
public static void main(String[] args) {
Clip clip = null;
try {
// Loads the sound file from the assets folder
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(
TestSound.class.getResourceAsStream("/assets/damageSound.wav"));
// Get a sound clip resource
clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
Thread.sleep(2000);
} catch (UnsupportedAudioFileException e) {
System.out.println("Unsupported audio file format.");
} catch (IOException e) {
System.out.println("IO error occurred while loading audio.");
} catch (LineUnavailableException e) {
System.out.println("Audio line unavailable");
} catch (InterruptedException e) {
System.out.println("Thread interrupted");
} finally {
if (clip != null) {
clip.drain();
clip.close();
}
}
}
}
不要使用
javax.sound
包。还有其他库,例如 JLayer。
你可以用 Jlayer 来做到这一点:
import javazoom.jl.player.Player;
import java.io.FileInputStream;
public class Sounds {
public static void do1() {
try {
FileInputStream inputs = new FileInputStream("E:/sound.mp3");
Player mp3 = new Player(inputs);
mp3.play();
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行方法
do1()
来播放声音。