Java Sound API支持常见的格式:
-
WAV(Waveform Audio File Format)
- 常见的无损音频格式,支持 PCM(脉冲编码调制)编码。
-
AIFF(Audio Interchange File Format)
- 主要用于 Macintosh 系统的无损音频格式,类似于 WAV。
-
AU
- 主要用于 Unix 系统的音频文件格式,通常包含 PCM 编码。
-
MP3(MPEG Audio Layer III)
- 常见的有损压缩音频格式,Java Sound API 直接支持 MP3 格式需要额外的库(如 JLayer 或其他音频库)。
-
OGG(Ogg Vorbis)
- 开源的有损音频压缩格式,Java Sound API 原生不支持,需要使用外部库。
-
MIDI(Musical Instrument Digital Interface)
- 不是音频文件,而是一种控制信号,用于控制乐器的演奏。
MP3 格式可能需要第三方库来支持。
public static void main(String[] args) throws LineUnavailableException, IOException, UnsupportedAudioFileException {playAudio("C:\\Users\\Lara\\Downloads\\Music\\Love Story.wav");}public static void playAudio(String filePath) throws LineUnavailableException, IOException{File audioFile = new File(filePath);try (AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(audioFile)) {AudioFormat format = audioInputStream.getFormat();System.out.println(format.toString());DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);try (SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info)) {line.open(format);line.start();byte[] buffer = new byte[4096]; // 使用缓冲区逐块读取int bytesRead;while ((bytesRead = audioInputStream.read(buffer, 0, buffer.length)) != -1) {line.write(buffer, 0, bytesRead);}line.drain(); // 确保所有数据都被播放}} catch (UnsupportedAudioFileException e) {System.err.println("不支持的音频文件格式: " + e.getMessage());}}
启动后会一直播放音频,直到音频结束。