From 62ac9611910d7db2e6e46443a301505f6f93dfe3 Mon Sep 17 00:00:00 2001 From: sachin <56427366+sachin071287@users.noreply.github.com> Date: Sat, 28 May 2022 08:48:22 +0530 Subject: [PATCH] BAEL-4292:Play sound in java (#12004) * BAEL-4292:Play sound in java * BAEL-4292:Play sound in java * BAEL-4292: Play sound in java * BAEL-4292:Play sound in java * BAEL-4292:Play sound in java * BAEL-4292:Play sound in java * fix for spaces Co-authored-by: Sachin kumar --- javax-sound/pom.xml | 37 +++++++++ .../com/baeldung/SoundPlayerUsingClip.java | 77 ++++++++++++++++++ .../com/baeldung/SoundPlayerUsingJavaFx.java | 39 +++++++++ .../baeldung/SoundPlayerUsingJavaZoom.java | 30 +++++++ .../SoundPlayerUsingSourceDataLine.java | 59 ++++++++++++++ .../main/resources/AudioFileWithMp3Format.mp3 | Bin 0 -> 37450 bytes pom.xml | 2 + 7 files changed, 244 insertions(+) create mode 100644 javax-sound/pom.xml create mode 100644 javax-sound/src/main/java/com/baeldung/SoundPlayerUsingClip.java create mode 100644 javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaFx.java create mode 100644 javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaZoom.java create mode 100644 javax-sound/src/main/java/com/baeldung/SoundPlayerUsingSourceDataLine.java create mode 100644 javax-sound/src/main/resources/AudioFileWithMp3Format.mp3 diff --git a/javax-sound/pom.xml b/javax-sound/pom.xml new file mode 100644 index 0000000000..7b5fabb9a7 --- /dev/null +++ b/javax-sound/pom.xml @@ -0,0 +1,37 @@ + + + 4.0.0 + com.baeldung.javax-sound + javax-sound + 1.0-SNAPSHOT + javax-sound + jar + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + javazoom + jlayer + ${javazoom.jlayer.version} + + + org.openjfx + javafx-controls + ${org.openjfx.version} + + + org.openjfx + javafx-media + ${org.openjfx.version} + + + + 11.0.2 + 1.0.1 + + \ No newline at end of file diff --git a/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingClip.java b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingClip.java new file mode 100644 index 0000000000..6f7ec4013f --- /dev/null +++ b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingClip.java @@ -0,0 +1,77 @@ +package com.baeldung; + +import java.io.IOException; +import java.io.InputStream; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.LineEvent; +import javax.sound.sampled.LineListener; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +public class SoundPlayerUsingClip implements LineListener { + + boolean isPlaybackCompleted; + + @Override + public void update(LineEvent event) { + + if (LineEvent.Type.START == event.getType()) { + System.out.println("Playback started."); + } else if (LineEvent.Type.STOP == event.getType()) { + isPlaybackCompleted = true; + System.out.println("Playback completed."); + } + } + + /** + * + * Play a given audio file. + * @param audioFilePath Path of the audio file. + * + */ + void play(String audioFilePath) { + try { + InputStream inputStream = getClass().getClassLoader() + .getResourceAsStream(audioFilePath); + AudioInputStream audioStream = AudioSystem.getAudioInputStream(inputStream); + + AudioFormat format = audioStream.getFormat(); + DataLine.Info info = new DataLine.Info(Clip.class, format); + + Clip audioClip = (Clip) AudioSystem.getLine(info); + audioClip.addLineListener(this); + audioClip.open(audioStream); + audioClip.start(); + while (!isPlaybackCompleted) { + try { + Thread.sleep(1000); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + audioClip.close(); + audioStream.close(); + + } catch (UnsupportedAudioFileException | LineUnavailableException | IOException ex) { + System.out.println("Error occured during playback process:"+ ex.getMessage()); + } + + } + + public static void main(String[] args) { + String audioFilePath = "AudioFileWithWavFormat.wav"; + + // Clip can not play mpeg/mp3 format audio. We'll get exception if we run with below commented mp3 and mpeg format audio. + // String audioFilePath = "AudioFileWithMpegFormat.mpeg"; + // String audioFilePath = "AudioFileWithMp3Format.mp3"; + + SoundPlayerUsingClip player = new SoundPlayerUsingClip(); + player.play(audioFilePath); + } + +} \ No newline at end of file diff --git a/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaFx.java b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaFx.java new file mode 100644 index 0000000000..523376936d --- /dev/null +++ b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaFx.java @@ -0,0 +1,39 @@ +package com.baeldung; + +import javafx.scene.media.Media; +import javafx.scene.media.MediaPlayer; + +public class SoundPlayerUsingJavaFx { + + public static void main(String[] args) { + + // String audioFilePath = "AudioFileWithWavFormat.wav"; + // String audioFilePath = "AudioFileWithMpegFormat.mpeg"; + String audioFilePath = "AudioFileWithMp3Format.mp3"; + SoundPlayerUsingJavaFx soundPlayerWithJavaFx = new SoundPlayerUsingJavaFx(); + + try { + com.sun.javafx.application.PlatformImpl.startup(() -> { + }); + + Media media = new Media(soundPlayerWithJavaFx.getClass() + .getClassLoader() + .getResource(audioFilePath) + .toExternalForm()); + + MediaPlayer mp3Player = new MediaPlayer(media); + mp3Player.setOnPlaying(new Runnable() { + @Override + public void run() { + System.out.println("Playback started"); + } + }); + + mp3Player.play(); + + } catch (Exception ex) { + System.out.println("Error occured during playback process:" + ex.getMessage()); + } + + } +} diff --git a/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaZoom.java b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaZoom.java new file mode 100644 index 0000000000..a7174b29a1 --- /dev/null +++ b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingJavaZoom.java @@ -0,0 +1,30 @@ +package com.baeldung; + +import java.io.BufferedInputStream; + +import javazoom.jl.player.Player; + +public class SoundPlayerUsingJavaZoom { + + public static void main(String[] args) { + + // javazoom Player doesn't work with wav audio format. + // String audioFilePath = "AudioFileWithWavFormat.wav"; + + // It works with below audio formats. + // String audioFilePath = "AudioFileWithMpegFormat.mpeg"; + String audioFilePath = "AudioFileWithMp3Format.mp3"; + SoundPlayerUsingJavaZoom player = new SoundPlayerUsingJavaZoom(); + + try { + BufferedInputStream buffer = new BufferedInputStream(player.getClass() + .getClassLoader() + .getResourceAsStream(audioFilePath)); + Player mp3Player = new Player(buffer); + mp3Player.play(); + + } catch (Exception ex) { + System.out.println("Error occured during playback process:" + ex.getMessage()); + } + } +} diff --git a/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingSourceDataLine.java b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingSourceDataLine.java new file mode 100644 index 0000000000..2b589554c2 --- /dev/null +++ b/javax-sound/src/main/java/com/baeldung/SoundPlayerUsingSourceDataLine.java @@ -0,0 +1,59 @@ +package com.baeldung; + +import java.io.IOException; +import java.io.InputStream; + +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.SourceDataLine; +import javax.sound.sampled.UnsupportedAudioFileException; + +public class SoundPlayerUsingSourceDataLine { + + private static final int BUFFER_SIZE = 4096; + + void play(String soundFilePath) { + try { + InputStream inputStream = getClass().getClassLoader() + .getResourceAsStream(soundFilePath); + AudioInputStream audioStream = AudioSystem.getAudioInputStream(inputStream); + + AudioFormat audioFormat = audioStream.getFormat(); + DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat); + SourceDataLine sourceDataLine = (SourceDataLine) AudioSystem.getLine(info); + sourceDataLine.open(audioFormat); + sourceDataLine.start(); + + System.out.println("Playback Started."); + + byte[] bufferBytes = new byte[BUFFER_SIZE]; + int readBytes = -1; + while ((readBytes = audioStream.read(bufferBytes)) != -1) { + sourceDataLine.write(bufferBytes, 0, readBytes); + } + sourceDataLine.drain(); + sourceDataLine.close(); + audioStream.close(); + + System.out.println("Playback has been finished."); + + } catch (UnsupportedAudioFileException | LineUnavailableException | IOException ex) { + System.out.println("Error occured during playback process:" + ex.getMessage()); + } + } + + public static void main(String[] args) { + String audioFilePath = "AudioFileWithWavFormat.wav"; + + // Clip can not play mpeg/mp3 format audio. We'll get exception if we run with below commented mp3 and mpeg format audio. + // String audioFilePath = "AudioFileWithMpegFormat.mpeg"; + // String audioFilePath = "AudioFileWithMp3Format.mp3"; + + SoundPlayerUsingSourceDataLine player = new SoundPlayerUsingSourceDataLine(); + player.play(audioFilePath); + } + +} diff --git a/javax-sound/src/main/resources/AudioFileWithMp3Format.mp3 b/javax-sound/src/main/resources/AudioFileWithMp3Format.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..53dbb249fa1585a53eaffc1fadba43dc91a64dec GIT binary patch literal 37450 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

1$Z= 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 javax-servlets javax-servlets-2 + javax-sound javaxval jaxb jee-7 @@ -898,6 +899,7 @@ java-websocket javax-servlets javax-servlets-2 + javax-sound javaxval jaxb jee-7