Jetzt anmelden...

Login
Passwort
Registrieren

Java Blog

MP3 Dateien mit Java abspielen

Von Haus aus ist es nicht möglich, mit Java MP3-Dateien abzuspielen. Die Java-Standardbibliothek ist hierfür nämlich nicht vorgesehen. Keine Beziehungschancen also für Java und MP3? Nicht doch! Wir bringen die zwei schon zusammen.

Kommentare [0]

Stefan 02.04.2018

Infos zum Artikel

Kategorie Java
Autor Stefan
Datum 09.09.2018

Anleitung in Kurzform

  • Die javazoom-Bibliothek importieren.
  • Die Klasse MusikPlayer.java in das package unserers Java-Projekts kopieren.
  • Neues Objekt der Klasse Musikplayer erstellen und darauf die Methode starteAbspielen(String dateinameDerMp3) starten.

Vorbereitungen

Bevor es losgeht, müssen wir aber noch ein paar Vorbereitungen treffen - aber keine Sorge: Wenn Sie die Anleitung befolgen, haben wir im Hand und Drehen einen JAVA-MP3-Player.

1. Externe java-zoom-Bibliothek importieren

Besorgen wir uns also als erstes die javazoom-Klassen-Bibliothek für das Abspielen von MP3-Dateien. Die einzelnen Klassen sind in einer jar-Datei gespeichert. Eigentlich interessiert uns nur diese Datei. Sie können die Datei entweder auf javazoom.net oder direkt bei uns downloaden.

Als nächstes wählen wir in unserer IDE (Eclipse, IntelliJ) ein bestehendes Java-Projekt aus oder erzeugen ein neues.

In das ausgesuchte bzw. neu erstelle Java-Projekt müssen wir nun die externen Bibliotheksklassen mithilfe der gedownloadeten jar-Datei einbinden. Dies geht wie folgt:

  • IntelliJ: Klicken Sie in der Seitenleiste links ein Java-Projekt an. Gehen Sie anschließend im Programm-Menu auf file > project structure... > libraries. Klicken Sie im Project Structure-Menu auf das + Zeichen und fügen Sie jetzt die externe Klassenbibliothek dem Projekt hinzu, indem Sie unsere gedownloadete jar-Datei jl1.0.1.jar auswählen.
  • Eclipse: Wählen Sie in der Seitenleiste links ein Java-Projekt aus. Gehen Sie im Programm-Menu oben auf File > Properties. Es erscheint das Menu für die Properties. Wählen Sie darin Java Build Path > Libraries > Add External JARs... und fügen Sie die gedownloadete jar-Datei jl1.0.1.jar hinzu.

Nachdem wir die externe Bibliothek in unser Projekt eingebunden haben, müssen wir uns nicht mehr weiter mit ihr beschäftigen. Das ist ja das Gute an Java: Wir greifen auf schon ausprogrammierte Klassen zurück, die uns eine Funktionalität bereitstellen, die wir benötigen. Wir müssen den mp3-Player also nicht selbst schreiben, sondern nur noch einsetzen. Der nächste Punkt zeigt wie.

2. Klasse Musikplayer.java ins Projekt kopieren

In Ihrem Buch Java lernen mit blueJ haben die beiden Programmierer David Barnes und Michael Köllig die javazoom-Klassenbibliothek für ein eigenes mp3-Player-Programm vorgestellt. Herausgekommen ist u.a. eine Klasse namens MusikPlayer.java, die bereits die wichtigsten Funktionen der (doch recht komplexen) javazoom-Bibliothek herauszieht und sie schnell und einfach einsatzbereit macht.

Wir wollen keine doppelte Arbeit leisten und nutzen daher die Vorarbeit der beiden. Wir laden uns hierzu einfach die Klassen-Datei MusikPlayer.java runter und kopieren die Datei in MacOs bzw. Windows in den package-Ordner unseres Projekts, also: Projektname > src > paketname.

Die Klasse wird nun links innerhalb der Klassenübersicht von IntelliJ bzw. Eclipse erscheinen. Gegebenenfalls ist ein Refresh nötig.

Wichtig: Wir dürfen nicht vergessen, ganz oben im Code der Klasse MusikPlayer.java die package-Anweisung anzupassen.

Java mp3 intelliJ

3. MP3s bereitstellen

Nun brauchen wir nur noch ein paar mp3-Dateien. Diese kopieren wir in einen Ordner namens audio innerhalb unseres Java-Projekts.

Java mp3 intelliJ

Wenn wir diese 3 Schritte durchgezogen haben, heißt es schonmal: Anlage vorwärmen!

Los geht's: MP3 Dateien abspielen

Wir haben nun alle Voraussetzungen getroffen, um MP3-Dateien abzuspielen. Wir können etwa eine Startklasse mit Main-Methode erstellen. Darin instanziieren wir ein neues Objekt der Klasse MusikPlayer und rufen darauf die entsprechenden Methoden auf.

Zum Testen ist die Methode dateiAnspielen(String dateiname) sinnvoll. Sie macht es möglich, eine MP3 als Vorschau für ein paar Sekunden laufen zu lassen. Die Dauer liegt standardmäßig bei 500ms. Wir können in der Klasse MusikPlayer diesen Wert aber auch ändern. In den Parametern geben wir einen String ein, der sich aus dem Namen des oben erstellten Ordners (audio) sowie den Dateinamen zusammensetzt. Das Ganze sieht dann so aus:

