it-swarm.com.de

MP3 und WAV in Java abspielen?

Wie kann ich eine .mp3 - und eine .wav - Datei in meiner Java) - Anwendung abspielen? Ich verwende Swing. Ich habe versucht, im Internet nach so etwas zu suchen Beispiel:

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

Dies spielt jedoch nur .wav - Dateien ab.

Das selbe mit:

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

Ich möchte in der Lage sein, sowohl .mp3 - als auch .wav - Dateien mit derselben Methode abzuspielen.

104
Stan

Java FX verfügt über Klassen Media und MediaPlayer, mit denen MP3-Dateien abgespielt werden können.

Beispielcode:

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

Sie benötigen die folgenden Importanweisungen:

import Java.io.File;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
110
jasonwaste

Ich habe einen reinen Java mp3 player: mp3transform geschrieben.

30
Thomas Mueller

du kannst .wav nur mit Java API:

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

Und spiele .mp3 mit jLayer

18
Gustavo Marques

Es ist schon eine Weile her, dass ich es benutzt habe, aber JavaLayer ist großartig für die MP3-Wiedergabe

15
Mark Heath

Mit der Standard-API javax.sound, einer einzelnen Maven-Abhängigkeit, vollständig Open Source ( Java 7 erforderlich):

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

Verweise:

13
odoepner

Ich würde die Verwendung des BasicPlayerAPI empfehlen. Es ist Open Source, sehr einfach und benötigt kein JavaFX. http://www.javazoom.net/jlgui/api.html

Nach dem Herunterladen und Extrahieren der Zip-Datei sollten die folgenden JAR-Dateien zum Erstellungspfad des Projekts hinzugefügt werden:

  • basicplayer3.0.jar
  • alle Gläser aus dem lib Verzeichnis (in BasicPlayer3.0)

Hier ist ein minimalistisches Anwendungsbeispiel:

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

Erforderliche Importe:

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

Das ist alles, was Sie brauchen, um Musik zu spielen. Der Player startet und verwaltet seinen eigenen Wiedergabethread und bietet das Abspielen, Anhalten, Fortsetzen, Stoppen und Suchen Funktionalität.

Für eine fortgeschrittenere Nutzung können Sie sich den jlGui Music Player ansehen. Es ist ein Open-Source-WinAmp-Klon: http://www.javazoom.net/jlgui/jlgui.html

Die erste zu betrachtende Klasse wäre PlayerUI (innerhalb des Pakets javazoom.jlgui.player.amp). Es zeigt ziemlich gut die erweiterten Funktionen des BasicPlayer.

13
Ivo

Der einfachste Weg, den ich gefunden habe, war, die JLayer-JAR-Datei von http://www.javazoom.net/javalayer/sources.html herunterzuladen und der Jar-Bibliothek hinzuzufügen http://www.wikihow.com/Add-JARs-to-Project-Build-Paths-in-Eclipse-%28Java%29

Hier ist der Code für die Klasse

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

und hier sind die Importe

import javazoom.jl.player.*;
import Java.io.FileInputStream;
5
Vlad

Um den Lesern eine weitere Alternative zu bieten, schlage ich die JACo MP3-Player-Bibliothek vor, einen plattformübergreifenden Java MP3-Player.

Eigenschaften:

  • sehr geringe CPU-Auslastung (~ 2%)
  • unglaublich kleine Bibliothek (~ 90KB)
  • benötigt kein JMF (Java Media Framework)
  • einfach in jede anwendung zu integrieren
  • einfach in jede Webseite zu integrieren (als Applet).

Eine vollständige Liste der Methoden und Attribute finden Sie in der Dokumentation hier .

Beispielcode:

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

Für weitere Details habe ich ein einfaches Tutorial erstellt hier das einen herunterladbaren Quellcode enthält.

4
Mr. Xymon

Sie müssen zuerst JMF installieren ( Download über diesen Link )

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

vergessen Sie nicht, JMF-JAR-Dateien hinzuzufügen

2
Kasun Shamentha

Durchsuchen Sie freshmeat.net nach JAVE (steht für Java Audio Video Encoder) Library (Link hier ). Es ist eine Bibliothek für diese Art von Dingen. Ich ziehe an Ich weiß nicht, ob Java hat eine native MP3-Funktion.

Sie müssen wahrscheinlich die mp3-Funktion und die wav-Funktion mit Vererbung und einer einfachen Wrapper-Funktion zusammenführen, wenn Sie beide Dateitypen mit einer Methode ausführen möchten.

1
Spencer Rathbun

Verwenden von MP3-Decoder/Player/Konverter Maven-Abhängigkeit.

import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;

import Java.io.FileInputStream;
import Java.io.FileNotFoundException;

public class PlayAudio{

public static void main(String[] args) throws FileNotFoundException {

    try {
        FileInputStream fileInputStream = new FileInputStream("mp.mp3");
        Player player = new Player((fileInputStream));
        player.play();
        System.out.println("Song is playing");
        while(true){
            System.out.println(player.getPosition());
        }
    }catch (Exception e){
        System.out.println(e);
    }

  }

}
0
Nikhil Chauhan

Um die MP3-Leseunterstützung zu Java Sound) hinzuzufügen, fügen Sie das mp3plugin.jar der JMF zum Laufzeitklassenpfad der Anwendung.

Beachten Sie, dass die Klasse Clip über Speicherbeschränkungen verfügt, die es für mehr als ein paar Sekunden von hoher Klangqualität ungeeignet machen.

0
Andrew Thompson