Playing .mp3 and .wav in Java? Playing .mp3 and .wav in Java? java java

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: