Programação, diversão e arte. Por Ricardo Giaviti
Tocando arquivos MP3 com Java e JLayer
Uma das coisas que mais motivam nós programadores quando estamos aprendendo a programar ou que continuemos a estudar a linguagem a qual programamos é aprender sempre algo novo que a linguagem nos oferece. Claro que Java nos permite hoje fazer qualquer tipo de aplicação, porém o grande problema é que não sabemos como fazer o que queremos e a partir da aí buscamos cada vez mais o conhecimento que precisamos para fazer o que desejamos.
Recentemente descobri essa biblioteca chamada JLayer a qual nos permite tocar de forma muito fácil arquivos MP3 em nossos programas Java. Eu ainda não estudei essa biblioteca profundamente para ver tudo o que ela tem, porém hoje eu mostro como fazer o básico para tocar arquivos MP3 usando a Jlayer.
O tutorial é dividido em duas partes. A primeira parte (logo a seguir) ensina a tocar um arquivo mp3 em código Java de forma bem simples. Na segunda parte (que publicarei algum dia), ensinarei a tocar o arquivo mp3 usando threads e mostrando alguns outros recursos do JLayer.
Para fazer este tutorial, eu estou usando o seguinte ambiente de desenvolvimento:
- JDK 1.6
- JLayer 1.0.1
- Eclipse 3.4 (Ganymede)
- Ubuntu 8.10 (Intrepid Ibex)
A primeira coisa que devemos fazer é baixa a biblioteca JLayer. A biblioteca é grátis (LGPL) e você pode fazer o download dos binários e fontes aqui: http://www.javazoom.net/javalayer/javalayer.html
Depois de feito o download, descompacte o arquivo e copie o arquivo jl1.0.1.jar para a pasta lib de seu projeto. Copiado o jar, adicione a biblioteca ao classpath do projeto. Feito isso, vamos criar uma classe que será responsável por tocar nosso arquivo MP3. Eu chamei a classe de MP3 e ela ficou dessa forma:
package com.meupost.player; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import javazoom.jl.player.Player; public class MP3 { /** * Objeto para nosso arquivo MP3 a ser tocado */ private File mp3; /** * Objeto Player da biblioteca jLayer. Ele tocará o arquivo * MP3 */ private Player player; /** * Construtor que recebe o objeto File referenciando o arquivo * MP3 a ser tocado e atribui ao atributo MP3 da classe. * * @param mp3 */ public MP3(File mp3) { this.mp3 = mp3; } /** * Método que toca o MP3 */ public void play() { try { FileInputStream fis = new FileInputStream(mp3); BufferedInputStream bis = new BufferedInputStream(fis); this.player = new Player(bis); System.out.println("Tocando!"); this.player.play(); System.out.println("Terminado!"); } catch (Exception e) { System.out.println("Problema ao tocar " + mp3); e.printStackTrace(); } } }
A classe está comentada e explica o que significa os atributos e os métodos. No método play(), vemos que um objeto FileInputStream e BufferedInputStream são instanciados. O Player da biblioteca JLayer usa o BufferedInputStream para poder instanciar e deixar pronto o objeto Player, o qual nos permite enfim, tocar a música. O método play() do objeto Player é o responsável pela execução da música.
Note que como esse exemplo não é multithread, a música começará a tocar no momento da chamada do método play() e o fluxo de execução irá parar nesse método. O fluxo somente retornará quando a música terminar. Por fim, se ocorrer qualquer erro na execução da música, esteremos capturando a exceção e exibindo o stackTrace da mesma.
Terminada essa nossa classe MP3, vamos criar uma classe Main que instancia nossa classe MP3 e que permita nós testarmos a classe MP3 para ver se realmente funciona.
Eu criei uma classe Main assim:
package com.meupost.main; import java.io.File; import com.meupost.player.MP3; public class Main { public static void main(String[] args) { //String com o caminho do arquivo MP3 a ser tocado String path = "/home/ricardo/Músicas/Rock Clássico/Eagles - Hotel California.mp3"; //Instanciação de um objeto File com o arquivo MP3 File mp3File = new File(path); //Instanciação do Objeto MP3, a qual criamos a classe. MP3 musica = new MP3(mp3File); //Finalmente a chamada do método que toca a música musica.play(); } }
As quatro linhas de código nela estão comentadas e falam o que é cada comando. Acredito que você já possa testar e ver se funciona. Mande um Play aí.
Espero que tenham gostado. É bem simples, mas muito legal. No próximo tutorial mostrarei como fazer um tocador mais complexo utilizando threads.
| Print article | This entry was posted by RicardoSEP on 28/11/2008 at 10:13 pm, and is filed under Java. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |








about 1 year ago
ele me foi bastante útil.
obrigrado!
about 1 year ago
opa, consegui fazer tocar o som aki tb, mto bacana..
eu gostaria de uma dica se possivel, eu nao preciso q toke um mp3 propriamente, mas sim akeles sons de inicialização do windows.. por exemplo: liga o sistema, logoff e desligar o sistema tb…
se vc puder me ajudar , agradeço!!
vlw pelo tuto ae, ta fmz!!!
about 11 months ago
about 11 months ago
Obrigado!
about 7 months ago
necessito colocar varios arquivos para tocar ao mesmo tempo… tem alguma dica de como fazer?
about 6 months ago
about 3 months ago
executasse a musica e a tela tem como?
about 3 months ago
ateh quem fim pensei que nunca daria conta!!!!!
vlw mto kra vlw MSM!!!!
isso vai abrir caminho pra muitas aprimoracoes nos meus projetos!!!!!Devo isso a vc!!!
about 2 months ago
Parabéns…
Há alguns dias que estou tentando executar um mp3 que esta dentro do meu projeto e nao consigo achar nada simples.
A dificuldade é só o caminho….
about 1 month ago
abraços!