
import java.io.*
import java.applet.Applet
import java.awt.Frame
import java.net.MalformedURLException
import java.net.URL
public class JavaClip extends Frame{
public JavaClip(){
super()
}
public static void main(String args[]) {
try {
URL cb
File f = new File("d:\\可爱.wav")//引号里面的是音乐文件所在的绝对鹿筋
cb = f.toURL()
AudioClip aau
aau = Applet.newAudioClip(cb)
aau.play()//循环播放 aau.play() 单曲 aau.stop()停止播放
JavaClip frame=new JavaClip()
//frame.setBounds(0, 0, 300, 200)
//frame.setVisible(true)
} catch (MalformedURLException e) {
e.printStackTrace()
}
}
}
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()
JAVA应用程序添加背景音乐示例:
1.先定义一个 URL 对象,并赋NULL值;
URL musicURL = null
2.然后为定义的 URL 赋值,即得到要播放的URL地址,
musicURL = new URL( "音乐地址");//得到要播放音乐的url
3.创建一个播放音频的实例,并得到这个实例
AudioClip ac = Applet.newAudioClip(musicURL) //得到一个播放音频的实例
4.进行播放控制
ac.play() //播放一编
ac.loop() //循环播放
ac.stop();//停止
播放本地音乐示例:
private void playMusic(){
try {
javax.media.Player player
if(null==player){
File musicFile=new File("./music.mp3")//得到一个MP3文件
if(musicFile.exists()){
MediaLocator locator=new MediaLocator("file:"+musicFile.getAbsolutePath())
player = Manager.createRealizedPlayer(locator)
player.prefetch()//预读文件
}else{
System.err.println(pro.getMusicFile()+" 找不到")
}
}
//centerpanel.add(player.getControlPanelComponent()!=null?player.getControlPanelComponent():null)//显示播放工具
player.start()//播放
} catch (CannotRealizeException ex) {
ex.printStackTrace()
} catch (NoPlayerException ex) {
ex.printStackTrace()
} catch (IOException ex) {
ex.printStackTrace()
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)