课程设计用的方法import java.applet.AudioClip;import java.io.*;import java.applet.Applet;import java.awt.Frame;import .MalformedURLException;import .URL;public class Music extends Frame{public static StringimagePath=System.getProperty("user.dir")+"/Music/";public Music(){t ry {URL cb;//File f = new File(imagePath+"mario.midi");//File f = new File(imagePath+"1000.ogg");File f = new File(imagePath+"失败音效.wav");//File f = new File("d:\\铃声.mp3");cb = f.toURL();AudioClip aau;aau = Applet.newAudioClip(cb);aau.play();//循环播放 aau.play() 单曲 aau.stop()停止播放//aau.loop();} catch (MalformedURLException e) {e.printStackTrace();}}public static void main(String args[]) {n ew Music();}}因为最近在研究java的语音聊天问题,所以刚刚好写了几个,给你三个播放的方法,分为三个类,建议采用第二或第三个:package org.bling.music;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import sun.audio.AudioPlayer;public class MusicTest2 {private InputStream inputStream = null;private String file = "./intel.wav";public MusicTest2(){}public void play() throws IOException{inputStream = new FileInputStream(new File(file)); AudioPlayer.player.start(inputStream);}public static void main(String[] args) {try {new MusicTest2().play();} catch (IOException e) {e.printStackTrace();}}}---------------------------------------------------------------- package org.bling.music;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 {private AudioFormat audioFormat = null;private SourceDataLine sourceDataLine = null;private dataLine_info = null;private String file = "./intel.wav";private AudioInputStream audioInputStream = null;public MusicTest() throws LineUnavailableException, UnsupportedAudioFileException, IOException{audioInputStream = AudioSystem.getAudioInputStream(new File(file)); audioFormat = audioInputStream.getFormat();dataLine_info = new (SourceDataLine.class,audioFormat); sourceDataLine = (SourceDataLine)AudioSystem.getLine(dataLine_info); }public void play() throws IOException, LineUnavailableException{byte[] b = new byte[1024];int len = 0;sourceDataLine.open(audioFormat, 1024);sourceDataLine.start();while ((len = audioInputStream.read(b)) > 0){sourceDataLine.write(b, 0, len);}audioInputStream.close();sourceDataLine.drain();sourceDataLine.close();}public static void main(String[] args) {try {new MusicTest().play();} catch (IOException e) {e.printStackTrace();} catch (LineUnavailableException e) {e.printStackTrace();} catch (UnsupportedAudioFileException e) {e.printStackTrace();}}}-----------------------------------------------------------------Java读取声音文件信息代码package org.bling.music;import java.io.File;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine;import javax.sound.sampled.SourceDataLine;public class PlayTest {/*** @param args*/public static void main(String[] args) {try {AudioInputStream ais = AudioSystem.getAudioInputStream(newFile("intel.wav"));// 获得音频输入流AudioFormat baseFormat = ais.getFormat();// 指定声音流中特定数据安排System.out.println("baseFormat="+baseFormat); info = new (SourceDataLine.class,baseFormat); System.out.println("info="+info);SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);// 从混频器获得源数据行System.out.println("line="+line);line.open(baseFormat);// 打开具有指定格式的行,这样可使行获得所有所需的系统资源并变得可操作。
line.start();// 允许数据行执行数据I/Oint BUFFER_SIZE = 4000 * 4;int intBytes = 0;byte[] audioData = new byte[BUFFER_SIZE];while (intBytes != -1) {intBytes = ais.read(audioData, 0, BUFFER_SIZE);// 从音频流读取指定的最大数量的数据字节,并将其放入给定的字节数组中。
if (intBytes >= 0) {int outBytes = line.write(audioData, 0, intBytes);// 通过此源数据行将音频数据写入混频器。
}}} catch (Exception e) {}}}java播放wav的基础代码2007-02-09 15:09import javax.sound.sampled.*;import java.io.*;public class TestMusic{private AudioFormat format;private byte[] samples;public static void main(String args[])throws Exception{TestMusic sound =new TestMusic("1.wav");InputStream stream =new ByteArrayInputStream(sound.getSamples());// play the soundsound.play(stream);// exitSystem.exit(0);}public TestMusic(String filename) {try {// open the audio input streamAudioInputStream stream =AudioSystem.getAudioInputStream(new File(filenam format = stream.getFormat();// get the audio samplessamples = getSamples(stream);}catch (UnsupportedAudioFileException ex) {ex.printStackTrace();}catch (IOException ex) {ex.printStackTrace();}}public byte[] getSamples() {return samples;}private byte[] getSamples(AudioInputStream audioStream) {// get the number of bytes to readint length = (int)(audioStream.getFrameLength() * format.getFrameSize());// read the entire streambyte[] samples = new byte[length];DataInputStream is = new DataInputStream(audioStream);try {is.readFully(samples);}catch (IOException ex) {ex.printStackTrace();}// return the samplesreturn samples;}public void play(InputStream source) {// use a short, 100ms (1/10th sec) buffer for real-time// change to the sound streamint bufferSize = format.getFrameSize() *Math.round(format.getSampleRate() / 10);byte[] buffer = new byte[bufferSize];// create a line to play toSourceDataLine line;try { info =new (SourceDataLine.class, format); line = (SourceDataLine)AudioSystem.getLine(info);line.open(format, bufferSize);}catch (LineUnavailableException ex) {ex.printStackTrace();return;}// start the lineline.start();// copy data to the linetry {int numBytesRead = 0;while (numBytesRead != -1) {numBytesRead =source.read(buffer, 0, buffer.length);if (numBytesRead != -1) {line.write(buffer, 0, numBytesRead);}}}catch (IOException ex) {ex.printStackTrace();}// wait until all data is played, then close the lineline.drain();line.close();}}java 播放midi,wav,mp3import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.Clip;import javax.sound.sampled.DataLine;import javax.sound.sampled.UnsupportedAudioFileException;import javax.sound.sampled.LineUnavailableException;import javax.sound.sampled.SourceDataLine;import java.io.IOException;import java.io.File;public class BasicPlayer {private AudioInputStream stream = null;private AudioFormat format = null;private Clip clip = null;private SourceDataLine m_line;public void play(File fileName,int itemStatus){try {// From filestream = AudioSystem.getAudioInputStream(fileName);// At present, ALAW and ULAW encodings must be converted// to PCM_SIGNED before it can be playedformat = stream.getFormat();if (format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) {format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,format.getSampleRate(),16,format.getChannels(),format.getChannels() * 2,format.getSampleRate(),false); // big endianstream = AudioSystem.getAudioInputStream(format, stream);}// Create the clip info = new (SourceDataLine.class, stream.getFormat(), AudioSystem.NOT_SPECIFIED);m_line = (SourceDataLine) AudioSystem.getLine(info);m_line.open(stream.getFormat(),m_line.getBufferSize());m_line.start();int numRead = 0;byte[] buf = new byte[m_line.getBufferSize()];while ((numRead = stream.read(buf, 0, buf.length)) >= 0) {int offset = 0;while (offset < numRead) {offset += m_line.write(buf, offset, numRead-offset);}}m_line.drain();m_line.stop();m_line.close();stream.close();} catch (IOException e) {e.printStackTrace();} catch (LineUnavailableException e) {e.printStackTrace();} catch (UnsupportedAudioFileException e) {e.printStackTrace();}}public double getDuration(){return m_line.getBufferSize() /(m_line.getFormat().getFrameSize() * m_line.getFormat().getFrameRate());}public double getDecision(){return m_line.getMicrosecondPosition()/1000.0;}}java 视频与音频播放器支持wav mp3 视频支持mpg package book.mutimedia.vedio.jmf;import java.awt.BorderLayout;import ponent;import java.awt.FileDialog;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.media.ControllerClosedEvent;import javax.media.ControllerEvent;import javax.media.ControllerListener;import javax.media.EndOfMediaEvent;import javax.media.Manager;import javax.media.MediaLocator;import javax.media.NoPlayerException;import javax.media.Player;import javax.media.PrefetchCompleteEvent;import javax.media.RealizeCompleteEvent;import javax.media.Time;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.SwingUtilities;import javax.swing.UIManager;/*** 用Java的JMF实现一个媒体播放器,可以播放音频和视频*/public class JMFMediaPlayer extends JFrame implements ActionListener, ControllerListener, ItemListener {// JMF的播放器Player player;// 播放器的视频组件和控制组件Component vedioComponent;Component controlComponent;// 标示是否是第一次打开播放器boolean first = true;// 标示是否需要循环boolean loop = false;// 文件当前目录String currentDirectory;// 构造方法public JMFMediaPlayer(String title) {super(title);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){// 用户点击窗口系统菜单的关闭按钮// 调用dispose以执行windowCloseddispose();}public void windowClosed(WindowEvent e){if (player != null){// 关闭JMF播放器对象player.close();}System.exit(0);}});// 创建播放器的菜单JMenu fileMenu = new JMenu("文件");JMenuItem openMemuItem = new JMenuItem("打开");openMemuItem.addActionListener(this);fileMenu.add(openMemuItem);// 添加一个分割条fileMenu.addSeparator();// 创建一个复选框菜单项JCheckBoxMenuItem loopMenuItem = new JCheckBoxMenuItem("循环", false);loopMenuItem.addItemListener(this);fileMenu.add(loopMenuItem);fileMenu.addSeparator();JMenuItem exitMemuItem = new JMenuItem("退出");exitMemuItem.addActionListener(this);fileMenu.add(exitMemuItem);JMenuBar menuBar = new JMenuBar();menuBar.add(fileMenu);this.setJMenuBar(menuBar);this.setSize(200, 200);try {// 设置界面的外观,为系统外观UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName( ));SwingUtilities.updateComponentTreeUI(this);} catch (Exception e) {e.printStackTrace();}this.setVisible(true);}/*** 实现了ActionListener接口,处理组件的活动事件*/public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("退出")) {// 调用dispose以便执行windowCloseddispose();return;}FileDialog fileDialog = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);fileDialog.setDirectory(currentDirectory);fileDialog.setVisible(true);// 如果用户放弃选择文件,则返回if (fileDialog.getFile() == null){return;}currentDirectory = fileDialog.getDirectory();if (player != null){// 关闭已经存在JMF播放器对象player.close();}try {// 创建一个打开选择文件的播放器player = Manager.createPlayer(new MediaLocator("file:" + fileDialog.getDirectory() + fileDialog.getFile())); } catch (java.io.IOException e2) {System.out.println(e2);return;} catch (NoPlayerException e2) {System.out.println("不能找到播放器.");return;}if (player == null) {System.out.println("无法创建播放器.");return;}first = false;this.setTitle(fileDialog.getFile());// 播放器的控制事件处理player.addControllerListener(this);// 预读文件内容player.prefetch();}/*** 实现ControllerListener接口的方法,处理播放器的控制事件*/public void controllerUpdate(ControllerEvent e) {// 调用player.close()时ControllerClosedEvent事件出现。