在做打字游戏的过程中,因为要做背景音效和字符击中时候产生的音效,要实现mp3播放功能。
查看网上的材料,描写的大都不清楚,最后自己谷歌到了普林斯顿大学java课程中的一段代码解决了问题。
这里只讲解实现MP3播放功能的一种实现。
Java本身不支持直接播放MP3文件,若要播放MP3文件,需要引入外部库,这里引入的是 JLayer MP3 library.
使用的包为jl1.0.jar 下载地址(密码:43kf)
也可以直接到 http://www.javazoom.net/javalayer/sources.html 下载JLayer MP3 library.
参考链接在这里
自己改编的示例代码:
<pre name="code" class="java">import java.io.BufferedInputStream;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
public class MP3 {
private String filename;
private Player player;
// constructor that takes the name of an MP3 file
public MP3(String filename) {
this.filename = filename;
}
public void close() { if (player != null) player.close(); }
// play the MP3 file to the sound card
public void play() {
try {
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);
player = new Player(bis);
}
catch (Exception e) {
System.out.println("Problem playing file " + filename);
System.out.println(e);
}
// run in new thread to play in background
new Thread() {
public void run() {
try { player.play(); }
catch (Exception e) { System.out.println(e); }
}
}.start();
}
// test client
public static void main(String[] args) {
String filename = "D://信仰.mp3";
MP3 mp3 = new MP3(filename);
mp3.play();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mp3.close();
}
}
这里涉及到了线程的知识,每次音乐播放都是在一个从新开的线程中工作,而在主线程进行控制。