package com.what21.audio;
import java.io.File;
import javax.media.CachingControl;
import javax.media.Control;
import javax.media.Controller;
import javax.media.ControllerAdapter;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.PlugInManager;
import javax.media.Time;
import javax.media.format.AudioFormat;
public class SimplePlayer {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
Format input2 = new AudioFormat(AudioFormat.MPEG);
Format output = new AudioFormat(AudioFormat.LINEAR);
PlugInManager.addPlugIn(
"com.sun.media.codec.audio.mp3.JavaDecoder",
new Format[]{input1, input2},
new Format[]{output},
PlugInManager.CODEC
);
String name = "F:\\Music\\MP3\\一生无悔.mp3";
File file = new File(name);
echo("媒体文件:" + file.getAbsolutePath());
MediaLocator locator=new MediaLocator(file.toURI().toURL());
// 创建一个播放器对象
Player audioPlayer = Manager.createRealizedPlayer(locator);
echo("开始播放..");
audioPlayer.start();
// 播放控制
Control[] controls = audioPlayer.getControls();
for (int i = 0; i < controls.length; i++) {
CachingControl cachingControl = null;
if (controls[i] instanceof CachingControl) {
cachingControl = (CachingControl) controls[i];
}
System.out.println(cachingControl);
}
// 控制监听
audioPlayer.addControllerListener(new ControllerAdapter() {
public void endOfMedia(EndOfMediaEvent e) {
Controller controller = (Controller) e.getSource();
controller.stop();
controller.setMediaTime(new Time(0));
controller.deallocate();
}
});
// 控制监听
audioPlayer.addControllerListener(new ControllerListener(){
public void controllerUpdate(ControllerEvent event) {
if (event instanceof javax.media.RealizeCompleteEvent) {
System.out.println(event);
}
}
});
Thread.sleep(1000 * 20);
// 结束播放
audioPlayer.stop();
echo("done");
}
/**
* @param msg
*/
public static void echo(String msg){
System.out.println(msg);
}
}