Olá pessoal,
estou com um probleminha quanto à Java Media Framework. Construi uma classe para executar medias diversas tipo .mp3.
Com o auxilio do JFileChooser, consigo rodar os arquivos de audio sem problemas, pois construo a URL desta forma:
mediaURL = fileChooser.getSelectedFile().toURL();
Só que no meu projeto, preciso deste arquivo sem passar pelo FileChooser. Tentei pegar a URL que o FileChooser gerou e passar direto para a classe Player, mas deu um erro de IOException (File Not Found), ou seja não é um caminho válido.
Estou com um projeto chamado TocaSom e dentro do projeto uma pasta chamada /sons, tenho que informar para a classe Player uma URL válida para estes arquivos na mão, tentei fazer da seguinte forma:
package TocaSom;
import java.io.*;
import com.sun.org.apache.bcel.internal.verifier.structurals.Frame;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) throws MalformedURLException {
//JFileChooser fileChooser = new JFileChooser();
//int result = fileChooser.showOpenDialog(null);
//if(result == JFileChooser.APPROVE_OPTION){
String audio = null;
audio = "file:/F:/Projetos/Projetos JAVA/TocaSom/sons/nome_arquivo.mp3";
URL mediaURL = new URL(audio);
//URL mediaURL = null;
//try{
//mediaURL = fileChooser.getSelectedFile().toURL();
//System.out.println("URL: "+mediaURL);
//}catch(MalformedURLException malformedURLException){
//System.err.println("Não foi possível criar um URL do arquivo");
//}
if(mediaURL != null){
ClassePlayer mediaPanel = new ClassePlayer(mediaURL);
}
//}
}
}
e a classe player segue abaixo:
package TocaSom;
import java.awt.Component;
import java.io.IOException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
public class ClassePlayer {
/**
* CLASSE PLAYER EXTENDIDA DA JMF (JAVA MEDIA FRAMEWORK)
* ATRAVÉS DE UMA URL VÁLIDA DE UM ARQUIVO DE MEDIA SUPORTADO (.AVI,.SWF.WAV,.MP3,...)
* ESTA CLASSE MONTA UM OBJETO PLAYER PARA EXECUÇÃO DA MESMA.
* PARAMETRO:
* mediaURL = URL DO ARQUIVO A SER EXECUTADO
*/
public ClassePlayer(URL mediaURL){
System.out.println("A URL na ClassePlayer é: "+mediaURL);
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
Player mediaPlayer = null;
try { mediaPlayer = Manager.createRealizedPlayer(mediaURL); }
catch (NoPlayerException ex) { ex.printStackTrace(); }
catch (CannotRealizeException ex) { ex.printStackTrace(); }
catch (IOException ex) { ex.printStackTrace(); }
mediaPlayer.start();
}
}
Álguem pode me ajudar a resolver este problema? Obrigado.