[返回]
中国计算机报1999年第9期
傅 胜
VJ++的AudioClip接口提供了播放声音文件的方法,利用它编写小应用程序applet,可在Web上控制声音文件的播放。
AudioClip接口的内容是:
public interface java.applet.AudioClip
{
public abstract void play();
public abstract void loop();
public abstract void stop();
}
其中,play()方法播放完一次声音文件后自动停止播放,loop()方法则是循环播放音乐,stop()方法用来停止声音文件的播放。
此外,还要用到两个方法:getCodeBase()和getAudioClip()来取得要播放的声音文件。getCodeBase()方法返回当前执行的applet的代码所在的URL,getAudioClip()方法则将网络中的声音文件下载到本机内,
getAudioClip()的参数形式为:
public AudioClip getAudioClip(URL url,string name)。
其中,url就是方法getCodeBase()返回的声音文件的基准位置,name就是声音文件的路径和文件名。
应当注意的是,到目前为止,Java只支持一种声音格式的文件——8位单声道的.au声音格式,而在Windows上流行的
.wav文件并不在Java支持格式范围内,所以需要一种声音格式转换程序将.wav文件转换为.au格式文件,这里推荐其中一种软件:Awave,它收录在中国计算机报1998年光盘InfoCD
NO.8中,Awave能识别不同平台上100多种格式的声音文件,并能互相转换。下面就介绍一下制作.au文件的具体步骤:
①在Win95/98中的录音机程序中打开.wav文件,将它另存为一个.wav文件,但要更改它的格式为:
采样频率为8000Hz的8位单声道的.wav文件;
②在Awave中打开新创建的.wav文件,将它另存为.au文件,注意格式:存盘类型为Au
- Sun/NeXT/DEC audio, Subformat为Mu-law 8bit,选择单声道Mono,去掉立体声Stereo。建议将声音文件保存到applet所在的目录中。
播放音乐的music01.java源程序如下所示:
import java.applet.;
import java.awt.;
import java.net.;
public class music01 extends Applet
{ Button b—play,b—stop,b—loop;
AudioClip Au—music;
public void init()
{ resize(620, 240);
setBackground(new Color(192,220,192));
b—play = new Button(″播放″);
b—stop = new Button(″停止″);
b—loop = new Button(″循环″);
add(b—play);
add(b—stop);
add(b—loop);
URL codeBase=getCodeBase();
Au—music=getAudioClip(codeBase,″mu08.au″);
}
public boolean action(Event evt,Object arg)
{ String tt1;
int i;
if (evt.target==b—play)
{ Au—music.play();
return true;
}
if (evt.target==b—stop)
{ Au—music.stop();
return true;
}
if (evt.target==b—loop)
{ Au—music.loop();
return true;
}
return false;
}
}
将源程序编译后得到music01.class文件,利用Java AppletWizard自动生成的HTML文件(music01.html)
,就可在浏览器中欣赏它的效果了。
包含applet的HTML文件如下所示:
〈html〉
〈head〉
〈title〉music01〈/title〉
〈/head〉
〈body bgcolor=C0DCC0〉
〈hr〉
〈H2〉〈font color=red〉在Java中播放声音文件〈/font〉〈/h2〉
〈applet
code=music01.class
name=music01
width=320
height=240 〉
〈/applet〉
〈hr〉
〈/body〉
〈/html〉
运行时,用鼠标点击“播放”按钮,就可听到一首歌曲,点击“停止”按钮就终止播放,点击“循环”按钮则可循环播放歌曲。