使用Java原生javax.sound.sampled包可实现简易音乐播放器,主要支持WAV等未压缩格式;2. 通过AudioInputStream加载音频,Clip类控制播放、循环与暂停;3. 可结合Swing创建图形界面,添加播放、停止等功能按钮,适合初学者快速上手基础音频操作。
开发一个简易
音乐
播放器在Java中是完全可行的,主要依赖于
包来处理音频文件(如WAV格式),也可以借助第三方库支持MP3等格式。下面介绍如何用原生Java实现一个基础的
音乐播放器
。
1. 支持的音频格式
Java原生的
主要支持WAV、AIFF、AU等未压缩格式。MP3、FLAC等需要额外解码库,比如使用
JLayer
(用于MP3)或
Tritonus
结合
扩展。
对于初学者,建议先从WAV文件开始,避免复杂的依赖配置。
2. 播放WAV音频的基本代码
以下是使用
类播放WAV文件的核心代码:
立即学习
“
Java免费学习笔记(深入)
”;
Trae win
Trae Windows 官方版本现已全面支持 Win10 和 Win11 系统(64位)。国内开发者可直接访问 Trae 中文官网(trae.cn 或 trae.com.cn),一键下载官方正版 .exe 安装包,享受国内直连的高速稳定体验。安装过程极其简便,双击即可运行,并支持一键无缝导入 VS Code 或 Cursor 的原有主题、快捷键及插件配置。登录支持手机号、微信或稀土掘金账号。内置免费的豆包与 DeepSeek 等顶级大模型,让你开箱即用,轻松开启高效的 AI 智能编程之旅。
下载
3. 添加基本控制功能
可以封装播放、暂停、停止、循环等功能。虽然
不直接支持暂停,但可以通过记录位置实现模拟暂停:
暂停
:调用
并记录当前微秒位置
继续
:使用
跳转后调用
4. 简易图形界面(可选)
使用S
win
g添加按钮控制播放:
基本上就这些。核心是理解
和
的协作方式。对于更复杂需求(如MP3、音量控制、进度条),可引入JLayer或JavaFX的
类。但纯Java SE环境下,上述方法足够实现一个简易播放器。
javax.sound.sampledAudioSystemmp3spiClip
import javax.sound.sampled.*;
import java.io.File;
public class SimpleMusicPlayer {
private Clip clip;
public void play(String filePath) {
try {
File audioFile = new File(filePath);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
AudioFormat format = audioStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
clip = (Clip) AudioSystem.getLine(info);
clip.open(audioStream);
clip.start(); // 开始播放
} catch (Exception e) {
System.out.println("播放失败:" + e.getMessage());
}
}
public void stop() {
if (clip != null && clip.isRunning()) {
clip.stop();
}
}
public void loop() {
if (clip != null) {
clip.loop(Clip.LOOP_CONTINUOUSLY); // 循环播放
}
}
public static void main(String[] args) {
SimpleMusicPlayer player = new SimpleMusicPlayer();
player.play("music.wav"); // 替换为你的WAV文件路径
}
}
Clipclip.stop()clip.setMicrosecondPosition(pos)start()
import javax.swing.*;
import java.awt.event.*;
JFrame frame = new JFrame("音乐播放器");
JButton playBtn = new JButton("播放");
playBtn.addActionListener(e -> player.play("music.wav"));
frame.add(playBtn);
frame.setSize(300, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
AudioInputStreamClipMediaPlayer