tenho uma aplicação java, eu gostaria que : quando eu abrisse ele tocasse uma musica que eu tenho no meu computador.
não estou conseguindo
A Classe abaixo reproduz arquivos de áudio no formato WAV.
public class Player{
private Clip clip;
private AudioInputStream audioIn;
public void playWav(File wav) {
try {
audioIn = AudioSystem.getAudioInputStream(new BufferedInputStream(new FileInputStream(wav)));
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();
clip.loop(Clip.LOOP_CONTINUOUSLY);//comente essa linha caso não deseje um loop
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void stopWav() {
try {
clip.stop();
audioIn.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Se você for utilizar arquivos de áudio no formato mp3 use a lib JLayer http://www.javazoom.net/javalayer/javalayer.html8
Uma vez que você adicionar o jar no seu projeto, você pode fazer da seguinte maneira:
public void playMp3(final InputStream input) {
try {
new Thread() { //ou implemente sua Thread numa classe separada se desejar
public void run() {
try {
BufferedInputStream bis = new BufferedInputStream(input);
Player player = new Player(bis);
player.play();
player.close();
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
}
No caso do JLayer tem que abrir uma Thread senão trava a execução do programa até a musica acabar.
o que é esse File? um atributo? como eu declaro ele?
É um parâmetro do método, no caso seria o seu arquivo de som.
eu até consegui : mas tem uma coisa…
estou reproduzindo WAV, mas nao consigo reproduzir as musicas pequenas ex de 3 ,5 segundos,
porque sera?
usei isto:
public void TOCAR_AUDIO(String music) {
URL MUSIC= player2.class.getResource(music+".wav");
AudioClip PLAY=Applet.newAudioClip(MUSIC);
player2 tocar=new player2();
PLAY.loop();
}