在Raspi上使用javax.sound.sampled和openjdk-7

时间:2013-11-12 20:47:18

标签: java audio raspberry-pi openjdk

我在使用Java从Raspi中获得良好的声音时遇到了很大的问题。

我想在我用Java编写的媒体服务器上写一点AirPlay客户端。我开始使用javazoom(http://www.javazoom.net/javalayer/docs/docs1.0/javazoom/jl/player/package-summary.html)中的Player类。这给了我一个不是真的波涛汹涌,但不知何故扭曲和慢于正常播放我流式传输到Raspi的mp3文件。

我的第一个想法是,对于Raspi来说,解码mp3可能有点太多了,特别是因为超频有点帮助。 所以现在我将mp3转换为服务器上的wav文件,然后将其传输到Raspi,使用javax.sound.sampled。*填充它。然而,没有改善:|

有没有人在Raspi上从Java播放soundFiles有经验?任何建议都有帮助!

谢谢,Stefan

1 个答案:

答案 0 :(得分:1)

我建议您尝试使用JavaFX。它比标准JDK上的媒体支持更好。此外,您已经在使用Java 7,因此迁移将很容易。方法如下:

Media media = new Media(Utils.findURI(baseDirName, soundFileName).toString());
SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        Platform.runLater(new Runnable() {
            @Override
            public void run() {
                MediaPlayer mediaPlayer = new MediaPlayer(media);
                mediaPlayer.setCycleCount(1);
                mediaPlayer.play();
            }
        });
    }
});

OpenJDK中的声音实现有很多错误。其中之一是它滥用音响系统并垄断它。所以在Linux上,如果你这样做,你就有更好的机会让事情发挥作用。