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 les fichiers .wav avec la même méthode.

99
demandé sur SpaceCore186 2011-05-18 17:21:07

12 réponses

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

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
102
répondu jasonwaste 2017-02-04 00:21:12

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

30
répondu 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 jouer. mp3 avec jLayer

17
répondu 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
répondu Mark Heath 2011-05-19 10:34:49

Je recommande 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.jar
  • Tous Les pots du répertoirelib (à L'intérieur de 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 thread de lecture et fournit la fonctionnalitéplay, pause, resume, stop etseek .

Pour une utilisation plus avancée, vous pouvez jeter un oeil au lecteur de musique jlGui. C'est un clone Open source WinAmp: 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 de BasicPlayer.

12
répondu Ivo 2014-03-10 16:24:23

En utilisant javax standard.API audio, 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
répondu 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 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
répondu 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 multi-plateforme.

Caractéristiques:

  • Très faible utilisation du processeur (~2%)
  • incroyable petite bibliothèque (~90KB)
  • 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
répondu 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
répondu Kasun Shamentha 2012-06-09 17:06:46

Faites 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 aurez probablement besoin d'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
répondu 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 inadaptée pour plus de quelques secondes de son de haute qualité.

0
répondu 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
répondu Akila Lekamge 2018-04-24 20:04:24