public class AudioPlay {
URL radio = null; AudioClip clip = null; File file = null; public static void main(String[] args) throws MalformedURLException {
new AudioPlay().play("D:\\Emergency.wav");
} public void play(String path) throws MalformedURLException {
file = new File(path);
radio = file.toURL();
clip = Applet.newAudioClip(radio);
clip.play();
}}运行完后,没有反应,也就是说没有声音,
但是Emergency.wav 用其他的播放软件能出来声音这是怎么回事啊?

解决方案 »

  1.   


    import   java.applet.*;   
      import   javax.swing.*;   
      import   java.net.URL;   
      import   java.net.MalformedURLException;   
        
      class   SoundLoader   extends   Thread   {   
              SoundList   soundList;   
              URL   completeURL;   
              String   relativeURL;   
        
              public   SoundLoader(SoundList   soundList,   
                                                    URL   baseURL,   String   relativeURL)   {   
                      this.soundList   =   soundList;   
                      try   {   
                              completeURL   =   new   URL(baseURL,   relativeURL);   
                      }   catch   (MalformedURLException   e){   
                              System.err.println(e.getMessage());   
                      }   
                      this.relativeURL   =   relativeURL;   
                      setPriority(MIN_PRIORITY);   
                      start();   
              }   
        
              public   void   run()   {   
                      AudioClip   audioClip   =   Applet.newAudioClip(completeURL);   
                      soundList.putClip(audioClip,   relativeURL);   
              }   
      }   
        
      import   java.applet.AudioClip;   
      import   javax.swing.*;   
      import   java.net.URL;   
        
      /**   
        *   Loads   and   holds   a   bunch   of   audio   files   whose   locations   are   specified   
        *   relative   to   a   fixed   base   URL.   
        */   
      class   SoundList   extends   java.util.Hashtable   {   
              JApplet   applet;   
              URL   baseURL;   
        
              public   SoundList(URL   baseURL)   {   
                      super(5);   //Initialize   Hashtable   with   capacity   of   5   entries.   
                      this.baseURL   =   baseURL;   
              }   
        
              public   void   startLoading(String   relativeURL)   {   
                      new   SoundLoader(this,   baseURL,   relativeURL);   
              }   
        
              public   AudioClip   getClip(String   relativeURL)   {   
                      return   (AudioClip)get(relativeURL);   
              }   
        
              public   void   putClip(AudioClip   clip,   String   relativeURL)   {   
                      put(relativeURL,   clip);   
              }   
      }   
        
        
      import   java.applet.*;   
      import   javax.swing.*;   
      import   java.net.URL;   
      import   java.net.MalformedURLException;   
        
      class   SoundLoader   extends   Thread   {   
              SoundList   soundList;   
              URL   completeURL;   
              String   relativeURL;   
        
              public   SoundLoader(SoundList   soundList,   
                                                    URL   baseURL,   String   relativeURL)   {   
                      this.soundList   =   soundList;   
                      try   {   
                              completeURL   =   new   URL(baseURL,   relativeURL);   
                      }   catch   (MalformedURLException   e){   
                              System.err.println(e.getMessage());   
                      }   
                      this.relativeURL   =   relativeURL;   
                      setPriority(MIN_PRIORITY);   
                      start();   
              }   
        
              public   void   run()   {   
                      AudioClip   audioClip   =   Applet.newAudioClip(completeURL);   
                      soundList.putClip(audioClip,   relativeURL);   
              }   
      }       
        
      刚刚在看,就随便Copy过来了   ,使可以play的
      

  2.   

    给你三个播放的方法,分为三个类,建议采用第二或第三个: 
     
    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 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 DataLine.Info(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(); 
    } } } 
     
    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(new File("intel.wav"));// 获得音频输入流 
    AudioFormat baseFormat = ais.getFormat();// 指定声音流中特定数据安排 
    System.out.println("baseFormat="+baseFormat); 
    DataLine.Info info = new DataLine.Info(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/O 
    int 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) { }