123 votes

Lecture de fichiers .mp3 et .wav en Java ?

Comment puis-je jouer un .mp3 et un .wav dans mon application Java ? J'utilise Swing. J'ai essayé de chercher sur Internet quelque chose comme cet exemple :

public void playSound() {
    try {
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("D:/MusicPlayer/fml.mp3").getAbsoluteFile());
        Clip clip = AudioSystem.getClip();
        clip.open(audioInputStream);
        clip.start();
    } catch(Exception ex) {
        System.out.println("Error with playing sound.");
        ex.printStackTrace();
    }
}

Mais, cela ne jouera que .wav des fichiers.

La même chose avec :

http://www.javaworld.com/javaworld/javatips/jw-javatip24.html

Je veux être capable de jouer les deux .mp3 et .wav avec la même méthode.

1 votes

On dirait que vous aurez besoin d'un plugin de quelque sorte. JMF devrait avoir ce dont vous avez besoin. oracle.com/technetwork/java/javase/tech/index-jsp-140239.html

0 votes

Je ne suis pas sûr de savoir comment utiliser ces trucs, je ne les ai jamais utilisés avant. Comment je peux l'implanter, comment je peux l'utiliser ?

0 votes

JFM a été abandonné en 2003. Il n'est pas recommandé de l'utiliser.

127voto

jasonwaste Points 572

Java FX a Media y MediaPlayer des classes qui liront des fichiers mp3.

Exemple de code :

String bip = "bip.mp3";
Media hit = new Media(new File(bip).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();

Vous aurez besoin des déclarations d'importation suivantes :

import java.io.File;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

4 votes

Cela a fonctionné pour moi mais les bibliothèques n'étaient disponibles que dans un projet javafx dans netbeans et j'ai utilisé le code suivant

6 votes

Final URL resource = getClass().getResource("a.mp3") ;

1 votes

Je devais passer resource.toString() à la Media() Constructeur

35voto

Thomas Mueller Points 18666

J'ai écrit un lecteur mp3 en Java : mp3transform .

2 votes

Des plans pour pousser le projet sur github ? =)

19voto

Gustavo Marques Points 91

Vous pouvez lire les fichiers .wav uniquement avec l'API Java :

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

code :

AudioInputStream audioIn = AudioSystem.getAudioInputStream(MyClazz.class.getResource("music.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();

Et lire les .mp3 avec jLayer

5 votes

C'est faux. Java peut lire d'autres formats de conteneurs que le wav. De plus, le wav est un format conteneur qui peut même contenir du mp3. Java ne peut donc pas lire tous les fichiers wav.

16voto

Mark Heath Points 22240

Cela fait un moment que je ne l'ai pas utilisé, mais JavaLayer est idéal pour la lecture des MP3

0 votes

Oui, c'est très cool. Simple et ne semble pas dépendre de la plateforme. Je joue bien en arrière-plan et j'ai juste besoin de comprendre comment arrêter un fil.

14voto

Ivo Points 940

Je vous recommande d'utiliser l'interface BasicPlayerAPI. Elle est open source, très simple et ne nécessite pas JavaFX. http://www.javazoom.net/jlgui/api.html

Après avoir téléchargé et extrait le fichier zip, il faut ajouter les fichiers jar suivants au chemin de construction du projet :

  • basicplayer3.0.jar
  • tous les pots de la lib (à l'intérieur de BasicPlayer3.0)

Voici un exemple d'utilisation minimaliste :

String songName = "HungryKidsofHungary-ScatteredDiamonds.mp3";
String pathToMp3 = System.getProperty("user.dir") +"/"+ songName;
BasicPlayer player = new BasicPlayer();
try {
    player.open(new URL("file:///" + pathToMp3));
    player.play();
} catch (BasicPlayerException | MalformedURLException e) {
    e.printStackTrace();
}

Importations requises :

import java.net.MalformedURLException;
import java.net.URL;
import javazoom.jlgui.basicplayer.BasicPlayer;
import javazoom.jlgui.basicplayer.BasicPlayerException;

C'est tout ce dont vous avez besoin pour commencer à jouer de la musique. Le lecteur démarre et gère son propre fil de lecture et fournit lecture, pause, reprise, arrêt y chercher fonctionnalité.

Pour une utilisation plus avancée, vous pouvez jeter un coup d'œil au lecteur de musique jlGui. C'est un clone open source de WinAmp : http://www.javazoom.net/jlgui/jlgui.html

La première classe à examiner serait PlayerUI (dans le paquet javazoom.jlgui.player.amp). Il démontre assez bien les fonctionnalités avancées du BasicPlayer.

0 votes

Merci, c'est le moyen le plus simple que j'ai essayé pour ajouter le support mp3 à une application actuelle. mp3spi1.9.4.jar doit être remplacé par mp3spi1.9.5.jar du site java zoom cependant.

0 votes

N'oubliez pas de mettre en sommeil votre thread principal après player.play() ou vous pouvez ne pas entendre de son.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X