zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java播放声音类和一个简单示例

JAVA 简单 一个 示例 播放 声音
2023-06-13 09:15:19 时间


播放声音的类

复制代码代码如下:


importjava.io.File;
importjava.io.IOException;

importjavax.sound.sampled.AudioFormat;
importjavax.sound.sampled.AudioInputStream;
importjavax.sound.sampled.AudioSystem;
importjavax.sound.sampled.DataLine;
importjavax.sound.sampled.SourceDataLine;

//播放声音的类
publicclassPlaySoundsextendsThread{

 privateStringfilename;
 publicPlaySounds(Stringwavfile){

  filename=System.getProperty("user.dir")+wavfile;
 }
 publicvoidrun(){

  FilesoundFile=newFile(filename);

  AudioInputStreamaudioInputStream=null;
  try{
   audioInputStream=AudioSystem.getAudioInputStream(soundFile);
  }catch(Exceptione1){
   e1.printStackTrace();
   return;
  }
  AudioFormatformat=audioInputStream.getFormat();
  SourceDataLineauline=null;
  DataLine.Infoinfo=newDataLine.Info(SourceDataLine.class,format);
  try{
   auline=(SourceDataLine)AudioSystem.getLine(info);
   auline.open(format);
  }catch(Exceptione){
   e.printStackTrace();
   return;
  }
  auline.start();
  intnBytesRead=0;
  //这是缓冲
  byte[]abData=newbyte[512];
  try{
   while(nBytesRead!=-1){
    nBytesRead=audioInputStream.read(abData,0,abData.length);
    if(nBytesRead>=0)
     auline.write(abData,0,nBytesRead);
   }
  }catch(IOExceptione){
   e.printStackTrace();
   return;
  }finally{
   auline.drain();
   auline.close();
  }
 } 
}


下面是一个java播放声音的应用程序,可以单次播放声音、循环播放声音

MusicPalymyMusicPlay=newMusicPlay(getClass().getResource("/music/button.wav"));
myMusicPlay.start();//播放一次
myMusicPlay.stop();//停止
myMusicPlay.continuousStart();//循环播放
myMusicPlay.continuousStop();//停止

复制代码代码如下:


//文件名:MuiscPlay.java
importjava.io.*;
importjava.net.URL;
importsun.audio.*;

/**
*
*@authorwuhuiwen
*播放音频文件,产生音效
*/
publicclassMusicPlay{
   privateAudioStream as;//单次播放声音用
   ContinuousAudioDataStreamcas;//循环播放声音
   //构造函数
   publicMusicPlay(URLurl)
   {
       try{
           //打开一个声音文件流作为输入
           as=newAudioStream(url.openStream());
       }catch(FileNotFoundExceptione){
           //TODOAuto-generatedcatchblock
           e.printStackTrace();
       }catch(IOExceptione){
           //TODOAuto-generatedcatchblock
           e.printStackTrace();
       }
   }
   //一次播放开始
   publicvoidstart()
   {
       if(as==null){
           System.out.println("AudioStreamobjectisnotcreated!");
           return;
       }else{
           AudioPlayer.player.start(as);
       }
   }
   //一次播放停止
   publicvoidstop()
   {
       if(as==null){
           System.out.println("AudioStreamobjectisnotcreated!");
           return;
       }else{
           AudioPlayer.player.stop(as);
       }       
   }
   //循环播放开始
   publicvoidcontinuousStart()
   {
       //CreateAudioDatasource.
       AudioDatadata=null;
       try{
           data=as.getData();
       }catch(IOExceptione){
           //TODOAuto-generatedcatchblock
           e.printStackTrace();
       }

       //CreateContinuousAudioDataStream.
       cas=newContinuousAudioDataStream(data);

       //Playaudio.
       AudioPlayer.player.start(cas);
   }
   //循环播放停止
   publicvoidcontinuousStop()
   {
       if(cas!=null)
       {
           AudioPlayer.player.stop(cas);
       }   
   }

}