基本方法是这样的:
>收集要显示的音频数据.这可以是原始音频样本,也可以是处理结果(例如,对N个样本求平均值,或每N个样本取一个)以在x轴上提供缩放比例. (不进行缩放,您将需要48000像素才能显示1秒钟的音频.)
>给定这个样本数组,您必须将其转换为一个时差图.首先,您可以创建一个新的JPanel并覆盖paint方法以绘制图.
例如.
public void paint(Graphics g)
{
short[] samples; // the samples to render - get this from step 1.
int height = getHeight();
int middle = height/2;
for (int i=0; i
{
int sample = samples[i];
int amplitude = sample*middle;
g.drawLine(i, middle+amplitide, i, middle-amplitude);
}
}
这将在您的组件中绘制一个幅度-时间图.它与分量一样高,并且与样本数一样多.
要获得动画,您需要定期将新的short []数组放入组件中并调用repaint()(当然,所有这些都在Swing Event线程上!).
祝好运!