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?
MP3 is patent encumbered and cannot be included in the standard set of codecs, as far as I know.
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'.
Again, see the Wiki for how to get the types for which the J2SE provides inbuilt support.
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
Without an additional library you cannot play mp3 files in Java. Period.
However, there are a number of different libraries for Java mp3 support:
javax.sound.sampled.spi
to varying degrees (full disclosure - I wrote them).there is simple library called jlayer http://www.javazoom.net/javalayer/javalayer.html