Boa noite pessoal!
Fiz um player, mas a música não toca, este código é minha thread que chamo na minha GUI.
public class Load implements Runnable{
//thread criada a partir da estensão para a classe Runnable e reescrevendo o método run
private static SourceDataLine line;//cria uma variável do tipo SourceDataLine, pois vai ser uma entrada de
//áudio
private File soundFile;
int cont1 = 0;
int cont2 = 0;
public Load(File soundFile) {//inicializador
this.soundFile = soundFile;//chamado lá no AudioPlayer
}
public void run() {
try {
//A Partir de arquivo
AudioInputStream stream = AudioSystem.getAudioInputStream(soundFile);
//recebe o audio, utilizando o método da classe AudioSystem para pegar ele.
//A Partir de URL
//stream = AudioSystem.getAudioInputStream(new URL("http://hostname/audiofile"));
AudioFormat format = stream.getFormat();
//Cria a linha
// Cria o canal de comunicacao com o driver de som
//SourceDataLine é usado pois é uma entrada de áudio.
//DataLine.info é uma sub-classe da Line.Info para criar a linha
SourceDataLine.Info info = new DataLine.Info(
SourceDataLine.class, format,
((int)stream.getFrameLength()*format.getFrameSize()));
//(int)stream.getFrameLength()*format.getFrameSize()) retorna o tamanho da música em bytes
line = (SourceDataLine) AudioSystem.getLine(info);
line.open();
line.start();
int numRead = 0;
//Libera o SourceDataLine
if (line!=null) {
line.drain();
line.close();
line = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void tocar() {
if (line == null) {
//Se a linha e nula (ou seja, a musica nao foi iniciada ou esta parada), toca a musica desde o inicio
new Thread(this).start();
}else {
//Se a linha nao e nula e ela nao esta rodando, quer dizer que ela esta pausada somente
if (!line.isRunning()) {
//despausa
line.start();
}
}
}
public void pausar() {
//Interrompe a linha
line.stop();
}
public void parar() {
//Fecha e anula a linha
line.close();
line = null;
}
}
Se alguém puder ajudar.