Lecteur Audio en java

Fermé
elunda - 11 sept. 2008 à 21:48
 agoubi102 - 7 avril 2013 à 13:41
Bonjour,

Je voulai savoir si c'était possible de mettre du son(mp3 ou autre) dans une application en java.En faite je voudrais programmer une application en java graphique (à l'aide de swing), dans laquelle on pourra lire de la music comme dans un "lecteur Audio". J'ai trouvé la biblio java.sound, mais je ne l'ai pas encore tester. Connaissez-vous d'autre library que je pourrai utiliser ?

merci d'avance.
A voir également:

4 réponses

mat. Messages postés 150 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 1 septembre 2009 21
27 sept. 2008 à 19:33
OK, je comprends.
Alors pour mettre du .wav, il faut une librery spécial mais comme je pense que c'est plus simple d'avoir la class qu'il faut plutôt que de télécharger une librery pour qu'une class...
Donc voici la class qu'il faut :
import java.io.DataInputStream;
import java.io.File;
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;

public class Sound {

	private AudioFormat format;

	private byte[] samples;

	public Sound(String filename) {
		try {
			AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
			format = stream.getFormat();
			samples = getSamples(stream);
		} catch (Exception e) {
		}
	}

	public byte[] getSamples() {
		return samples;
	}

	public byte[] getSamples(AudioInputStream stream) {
		int length = (int) (stream.getFrameLength() * format.getFrameSize());
		byte[] samples = new byte[length];
		DataInputStream in = new DataInputStream(stream);
		try {
			in.readFully(samples);
		} catch (Exception e) {
		}
		return samples;
	}

	public void play(InputStream source) {
		int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
		byte[] buffer = new byte[bufferSize];
		SourceDataLine line;
		try {
			DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
			line = (SourceDataLine) AudioSystem.getLine(info);
			line.open(format, bufferSize);
		} catch (LineUnavailableException e) {
			e.printStackTrace();
			return;
		}
		line.start();
		try {
			int numBytesRead = 0;
			while (numBytesRead != -1) {
				numBytesRead = source.read(buffer, 0, buffer.length);
				if (numBytesRead != -1)
					line.write(buffer, 0, numBytesRead);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		line.drain();
		line.close();
	}
}

et pour lire la musique il faut mettre dans ton code :
Sound player = new Sound("ton fichier.wav");
InputStream stream = new ByteArrayInputStream(player.getSamples());
player.play(stream);

C'est la façon la plus simple d'après mes connaissances.
6
merci beaucoup
0
mat. Messages postés 150 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 1 septembre 2009 21
14 sept. 2008 à 16:08
Bonjour,
Pas besoin de librery, vas sur codessources.com :
http://www.javafr.com/

Example de lecteur de musique :
http://www.javafr.com/...

le seul problème est que pour télécharger tous sans copier fichier par fichier il faut s'inscrire mais tu peut t'inscrire gratuitement.
3
merci pour les liens, mais je voulais le programmer moi meme... donc je vais me debrouiller toute seule.
3
Je vous salut, Vous avez vraiment un esprit correct d'un developpeur
0
Hello

Je suis en train d'essayer de tester ta classe (attention, je suis novice en java).

j'ai mis
""Sound player = new Sound("ton fichier.wav");
InputStream stream = new ByteArrayInputStream(player.getSamples());
player.play(stream);""
dans la fonction main, mais rien ne se passe.

Déjà, pour appeler le son, j'ai mis mon .wav au meme niveau que mes fichier java. Cela va-t-il? (j'ai testé en mettant du coup "monFichier.wav", puis en mettant le chemin complet depuis la racine du DD.)

Si tu peux m'éclairer un peu please

Merci d'avance
2