Reproduzindo arquivo mp3 em sua aplicação java
Olá caros leitores, essa dica visa reproduzir um arquivo mp3 em sua aplicação Java, para tornar seu aplicativo cada vez mais profissional e melhorar a interação com o usuário, de acordo com cada necessidade, é uma ótima escolha adicionar sons em botões, minimizar e maximizar janelas, notificações, entre outras opções.
(Fonte da imagem: Reprodução/clubedosgeeks)
Passo 1: Baixe a biblioteca Jlayer e extraia o arquivo em um diretório de sua preferencia, adicione no Build Path / Libraries do seu projeto os arquivos .jar externos:
- vorbisspi1.0.3.jar
- jogg-0.0.7.jar
- jorbis-0.0.15.jar
- trironus_share.jar
- jl1.0.1.jar
(Fonte da imagem: Reprodução/clubedosgeeks)
(Fonte da imagem: Reprodução/clubedosgeeks)
Passo 2: Crie uma Class Jlayer e adicione o o código fonte a seguir:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
public class JLayer {
public static void main(String[] args) {
// STRING COM O CAMINHO DO ARQUIVO MP3 A SER TOCADO
String path = "res/musica.mp3";
// INSTANCIAÇÃO DO OBJETO FILE COM O ARQUIVO MP3
File mp3File = new File(path);
// INSTANCIAÇÃO DO OBJETO MP3MUSICA DA CLASS INTERNA
MP3Musica musica = new MP3Musica();
musica.tocar(mp3File);
// CHAMA O METODO QUE TOCA A MUSICA
musica.start();
}
/**
* ====================================================================
* CLASS INTERNA MP3 MUSICA QUE EXTENDE DE THREAD PARA TRABALHAR
* PERFEITAMENTE NA APLICAÇÂO SEM TRAVAMENTO NA EXECUÇÃO
* ====================================================================
*/
public static class MP3Musica extends Thread {
// OBJETO PARA O ARQUIVO MP3 A SER TOCADO
private File mp3;
// OBJETO PLAYER DA BIBLIOTECA JLAYER QUE TOCA O ARQUIVO MP3
private Player player;
/**
* CONSTRUTOR RECEBE O OBJETO FILE REFERECIANDO O ARQUIVO MP3 A SER
* TOCADO E ATRIBUI AO ATRIBUTO DA CLASS
*
* @param mp3
*/
public void tocar(File mp3) {
this.mp3 = mp3;
}
/**
* ===============================================================
* ======================================METODO RUN QUE TOCA O MP3
* ===============================================================
*/
public void run() {
try {
FileInputStream fis = new FileInputStream(mp3);
BufferedInputStream bis = new BufferedInputStream(fis);
this.player = new Player(bis);
System.out.println("Tocando Musica!");
this.player.play();
System.out.println("Terminado Musica!");
} catch (Exception e) {
System.out.println("Problema ao tocar Musica" + mp3);
e.printStackTrace();
}
}
}
}
Passo 3: Crie uma pasta (res) dentro do seu projeto, para armazenar os arquivos mp3 a serem tocados.
Dica: Para chamar essa class no seu código, use da seguinte forma:
Jlayer l = new Jlayer();
l.main(null);
É isso, espero que gostem e aproveitem, estudem os outro recursos que a biblioteca disponibiliza, não copiem o código, aprenda como funciona passo a passo e assim poderão fazer melhor.
Boa. Fiz as modificações pro meu projeto e funcionou. Obrigado por compartilhar.
Não a de que amigo. Se tiver precisando de ajuda estamos sempre dispostos a colaborar em novos projeto e fazer amizade! vlw.
Baixei o arquivo e o único arquivo .jar que apareceu foi o jl1.0.1.jar
Amigo, esse post foi muito útil, obrigado. Mas no meu programa eu gostaria que em determinado momento o usuário pudesse parar o mp3. Como eu faço para criar um método que o pare?
Amigo, esse post foi muito útil, obrigado. Mas no meu programa eu gostaria que em determinado momento o usuário pudesse parar o mp3. Como eu faço para criar um método que o pare? Agradeço desde já.
Opa! Da uma olhada nesse tópico:http://stackoverflow.com/questions/5289851/stop-mute-playing-music-using-jlayer , possível solução para seu problema, em breve estarei fazendo um post para realizar essa função de pausar a musica.
Francisco seu exemplo funciona perfeitamente. Eu estou usando aqui a BasicPlayer que também é da JavaZoom junto com essas outras aí que você esta usando e estou me batendo aqui pra deixar um mp3 dentro da aplicação com essa aí basicplayer3.0.jar quando eu uso o File para apontar o mp3 na minha pasta funciona tudo certinho a barra de progresso, eu consigo pegar o tempo decrescente, o tempo total da música, mas quando eu mudo de File para InputStream até funciona as funções play, pause e stop, mas não pega o tempo da música, nem a barra de progresso funciona direito!!! Tenho o fonte aqui e posso te mostrar…
manda para o meu email, ai dou uma olhada.
Funciona no netbeans ??
Sim