MP3 in Java abspielen
Heute werden wir uns die Möglichkeiten ansehen, wie man MP3 in Java abspielen kann. Die nativen Bibliotheken von Java erlauben es uns nicht, Audio im MP3-Format abzuspielen, daher verwenden wir hier zwei externe Bibliotheken, die eine minimale Einrichtung erfordern.
Abspielen einer MP3-Datei mit JLayer
Im Folgenden erstellen wir eine Klasse namens MP3Player
und zwei Variablen, wobei die erste der String ist, der den Namen und den Pfad der abzuspielenden MP3-Datei enthält, und die zweite Variable das Objekt jlPlayer
der Klasse Player
ist. Dann generieren wir einen Konstruktor der Klasse MP3Player
und nehmen den mp3FileToPlay
String als Parameter und initialisieren die Klassenvariable.
Wir machen eine play()
-Methode, die mp3FileToPlay
nimmt und an den Konstruktor von FileInputStream
übergeben, der die Datei in einen InputStream
umwandelt, und dann übergeben wir dieses InputStream
-Objekt an BufferedInputStream
, der es konvertiert in einen BufferedInputStream
. Nun übergeben wir das Objekt bufferedInputStream
an den Konstruktor der Klasse Player
, der ein Objekt zurückgibt.
Beachten Sie, dass der Thread, in dem das Audio abgespielt wird, blockiert wird, bis die Audioverarbeitung abgeschlossen ist. Wir wollen den Hauptthread nicht blockieren, also erstellen wir einen neuen Thread()
und rufen darin die Methode run()
auf. In der Methode run()
rufen wir die Funktion play()
auf, die mit der Klasse Player
der Bibliothek geliefert wird. Um den Thread zu starten, rufen wir die Funktion start()
des Threads auf.
Nun initialisieren wir in der Methode main()
filename
mit dem MP3-Dateinamen und erzeugen dann ein Objekt der Klasse MP3Player
mit dem im Konstruktor übergebenen filename
. Um das Audio zu starten, rufen wir mp3Player.play()
auf. Danach erhalten wir das Objekt Scanner
und nehmen Eingaben vom Benutzer entgegen, wenn die Eingabe gleich stop
ist, dann rufen wir mp3Player.close()
auf, das die Methode close()
des Player
aufruft Klasse, und es stoppt die Musik.
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.Scanner;
import javazoom.jl.player.Player;
public class PlayMP3 {
public static void main(String[] args) {
String filename = "example.mp3";
MP3Player mp3Player = new MP3Player(filename);
mp3Player.play();
Scanner sc = new Scanner(System.in);
System.out.println("Write stop to stop the music: ");
if (sc.nextLine().equalsIgnoreCase("stop")) {
mp3Player.close();
}
}
}
class MP3Player {
private final String mp3FileToPlay;
private Player jlPlayer;
public MP3Player(String mp3FileToPlay) {
this.mp3FileToPlay = mp3FileToPlay;
}
public void play() {
try {
FileInputStream fileInputStream = new FileInputStream(mp3FileToPlay);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
jlPlayer = new Player(bufferedInputStream);
} catch (Exception e) {
System.out.println("Problem playing mp3 file " + mp3FileToPlay);
System.out.println(e.getMessage());
}
new Thread() {
public void run() {
try {
jlPlayer.play();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}.start();
}
public void close() {
if (jlPlayer != null)
jlPlayer.close();
}
}
Abspielen einer MP3-Datei mit JACo MP3Player
JACo MP3Player
ist eine externe Bibliothek, die wir in unser Projekt aufnehmen müssen, um sie nutzen zu können. Dies ist eine sehr kleine Bibliothek und einfach zu integrieren. Im folgenden Beispiel erstellen wir ein Objekt der Klasse MP3Player
, das eine Klasse aus der Bibliothek ist. Wir übergeben ein File
-Objekt im Konstruktor von MP3Player
. Wir rufen die Funktion play()
aus der MP3Player
-Klasse auf, um das Audio zu starten.
Um die Audioverarbeitung zu stoppen, überprüfen wir zunächst mit der Methode isStopped()
, ob das Audio gestoppt wurde, und wenn es gestoppt wurde, rufen wir Thread.sleep()
auf, das den Thread für einige Zeit anhält.
import jaco.mp3.player.MP3Player;
import java.io.File;
public class PlayMP3 {
public static void main(String[] args) {
try {
File f = new File("example.mp3");
MP3Player mp3Player = new MP3Player(f);
mp3Player.play();
while (!mp3Player.isStopped()) {
Thread.sleep(5000);
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn