Play .mp3 in Java

此生再无相见时 提交于 2019-12-13 04:24:16

问题


I know this question has already been asked on this site before, but my question deviates from it a little.

I want to play a .mp3 file without using external Java libraries such as javafx. Is this possible, and if so, how do you do it? I have nothing against the library javafx, I just want to know for educational purposes.

I know that with the javax libraries you can play .wav files quite easily.

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();
    }
}

If you can only play .wav files with this library, why only that one file type? Was it just the developers choice, or was there some sort of strategy in choosing this one file type? Is there some speed benefit from accessing .wav files over some other file type?


回答1:


MP3 is patent encumbered and cannot be included in the standard set of codecs, as far as I know.




回答2:


Is this possible..?

Not until/unless Oracle provides an SPI for it in the J2SE, as explained in the Java Sound tag. Wiki. Given the situation as explained by Tom, I'd say that will be 'never'.

If you can only play .wav files with this library, why only that one file type?

Again, see the Wiki for how to get the types for which the J2SE provides inbuilt support.




回答3:


There is a small java library that provides all the source code and incorporates a sound player supporting mp3 and even MIDI files. It's very easy to use and you have all the code available. If you want to try: http://imr-lib.blogspot.com




回答4:


Without an additional library you cannot play mp3 files in Java. Period.

However, there are a number of different libraries for Java mp3 support:

  • Already mentioned JavaFX (Oracle started bundling JavaFX with Java 7, so it's readily available).
  • Javazoom, which seems to have been abandoned in 2008.
  • Several FFmpeg wrappers, like Xuggle, which typically require you to learn a new API, because they don't implement javax.sound.sampled.spi. You can find a list of FFmpeg based projects here.
  • SampledSP-libraries for OS X and Windows. This is a collection of libraries that implement javax.sound.sampled.spi to varying degrees (full disclosure - I wrote them).



回答5:


there is simple library called jlayer http://www.javazoom.net/javalayer/javalayer.html



来源:https://stackoverflow.com/questions/14719508/play-mp3-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!