java画波形图代码_JAVA画出wav音频波形图

字号:大 中 小

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部