Lecture de fichiers RAW, WAV, MP3 en Java

Comment lire des fichiers audio (RAW, WAV, MP3) sur Java 8

Main

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javazoom.jl.decoder.JavaLayerException;

public class SoundPlayTest {

	public static void main(String[] args) throws LineUnavailableException, IOException, JavaLayerException, UnsupportedAudioFileException {

		RawPlayer rawPlayer = new RawPlayer();
		rawPlayer.play(new FileInputStream(new File("sample.wav")));

		Mp3Player mp3Player = new Mp3Player();
		mp3Player.play(new FileInputStream(new File("sample.mp3")));

		WavPlayer wavPlayer = new WavPlayer();
		wavPlayer.play(new FileInputStream(new File("sample.wav")));

	}

}

RAW

import java.io.BufferedInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;

public class RawPlayer {

	private byte buf[] = new byte[1024];
	private int len;

	public void play(InputStream rawfile) throws LineUnavailableException, FileNotFoundException, IOException {
		BufferedInputStream raw = new BufferedInputStream(rawfile);
		AudioFormat format = new AudioFormat(8000, 16, 1, true, false);
		// select audio format parameters
		DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
		SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
		// prepare audio output
		line.open(format, 1024);
		line.start();
		// play audio
		while ((len = raw.read(buf)) != -1)
			line.write(buf, 0, len);
		// shut down audio
		line.drain();
		line.stop();
		line.close();

	}

}

MP3

import java.io.InputStream;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.AudioDevice;
import javazoom.jl.player.FactoryRegistry;
import javazoom.jl.player.advanced.AdvancedPlayer;
import javazoom.jl.player.advanced.PlaybackEvent;
import javazoom.jl.player.advanced.PlaybackListener;
import static java.lang.System.out;

public class Mp3Player {

	public void play(InputStream mp3file) throws JavaLayerException {

		AudioDevice device = FactoryRegistry.systemRegistry().createAudioDevice();
		// create an MP3 player
		AdvancedPlayer player = new AdvancedPlayer(mp3file, device);
		player.setPlayBackListener(new PlaybackListener() {
			@Override
			public void playbackStarted(PlaybackEvent evt) {
				out.println("[Playback] started.");
			}
			@Override
			public void playbackFinished(PlaybackEvent evt) {
				out.println("[Playback] finished.");
			}
		});
		// play it!
		player.play();
	}

}

WAV

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 WavPlayer {

	private byte buf[] = new byte[1024];
	private int len;

	public void play(InputStream wavfile) throws UnsupportedAudioFileException, IOException, LineUnavailableException {

		AudioInputStream wav = AudioSystem.getAudioInputStream(wavfile);
		AudioFormat format = wav.getFormat();
		// prepare audio output
		DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
		SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
		// prepare audio output
		line.open(format, 1024);
		line.start();
		// play audio
		while ((len = wav.read(buf)) != -1)
			line.write(buf, 0, len);
		// shut down audio
		line.drain();
		line.stop();
		line.close();
	}

}

JavaZOOM est utilisé pour lire des MP3.

		<dependency>
			<groupId>com.googlecode.soundlibs</groupId>
			<artifactId>jlayer</artifactId>
			<version>1.0.1.4</version>
		</dependency>

Recommended Posts

Lecture de fichiers RAW, WAV, MP3 en Java
Lire des fichiers binaires en Java 1
Lire des fichiers binaires dans Java 2
Lisez facilement les fichiers texte en Java (Java 11 et Java 7)
Tweak Markdown avec Java flexmark-java
Construction de l'environnement Play Framework 2.6 (Java) avec Eclipse
Convertir des fichiers SVG en fichiers PNG en Java
Lire et écrire des fichiers gzip en Java
Partition en Java
Changements dans Java 11
Taux circonférentiel à Java
Importer des fichiers de la même hiérarchie en Java
FizzBuzz en Java
Comment entrer / sortir des fichiers mainframe IBM en Java?
Android-Télécharger des fichiers image vers Azure Blob Storage en Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Conseils pour Play Framework2.5 (Java)
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
Interface appelable en Java
Commentaires dans la source Java
Fonctions Azure en Java
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Mémorandum WebApi avec Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Lire des valeurs de code autres que des caractères XML valides en Java
Lire les données WAV sous forme de tableau d'octets sur Android Java
Comment lire un fichier MIDI à l'aide de l'API Java Sound