大家好我正在尝试使用剪辑开发一个带有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();
}
}
}
我的问题是,当我运行应用程序时,没有任何反应。
答案 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/
目录