㈠ java 播放 声音
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.File;
class AudioPlayDemo extends JFrame implements ActionListener {
boolean looping = false;
File file1 = new File("music\\明天会更好.wav");
AudioClip sound1;
AudioClip chosenClip;
JButton playButton = new JButton("播放");
JButton loopButton = new JButton("循环播放");
JButton stopButton = new JButton("停止");
JLabel status = new JLabel("选择播放文件");
JPanel controlPanel = new JPanel();
Container container = getContentPane();
public AudioPlayDemo() {
try {
sound1 = Applet.newAudioClip(file1.toURL());
chosenClip = sound1;
} catch(OutOfMemoryError e){
System.out.println("内存溢出");
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
playButton.addActionListener(this);
loopButton.addActionListener(this);
stopButton.addActionListener(this);
stopButton.setEnabled(false);
controlPanel.add(playButton);
controlPanel.add(loopButton);
controlPanel.add(stopButton);
container.add(controlPanel, BorderLayout.CENTER);
container.add(status, BorderLayout.SOUTH);
setSize(300, 130);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
}
public void actionPerformed(ActionEvent event) {
if (chosenClip == null) {
status.setText("声音未载入");
return;
}
Object source = event.getSource(); //获取用户洗涤激活的按钮
if (source == playButton) {
stopButton.setEnabled(true);
loopButton.setEnabled(true);
chosenClip.play();
status.setText("正在播放");
}
if (source == loopButton) {
looping = true;
chosenClip.loop();
loopButton.setEnabled(false);
stopButton.setEnabled(true);
status.setText("正在循环播放");
}
if (source == stopButton) {
if (looping) {
looping = false;
chosenClip.stop();
loopButton.setEnabled(true);
} else {
chosenClip.stop();
}
stopButton.setEnabled(false);
status.setText("停止播放");
}
}
public static void main(String s[]) {
new AudioPlayDemo();
}
}
兄弟给分吧```
㈡ Java怎么实现音乐播放
java swt实现播放音乐代码如下:
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("有错误!");
}
}
㈢ java中哪个类用来播放声音文件
使用Applet播放声音时需首先定义AudioClip对象,GetAudioClip方法能把声音赋予AudioClip对象,如果仅想把声音播放一遍,应调用AudioClip类的play方法,如果想循环把声音剪辑,应选用AudioClip类的loop方法。
(1) 播放声音文件
图像格式各种各样,如BMP、GIF和JPEG等。声音文件也一样,WAV和AU是最常用的两种声音文件。目前Java仅支持AU文件,但Windows环境下常用的却是WAV文件,所以最好能有一个可把WAV文件转换为AU文件的工具。
* 播放声音的AudioClip类
AudioClip类用来在Java Applet内播放声音,该类在java.Applet包中有定义。
下面演示了如何利用AudioClip类播放声音。
装入一个名为Sample.Au的声音文件并播放(SoundDemo.java)
//源程序清单
import java.awt.*;
import java.applet.*
public class SoundDemo extends Applet
{
public void paint(Graphics g)
{
AudioClip audioClip=getAudioClip(getCodeBase(),”Sample.AU”);
//创建AudioClip对象并用//getAudioClip方法将其初始化。
g.drawstring("Sound Demo! ",5,15);
audioClip.loop();//使用AudioClip类的loop方法循环播放
}
}
需把如下的HTML语句放入SoundDemo.HTML文件,为运行该Applet做准备。
<HTML>
<TITLE>SoundDemo Applet</TITLE>
<APPLET CODE="SoundDemo.class" WIDTH=300 HEIGHT=200>
</APPLET>
</HTML>
编译并运行该Applet,屏幕上将显示出一个Applet窗口并伴以音乐。关闭Applet时音乐终止。
㈣ java播放声音
用java可以编写播放.au、.aiff、.Wav、.Midi、.rfm格式的音频;
例子:
import java.applet.*;
import java.awt.event.*;
import java.awt.*;
/**
* <p>Title: Applet播放声音文件</p>
* <p>Description: 使用AudioClip类加载声音文件,并当鼠标点击后开始播放</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: PlayAudio.java</p>
* @version 1.0
*/
public class PlayAudio extends Applet
implements ActionListener{
AudioClip audio;
Button btExit,btOpen,btPlay,btLoop,btStop;
/**
*<br>方法说明:初始化Applet
*<br>输入参数:
*<br>返回类型:
*/
public void init() {
//加载声音文件
audio = getAudioClip(getDocumentBase(),"img/1.mid");
//构造按钮
setLayout(new FlowLayout()); //使用布局管理器
btPlay=new Button("Play"); //定义Play按钮
btPlay.addActionListener(this); //给Play按钮添加一个监听事件
btLoop=new Button("Loop"); //定义Play按钮
btLoop.addActionListener(this); //给Play按钮添加一个监听事件
btStop=new Button("Stop"); //定义Play按钮
btStop.addActionListener(this); //给Play按钮添加一个监听事件
//将按钮添加到Applet中
add(btPlay);
add(btLoop);
add(btStop);
}
public void actionPerformed(ActionEvent e) {
//如果点击的是Play按钮
if (e.getSource()==btPlay) {
play();
}
//如果点击的是loop按钮
if (e.getSource()==btLoop) {
loop();
}
//如果点击的是stop按钮
if (e.getSource()==btStop) {
stop();
}
}
/**
*<br>方法说明:播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void play(){
if (audio!=null) stop();
audio.play();
}
/**
*<br>方法说明:循环播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void loop(){
if (audio!=null)
audio.loop();
}
/**
*<br>方法说明:停止播放声音
*<br>输入参数:
*<br>返回类型:
*/
public void stop(){
if (audio!=null)
audio.stop();
}
}
㈤ java如何播放声音
对声音媒体的直接支持可以说是Java的一大特色,尤其是在动画中配上声音效果,就可以使人在视觉上和听觉上均得到美的享受,那才叫过瘾。Java中播放声音文件与显示图像文件一样方便,同样只需要先将声音文件装载进来,然后播放就行了。
Java目前支持的声音文件只有一种格式,那就是SUN公司的AU格式(.AU文件),也称为u-law格式。由于AU格式的声音仅有8KHz的采样频率且不支持立体声效果,所以音质不算太好。唯一的好处就是AU声音文件的尺寸比其它格式小,有利于网上传输。一般,我们较熟悉的大都是WAV格式的声音文件,因此必须先将它们转换为AU格式(可以选用Goldwave软件来进行这种格式转换)。
声音文件准备好以后,就可以考虑将它装载进来并播放。在Applet类中提供的play( )方法可以将声音文件的装载与播放一并完成,其调用格式如下:
void play(URL url)
void play(URL url, String name)
可见,play( )方法的调用格式与getImage( )方法是完全一样的,也采用URL来定位声音文件。例如,某声音文件audio.au与applet文件存放在同一目录下,可以这样写:
play(getCodeBase( ),"audio.au");
一旦play( )方法装载了该声音文件,就立即播放。如果找不到指定URL下的声音文件,play( )方法不返回出错信息,只是听不到想听的声音而已。
由于play( )方法只能将声音播放一遍,若想循环播放某声音作为背景音乐,就需要用到功能更强大的AudioClip类,它能更有效地管理声音的播放操作。因为它被定义在java.applet程序包中,所以使用该类的话,不要忘了在程序头部加上:
import java.applet.AudioClip;
为了得到AudioClip对象,我们可以调用Applet类中的getAudioClip( )方法。它能装载指定URL的声音文件,并返回一个AudioClip对象,其调用格式如下:
AudioClip getAudioClip(URL url)
AudioClip getAudioClip(URL url, String name)
得到AudioClip对象以后,就可以调用AudioClip类中所提供的各种方法来操作其中的声音数据,这些方法如表4-4所示。
如果getAudioClip( )方法没有找到所指定的声音文件,就会返回null值。所以,在调用表4-4中所列的方法前,应该先检查一下得到的AudioClip对象不是null,因为在null对象上调用上述方法将导致出错。
如果需要的话,我们还可以在applet中同时装载几个声音文件来一起播放,到时候,这些声音将混合在一起,就象二重奏一样。另外还有一点要说明的是,如果我们使用AudioClip对象的loop( )方法来重复播放背景音乐时,千万不要忘记在适当的时候调用AudioClip对象的stop( )方法来结束放音,否则的话,即使用户离开这一Web页面,该声音也不会停止,这无疑将会惹恼用户。因此,一般我们都在applet的stop( )方法中添上停止播放的代码。
例如,下面这段程序将播放两段声音,一段是连续播放的背景音乐,另一段是讲话录音。
import java.applet.AudioClip;
public class Audios extends java.applet.Applet{
AudioClip bgmusic,speak;
public void init(){
bgmusic=getAudioClip(getDocumentBase(),"space.au");
speak=getAudioClip(getDocumentBase(),"intro.au");
}
public void start(){
if(bgmusic!=null)
bgmusic.loop();
if(speak!=null)
speak.play();
}
public void stop(){
if(bgmusic!=null)
bgmusic.stop(); //关闭背景音乐,切记。
}
}
package com.hongyuan.test;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import
javax.sound.sampled.AudioInputStream;
import
javax.sound.sampled.AudioSystem;
import
javax.sound.sampled.DataLine;
import
javax.sound.sampled.LineUnavailableException;
import
javax.sound.sampled.SourceDataLine;
import
javax.sound.sampled.UnsupportedAudioFileException;
public class MusicTest {
public static final String MUSIC_FILE = "相逢一笑.wav";
public static void main(String[] args) throws
LineUnavailableException,
UnsupportedAudioFileException, IOException {
// 获取音频输入流
AudioInputStream audioInputStream =
AudioSystem
.getAudioInputStream(new File(MUSIC_FILE));
//
获取音频编码对象
AudioFormat audioFormat = audioInputStream.getFormat();
// 设置数据输入
DataLine.Info dataLineInfo = new
DataLine.Info(SourceDataLine.class,
audioFormat,
AudioSystem.NOT_SPECIFIED);
SourceDataLine sourceDataLine =
(SourceDataLine)
AudioSystem
.getLine(dataLineInfo);
sourceDataLine.open(audioFormat);
sourceDataLine.start();
/*
* 从输入流中读取数据发送到混音器
*/
int count;
byte tempBuffer[]
= new byte[1024];
while ((count = audioInputStream.read(tempBuffer, 0,
tempBuffer.length)) != -1) {
if (count > 0)
{
sourceDataLine.write(tempBuffer, 0, count);
}
}
//
清空数据缓冲,并关闭输入
sourceDataLine.drain();
sourceDataLine.close();
}
}
㈥ java 循环播放音乐
在调用play()的后面,再次打开声音、再调用play()