字号:大 中 小
import java.awt.Graphics;
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
public class Musicline extends javax.swing.JFrame implements Runnable{
private byte[] audioData=null;
private int intBytes = 0;
private byte[] ml=new byte[1];
private int[] drawl=null;
/** Creates new form Musicline */
public Musicline() {
initComponents();
Graphics g;
g=this.getGraphics();
}
public void paint(Graphics g)
{
g.clearRect(0,0,900,900);
//System.out.print(drawl.length);
if(audioData!=null)
{
drawl=new int[audioData.length];
for(int i=0;i
{
ml[0]=audioData;
//String s=new String(ml);
drawl=Math.abs((int)ml[0]);
}
System.out.println(drawl[0]);
for(int i=0;i
{
g.drawLine(i*this.getWidth()/256,drawl+100,(i+1)*this.getWidth()/256,drawl[i+1]+100);
}
}
}
public void run()
{
while(intBytes!=-1)
{
try {
synchronized(this){
this.wait(10);
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
repaint();
}
}
public void play()
{
try {
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(
"E:/a.wav"));// 获得音频输入流
ais=AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED,ais);
AudioFormat baseFormat = ais.getFormat();// 指定声音流中特定数据安排
System.out.println("baseFormat="+baseFormat);
DataLine.Info info = new DataLine.Info(SourceDataLine.class,
baseFormat);
System.out.println("info="+info);
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
// 从混频器获得源数据行
System.out.println("line="+line);
line.open(baseFormat);// 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。
line.start();// 允许数据行执行数据 I/O
int BUFFER_SIZE = 256;
audioData = n