在Java中播放.mp3

时间:2013-02-06 00:27:13

标签: java audio mp3 wav javasound

我之前在这个网站上知道这个问题有already been asked,但我的问题偏离了它。

我想在不使用.mp3等外部Java库的情况下播放javafx文件。这是可能的,如果可以的话,你是怎么做到的?我没有反对图书馆javafx,我只想知道教育目的。

我知道使用javax库可以轻松播放.wav个文件。

public void playSound() {
try {
    AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("D:/Music/test.wav").getAbsoluteFile());
    Clip clip = AudioSystem.getClip();
    clip.open(audioInputStream);
    clip.start();
    } catch(Exception e) {
    e.printStackTrace();
    }
}

如果您只能使用此库播放.wav个文件,为什么只有一个文件类型?它只是开发人员的选择,还是在选择这种文件类型时有某种策略?通过某些其他文件类型访问.wav文件是否有一些速度优势?

5 个答案:

答案 0 :(得分:3)

MP3受到专利保护,据我所知,不能包含在标准的编解码器中。

答案 1 :(得分:2)

  

这可能吗??

直到/除非Oracle在J2SE中为它提供SPI,如Java Sound tag. Wiki中所述。鉴于汤姆解释的情况,我会说这将是'永远'。

  

如果您只能使用此库播放.wav文件,为什么只有一种文件类型?

再次,请参阅Wiki,了解如何获取J2SE提供内置支持的类型。

答案 2 :(得分:1)

有一个小型的java库,提供所有的源代码,并包含一个支持mp3甚至MIDI文件的声音播放器。它非常易于使用,并且您可以使用所有代码。 如果你想尝试: http://imr-lib.blogspot.com

答案 3 :(得分:1)

如果没有额外的库,无法在Java中播放mp3文件。 周期。

但是,Java mp3支持有许多不同的库:

  • 已经提到过JavaFX(Oracle开始将JavaFX与Java 7捆绑在一起,因此很容易获得)。
  • Javazoom,似乎在2008年被放弃了。
  • 多个FFmpeg包装器,例如Xuggle,通常需要您学习新的API,因为它们没有实现javax.sound.sampled.spi。您可以找到基于FFmpeg的项目列表here
  • SampledSP - OS X和Windows的库。这是一个在不同程度上实现javax.sound.sampled.spi的库的集合(完全披露 - 我写了它们)。

答案 4 :(得分:0)

有一个名为jlayer的简单库 http://www.javazoom.net/javalayer/javalayer.html