package paket1;

public class Startklasse {

    public static void main(String args[]){
        MusikPlayer mp = new MusikPlayer();
        mp.dateiAnspielen("audio/CnC - mechanical man.mp3");
    }
}

Um einen Titel vollständig durchzuspielen gibt es die Methode starteAbspielen(final String dateiname) und für das Stoppen des Songs stop().

Programm erweitern

Machen wir unseren MP3-Player noch besser! Mit einer ArrayList etwa können wir eine eigene Playlist erstellen und einzelne Songs nach ihrer Index-Nummer suchen und abspielen. Wir können sogar eine Methode schreiben, die alle Songs der Playlist durchsucht und somit einen speziell gesuchten Song abspielt (z.B. spiele den Song namens Mechanical Man).

Um diese komplexere Funktionalität zu erreichen, sollten wir eine neue Klasse schreiben, etwa Playlist.java genannt, um unseren MP3-Player dahingehend zu erweitern. Wir haben das mal für Euch vorbereitet. Die Klasse sieht dann so aus:

package paket1;
import java.util.ArrayList;

public class Playlist {

MusikPlayer mp;
ArrayList songs;

public Playlist(){
    mp = new MusikPlayer();
    songs = new ArrayList<>();
}

// ArrayList füllen:
public void erstellePlaylist(){
    songs.add("audio/CnC - mechanical man.mp3");
    songs.add("audio/Deep Into The Code.mp3");
    songs.add("audio/Sign of Evil.mp3");
}

// Alle Songs der Liste kurz anspielen
public void alleSongsPreview(){
    for(String song : songs){
       mp.dateiAnspielen(song);
       }
}

// Song gezielt nach Index-Nummer abspielen
public void spieleSongNummer(int index){
    String dateiname = songs.get(index);
    mp.starteAbspielen(dateiname);
}

// Dateinamen aller Songs durchsuchen und ersten gefundenen Song abspielen
public void spieleSongName(String search){
    String suchwort = search.toLowerCase();
    boolean gefunden = false;
    int found =-1;

    for(int i = 0; i < songs.size() && !gefunden; i++){
        if(songs.get(i).toLowerCase().contains(suchwort)){
           gefunden = true;
           found = i;
           }
     }

     if(gefunden){
          spieleSongNummer(found);
          }
      else{
           System.out.println("Kein Song gefunden, der " + search + " beinhaltet.");
           }
    }

}

Die Methode erstellePlaylist() bewirkt, dass die im Konstruktor initiierte ArrayList mit drei String-Objekten gefüllt wird. Jedes String-Objekt gibt den relativen Speicherort sowie den Dateinamen unserer mp3-Datei an.

Mit der Methode alleSongsPreview() spielen wir alle Songs kurz an. Dies gelingt uns durch eine for-each-Schleife, die für jedes Schleifenobjekt die dateiAnspielen()-Methode ausführt.

Mit der Methode spieleSongNummer() können wir einen Song gezielt nach seiner Index-Position in der Array-List abspielen. Wir müssen hierzu lediglich einen gültigen int-Wert als Parameter übergeben.

Die komplexeste Methode stellt schließlich spieleSongName() dar. Mit dieser können wir nach einer Zeichenkette innerhalb eines Dateinamens suchen. Bei erfolgreicher Suche, wird dann die passende MP3 abgespielt. Dies funktioniert über eine for-Schleife, welche die ArrayList solange nach der gesuchten Zeichenkette durchsucht, bis sie diese im Dateinamen einer MP3 gefunden hat. Wenn es keine Übereinstimmung zwischen Suchbegriff und einem Dateinamen der ArrayList gibt, wird der else-Block aufgerufen.

Erstellen wir nun in der Startklasse (oder wo es Ihnen sonst Spaß macht) ein neues Playlist-Objekt und führen auf diesem testweise die Methoden aus:

package paket1;

public class Startklasse {

    public static void main(String args[]){
            Playlist playlist = new Playlist();
            playlist.erstellePlaylist();
            //playlist.alleSongsPreview();
            // playlist.spieleSongNummer(1);
            playlist.spieleSongName("Code");
            }
}

Wenn alles passt, wird die MP3 namens Deep Into The Code.mp3 abgespielt, denn die Zeichenkette "Code", die als String-Parameter der Methode spieleSongName() konnte im Dateinamen der MP3 gefunden werden.

Natürlich könnten wir unser MP3-Projekt immer weiter verbessern! Sinnvoll wäre etwa eine ArrayListe mit Song-Objekten anstatt mit Strings. Auch eine grafische Benutzeroberfläche wäre wünschenswert. Dies aber überlassen wir an dieser Stelle Ihrer Kreativität als Programmierer :-)

Kommentar schreiben

Nur angemeldete und aktivierte Benutzer können kommentieren.

Alle Kommentare

Es gibt bislang noch keine Kommentare zu diesem Thema.

switch/ case Anweisung

Benötigen wir eine Unterscheidung nach vielen Fällen empfehlen sich switch-case-Statements.

Konstruktoren bei Vererbung

Trainieren Sie ihre Konstruktoren-Skills

Operatoren einsetzen

Es gibt eine Vielzahl an Operatoren. Wir haben eine Übersicht erstellt

FALCONBYTE.NET

Handmade with 🖤️

© 2018, 2019 Stefan E. Heller

Impressum | Datenschutz

facebook programmieren lernen twitter programmieren lernen youtube programmieren lernen