Lecture.mp3 et.wav en Java?


Comment puis-je lire un fichier .mp3 et un fichier .wav dans mon application Java? Je suis à l'aide de Swing. J'ai essayé de regarder sur Internet, pour 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 lira que les fichiers .wav.

La même chose avec:

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

Je veux pouvoir lire les fichiers .mp3 et .wav avec la même méthode.

Author: SpaceCore186, 2011-05-18

12 answers

Java FX a des classes Media et MediaPlayer qui liront les 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 instructions d'importation suivantes:

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
 102
Author: jasonwaste, 2017-02-04 00:21:12

J'ai écrit un lecteur mp3 java pur: mp3transform.

 30
Author: Thomas Mueller, 2011-05-31 17:55:40

Vous pouvez jouer .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 .mp3 avec jLayer

 17
Author: Gustavo Marques, 2012-08-21 17:03:30

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

 15
Author: Mark Heath, 2011-05-19 10:34:49

Je recommanderais d'utiliser le BasicPlayerAPI. C'est open source, très simple et il 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.pot
  • tous les pots du répertoire lib (dans BasicPlayer3. 0)

Voici un usage minimaliste exemple:

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 des fonctionnalités play, pause, resume, stop et seek .

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

La première classe à regarder serait PlayerUI (à l'intérieur du paquet javazoom.jlgui.joueur.amp). Il démontre assez bien les fonctionnalités avancées du BasicPlayer.

 12
Author: Ivo, 2014-03-10 16:24:23

En utilisant javax standard.son API, une seule dépendance Maven, complètement Open Source (Java 7 requis):

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);
        }
    }
}

Références:

 9
Author: odoepner, 2015-09-03 12:08:12

Le moyen le plus simple que j'ai trouvé était de télécharger le fichier jar JLayer à partir de http://www.javazoom.net/javalayer/sources.html {[4] } et pour l'ajouter à la bibliothèque Jar http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29

Voici le code de la classe

public class SimplePlayer {

    public SimplePlayer(){

        try{

             FileInputStream fis = new FileInputStream("File location.");
             Player playMP3 = new Player(fis);

             playMP3.play();

        }  catch(Exception e){
             System.out.println(e);
           }
    } 
}

Et voici les importations

import javazoom.jl.player.*;
import java.io.FileInputStream;
 4
Author: Vlad, 2015-09-13 15:44:12

Pour donner aux lecteurs une autre alternative, je suggère JACo MP3 Player library, un lecteur mp3 java multiplateforme.

Caractéristiques:

  • très faible utilisation du PROCESSEUR (~2%)
  • incroyable petite bibliothèque (~90 Ko)
  • n'a pas besoin de JMF (Java Media Framework)
  • , facile à intégrer dans n'importe quelle application
  • , facile à intégrer dans n'importe quelle page web (applet).

Pour une liste complète de ses méthodes et attributs, vous pouvez consulter sa documentation ici.

Exemple de code:

import jaco.mp3.player.MP3Player;
import java.io.File;

public class Example1 {
  public static void main(String[] args) {
    new MP3Player(new File("test.mp3")).play();
  }
}

Pour plus de détails, j'ai créé un tutoriel simple ici qui inclut un code source téléchargeable.

 3
Author: Mr. Xymon, 2015-03-04 13:13:40

Vous devez d'abord installer JMF (télécharger en utilisant ce lien )

File f = new File("D:/Songs/preview.mp3");
MediaLocator ml = new MediaLocator(f.toURL());
Player p = Manager.createPlayer(ml);
p.start();

N'oubliez pas d'ajouter des fichiers jar JMF

 2
Author: Kasun Shamentha, 2012-06-09 17:06:46

Faire une recherche de freshmeat.net pour JAVE (signifie Java Audio Video Encoder) Bibliothèque (lien ici). C'est une bibliothèque pour ce genre de choses. Je ne sais pas si Java a une fonction mp3 native.

Vous devrez probablement envelopper la fonction mp3 et la fonction wav ensemble, en utilisant l'héritage et une simple fonction wrapper, si vous voulez une méthode pour exécuter les deux types de fichiers.

 1
Author: Spencer Rathbun, 2011-08-25 20:28:17

Pour ajouter la prise en charge de la lecture MP3 au son Java, ajoutez le mp3plugin.jar du JMF au chemin de classe d'exécution de l'application.

Notez que la classe Clip a des limitations de mémoire qui la rendent impropre à plus de quelques secondes de son de haute qualité.

 0
Author: Andrew Thompson, 2012-08-08 09:20:28

Utilisez cette bibliothèque: import sun.audio.*;

public void Sound(String Path){
    try{
        InputStream in = new FileInputStream(new File(Path));
        AudioStream audios = new AudioStream(in);
        AudioPlayer.player.start(audios);
    }
    catch(Exception e){}
}
 0
Author: Akila Lekamge, 2018-04-24 20:04:24