使用Java播放声音文件

因为java强大的类库,解决这个问题并不困难,只是API的调用问题而已。不过,不同的调用也有区别。

很多人讲要使用JFM,不过我懒得去安装,所以另寻他法。网上提供最多的方法就是利用Applet中的AudioClip来解决,代码很简单,如下:

public void play(String Filename)//Filename是乐曲名称或说路径(不过“路径”我没尝试)

{

try {

URL url = new URL("file:" + Filename);

AudioClip ac = Applet.newAudioClip(url);

ac.play();

//ac.stop();//用此函数可以停止乐曲播放

} catch (Exception e) {

System.out.println(e);

}

}

当然,前提是导入3个包:

import java.applet.Applet;

import java.applet.AudioClip;

import java.net.URL;

然而实践证明这个方法并不好用,播放的声音断断续续,听起来简直是一种折磨~(不晓得这是类库本身的原因还是我电脑的故障~)后来发现了一个好方法。

public void play(String Filename)

{

try{

// 用输入流打开一音频文件

InputStream in = new FileInputStream(Filename);//FIlename 是你加载的声音文件如(“game.wav”)

// 从输入流中创建一个AudioStream对象

AudioStream as = new AudioStream(in);

AudioPlayer.player.start(as);//用静态成员player.start播放音乐

//AudioPlayer.player.stop(as);//关闭音乐播放

//如果要实现循环播放,则用下面的三句取代上面的“AudioPlayer.player.start(as);”这句

/*AudioData data = as.getData();

ContinuousAudioDataStream gg= new ContinuousAudioDataStream (data);

AudioPlayer.player.start(gg);// Play audio.

*/

//如果要用一个 URL 做为声音流的源(source),则用下面的代码所示替换输入流来创建声音流:

/*AudioStream as = new AudioStream (url.openStream());

*/

} catch(FileNotFoundException e){

System.out.print("FileNotFoundException ");

} catch(IOException e){

System.out.print("有错误!");

}

}

而要使用这个方法,导入的包与上一方法不同:

import sun.audio.*; //java提供的,经常被忽略吧~

import java.io.*;

使用这个方法在我电脑上播放,很流畅。

相关推荐