package com.lemontree.framework.msgUtil.mqtt; import javax.sound.sampled.*; import java.io.File; import java.io.IOException; public class musicStuff {
public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
//1 获取你想播放的音乐文件 File file = new File("D:\\迅雷下载\\ezuf6-ylbgp\\p3r68-cdx67\\ezuf6-ylbgp.wav"); 定义一个AudioInputStream用于接收输入的音频数据 AudioInputStream am; //3、使用AudioSystem获取音频输入流(处理(抛出)异常) am = AudioSystem.getAudioInputStream(file); //4、使用AudioFormat来获取AudioInputStream的格式 AudioFormat af = am.getFormat(); //5,一个源数据行 SourceDataLine sd ; //6获得数据行支持的音频格式DataLine.info //DataLine.Info dl = new DataLine.Info(SourceDataLine.class, af); //7获得与上述类型相匹配的行 写入源数据行 二选一 sd = AudioSystem.getSourceDataLine(af);//方便写作 //sd = (SourceDataLine) AudioSystem.getLine(dl); //8打开具有指定格式的行,使行获得资源并进行操作 sd.open(); //9允许数据执行i/o sd.start(); //10,写数据 int sumByteRead = 0; ///阅读总字节数 byte [] b = new byte[320];//设置字节数组大小
//11、从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。
while (sumByteRead != -1) {
//-1代表没有 不等于-1时就无限读取
sumByteRead = am.read(b, 0, b.length);//12、读取哪个数组
if(sumByteRead >= 0 ) {
//13、读取了之后将数据写入混频器,开始播放
sd.write(b, 0, b.length);
}
}
//关闭
sd.drain();
sd.close();
}
}