如何在java的界面中添加背景音乐

如何在java的界面中添加背景音乐,第1张

Java中可以通过AudioClip类来实现音乐播放,循环等 *** 作。AudioClip支持的音乐格式有.wav、.mid、AIFF、AU、RMF,但是格式要求相当严格。我用AudioClip播放我自己录的一段wav文件就没有声音,让我纠结了很久,最后才发现我的wav文件内容没有写文件尾,对于格式要求严格的AudioClip而言是无法识别的(这个问题困扰了我整晚)。

AudioCLip主要的方法有:play()播放依次声音;loop()循环播放音乐;stop()停止播放。

做法一:

InputStream is =null

AudioStream as = null

is = getClass().getResourceAsStream("a.wav")

try {

as = new AudioStream(is)

} catch (IOException e) {}

AudioPlayer.player.start(as)

此方法将音乐文件放入流中在播放,仅限于Java Application,容易报错,空指针异常,或者是流异常,不推荐。

做法二:

String music = "a.wav"

AudioClip clip = Applet.newAudioClip(getClass().getResource(music))

次方法在Applet中运行没有问题,但是Application中getclass()会返回空指针,导致失败。

推荐做法:

private URL url

private AudioClip ac

File f1 = new File("C:/3.wav")

try {

url= f1.toURL()

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

ac= Applet.newAudioClip(cb1)

ac.play()

public class Sing {

public void sing(String fileName) {// fileName为加载声音文件的相对路径

URL url = test.class.getResource(fileName)//

// 此句不要的话,fileName就只能是声音文件的绝对路径,为可移

// 植起见,建议不要省略

try {

InputStream is = url.openStream()// 获得音乐文件的输入流

//InputStream is = new FileInputStream(new File(fileName))

AudioStream as = new AudioStream(is)

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

} catch (FileNotFoundException e) {

JOptionPane.showMessageDialog(null, "音乐文件未找到!", "错误提 示",

JOptionPane.WARNING_MESSAGE)

} catch (IOException e) {

JOptionPane.showMessageDialog(null, "出现未知错误!", "错 误",

JOptionPane.ERROR_MESSAGE)

}

}

public void loopSing(final String fileName) {// fileName为加载声音文件的相对路径

final URL url = test.class.getResource(fileName)//

// 此句不要的话,fileName就只能是声音文件的绝对路径,为可移

// 植起见,建议不要省略

new Thread() {

public void run() {

while (true) {

try {

InputStream is = url.openStream()

AudioStream as = new AudioStream(is)

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

Thread.sleep(57500)

} catch (FileNotFoundException e) {

JOptionPane.showMessageDialog(null, "音乐文件未找到!",

"错误提 示", JOptionPane.WARNING_MESSAGE)

} catch (IOException e) {

JOptionPane.showMessageDialog(null, "出现未知错误!", "错 误",

JOptionPane.ERROR_MESSAGE)

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

}.start()

}

}

以前写的一段代码。你看看吧。好像只能播放wav格式的

URL url = test.class.getResource(fileName)

test是和wav放在同一个文件夹下的Java类,用来做标识的,里面没东西。

public class Sound {

public static void main(String args[]) {

try {

FileInputStream fileau = new FileInputStream(new File("c:/a.wav"))

AudioStream as = new AudioStream(fileau)

AudioPlayer.player.start(as)

} catch (Exception e) {

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11365960.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存