Playing .mp3 and .wav in Java?
Java FX has Media
and MediaPlayer
classes which will play mp3 files.
Example code:
String bip = "bip.mp3";Media hit = new Media(new File(bip).toURI().toString());MediaPlayer mediaPlayer = new MediaPlayer(hit);mediaPlayer.play();
You will need the following import statements:
import java.io.File;import javafx.scene.media.Media;import javafx.scene.media.MediaPlayer;
Using standard javax.sound API, a single Maven dependency, completely Open Source (Java 7 or later required), this should be able to play most WAVs, OGG Vorbis and MP3 files:
pom.xml:
<!-- We have to explicitly instruct Maven to use tritonus-share 0.3.7-2 and NOT 0.3.7-1, otherwise vorbisspi won't work. --><dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>tritonus-share</artifactId> <version>0.3.7-2</version></dependency><dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>mp3spi</artifactId> <version>1.9.5-1</version></dependency><dependency> <groupId>com.googlecode.soundlibs</groupId> <artifactId>vorbisspi</artifactId> <version>1.0.3-1</version></dependency>
Code:
import java.io.File;import java.io.IOException;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.DataLine.Info;import javax.sound.sampled.LineUnavailableException;import javax.sound.sampled.SourceDataLine;import javax.sound.sampled.UnsupportedAudioFileException;import static javax.sound.sampled.AudioSystem.getAudioInputStream;import static javax.sound.sampled.AudioFormat.Encoding.PCM_SIGNED;public class AudioFilePlayer { public static void main(String[] args) { final AudioFilePlayer player = new AudioFilePlayer (); player.play("something.mp3"); player.play("something.ogg"); } public void play(String filePath) { final File file = new File(filePath); try (final AudioInputStream in = getAudioInputStream(file)) { final AudioFormat outFormat = getOutFormat(in.getFormat()); final Info info = new Info(SourceDataLine.class, outFormat); try (final SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info)) { if (line != null) { line.open(outFormat); line.start(); stream(getAudioInputStream(outFormat, in), line); line.drain(); line.stop(); } } } catch (UnsupportedAudioFileException | LineUnavailableException | IOException e) { throw new IllegalStateException(e); } } private AudioFormat getOutFormat(AudioFormat inFormat) { final int ch = inFormat.getChannels(); final float rate = inFormat.getSampleRate(); return new AudioFormat(PCM_SIGNED, rate, 16, ch, ch * 2, rate, false); } private void stream(AudioInputStream in, SourceDataLine line) throws IOException { final byte[] buffer = new byte[4096]; for (int n = 0; n != -1; n = in.read(buffer, 0, buffer.length)) { line.write(buffer, 0, n); } }}
References: