无法使用JMF播放音频文件

时间:2014-01-16 20:15:49

标签: java eclipse jmf

我在使用JMF播放MP3文件时遇到问题,它显示以下错误:

Error: 
Unable to realize com.sun.media.amovie.AMController@80669d Exception in thread "main"

javax.media.CannotRealizeException at javax.media.Manager.blockingCall(Manager.java:2005) at
javax.media.Manager.createRealizedPlayer(Manager.java:528) at tp.Main.main(Main.java:44) 
Error value: 80070020

这是我的代码:

public class Main {

    public static void main(String[] args) throws NoPlayerException, CannotRealizeException, MalformedURLException, IOException, URISyntaxException {


        Fenetre F1 = new Fenetre();
        F1.setVisible(true);

        InputStream is = Main.class.getClass().getResourceAsStream("/data/gmu.mp3");
        File temp=File.createTempFile("temp", ".mp3");
        OutputStream os = new FileOutputStream(temp);
        int read = 0;
        byte[] bytes = new byte[1024];

        while ((read = is.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        }
        final Player p=Manager.createRealizedPlayer(temp.toURI().toURL());

        p.start();
        while(true){
            if(p.getMediaTime().getSeconds()==p.getDuration().getSeconds()){
                p.stop();
                p.setMediaTime(new Time(0));
                p.start();
            }
        }
    }
}

通常它可以正常工作如果我不使用InputStream,只需使用

File f =new File(Main.class.getResource("/data/gmu.mp3").getFile());
final Player p=Manager.createRealizedPlayer(temp.toURI().toURL());

但这种方式当我打包我的JAR文件时它不起作用,所以我正在尝试使用InputStream,目的是用一个工作音乐制作一个JAR

1 个答案:

答案 0 :(得分:0)

实际上我只需要将我的MP3文件转换为WAV就可以了!我不知道为什么播放器异常被MP3临时文件捕获但WAV没有出错。这不是我寻求的答案,因为WAV文件需要更多的空间,但至少它可以工作。

我也尝试过OGG格式,这就产生了同样的MP3问题......

欢迎任何其他答案,建议或讨论。