用Java播放.wav文件

时间:2013-12-20 07:56:33

标签: java

大家好我正在尝试使用剪辑开发一个带有java的声音播放器。 我跟着docs.oracle.com上的教程。但我不明白。 这是我的代码

import java.io.File;
import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class SoundPlayer{
    public static void main(String[] args) {
        try {
            Clip clp = AudioSystem.getClip();
            AudioInputStream is = AudioSystem.getAudioInputStream(new File("1_welcome.wav"));
            clp.open(is);
            clp.start();
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        } catch (UnsupportedAudioFileException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我的问题是,当我运行应用程序时,没有任何反应。

2 个答案:

答案 0 :(得分:1)

设置音量 -

clp.open(is);

FloatControl volume = (FloatControl) play.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(1.0f);

clp.start();

答案 1 :(得分:0)

要使用Clip播放声音,该过程需要处于活动状态。因此,我们使用Swing应用程序。试试这个。

import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.net.URL;
import javax.swing.*;

public class SoundPlayer extends JFrame {

   public SoundPlayer() {
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      this.setTitle("Test Sound Clip");
      this.setSize(300, 200);
      this.setVisible(true);

      try {
         // Open an audio input stream.
         URL url = this.getClass().getClassLoader().getResource("china.mid");
         AudioInputStream audioIn = AudioSystem.getAudioInputStream(url);
         // Get a sound clip resource.
         Clip clip = AudioSystem.getClip();
         // Open audio clip and load samples from the audio input stream.
         clip.open(audioIn);
         clip.start();
      } catch (UnsupportedAudioFileException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      } catch (LineUnavailableException e) {
         e.printStackTrace();
      }
   }

   public static void main(String[] args) {
      new SoundPlayer();
   }
}

由于我只是将这个相对路径"china.mid"与classLoader一起使用,我在"china.mid"目录中有build/classes/个文件。在Eclispe中,我会将它放在bin/目录