用Java播放.mp3

用Java播放.mp3,java,audio,mp3,wav,javasound,Java,Audio,Mp3,Wav,Javasound,我知道这个问题以前在这个网站上出现过,但我的问题有点偏离了它 我想在不使用外部Java库(如javafx的情况下播放.mp3文件。这可能吗?如果可能,你怎么做?我对库javafx没有任何异议,我只是想出于教育目的了解一下 我知道,使用javax库,您可以非常轻松地播放.wav文件 public void playSound() { try { AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new F

我知道这个问题以前在这个网站上出现过,但我的问题有点偏离了它

我想在不使用外部Java库(如
javafx
的情况下播放
.mp3
文件。这可能吗?如果可能,你怎么做?我对库
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
文件是否有一些速度优势?

据我所知,MP3受到专利限制,无法包含在标准编解码器中

这可能吗

除非Oracle在J2SE中为其提供SPI,如中所述。考虑到汤姆所解释的情况,我认为那是“永远不会”

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


同样,请参见Wiki,了解如何获取J2SE提供内置支持的类型。

有一个名为jlayer的简单库
有一个小型java库,提供所有源代码,并集成了支持mp3甚至MIDI文件的声音播放器。它非常容易使用,并且您拥有所有可用的代码。 如果您想尝试:

如果没有附加库,您将无法用Java播放mp3文件。 句号

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

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

请注意,javafx可以播放mp3文件,并且包含在Oracle Java和OpenJDK中,用于在Windows、OS X和Linux上构建最新的Java7—它不是这些系统的外部库。