Mp3 Player funktioniert nicht

Habe einen Kommandozeilen Mp3 Player gebastelt:
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.mpatric.mp3agic.ID3v1;
import com.mpatric.mp3agic.ID3v2;
import com.mpatric.mp3agic.Mp3File;

import javazoom.jl.player.advanced.AdvancedPlayer;
import javazoom.jl.player.advanced.PlaybackEvent;
import javazoom.jl.player.advanced.PlaybackListener;

public class PlayerForMp3 {
	private BufferedReader bri = new BufferedReader(new InputStreamReader(System.in));
	private File[] mp3s = null;
	private int index = 0;
	private AdvancedPlayer ap = null;
	private boolean isPlaying = false;

	public PlayerForMp3() throws IOException {
		System.out.println("Bitte das Hauptverzeichnis (Root) eingeben:");
		String fn = bri.readLine();
		if (fn == null || fn.isBlank()) {
			return;
		}
		mp3s = getMp3s(new File(fn));
		play(mp3s[0]);
		// Press s for stop, b for begin, n (number) for next, p for previous or l for list:
		while (true) {
			String l = bri.readLine();
			if (l == null || l.isBlank()) {
				break;
			}
			if (isPlaying) {
				ap.stop();
			}
			switch (l.charAt(0)) {
			case 's':
				break;
			case 'b':
				play(mp3s[index]);
				break;
			case 'n':
				index = index + getI(l).orElse(1);
				play(mp3s[index]);
				break;
			case 'p':
				play(mp3s[--index]);
				break;
			case 'l':
				for (int i = 0; i < mp3s.length; i++) {
					if (i == index) {
						System.out.print(">> ");
					}
					System.out.println((i + 1) + ": " + mp3s[i].getName());
				}
				break;
			default:
				break;
			}
		}
	}

	private Optional<Integer> getI(String l) {
		Pattern p = Pattern.compile("-?\\d+");
		Matcher m = p.matcher(l);
		if (m.find()) {
			try {
				return Optional.of(Integer.parseInt(m.group()));
			} catch (NumberFormatException ignore) {
			}
		}
		return Optional.empty();
	}

	private void play(final File file) {
		isPlaying = true;
		new Thread(new Runnable() {
			public void run() {
				try (FileInputStream fis = new FileInputStream(file)) {
					ap = new AdvancedPlayer(fis);
					ap.setPlayBackListener(new PlaybackListener() {
						@Override
						public void playbackFinished(PlaybackEvent evt) {
							System.out.println("Stop playing: " + file.getName());
							isPlaying = false;
						}
					});
					System.out.println("Start playing: " + file.getName());

					Mp3File mp3file = new Mp3File(file);
					System.out.println("Length of this mp3 is: " + mp3file.getLengthInSeconds() + " seconds");
					System.out.println("Bitrate: " + mp3file.getBitrate() + " kbps " + (mp3file.isVbr() ? "(VBR)" : "(CBR)"));
					System.out.println("Sample rate: " + mp3file.getSampleRate() + " Hz");
					System.out.println("Has ID3v1 tag?: " + (mp3file.hasId3v1Tag() ? "YES" : "NO"));
					System.out.println("Has ID3v2 tag?: " + (mp3file.hasId3v2Tag() ? "YES" : "NO"));
					System.out.println("Has custom tag?: " + (mp3file.hasCustomTag() ? "YES" : "NO"));
					if (mp3file.hasId3v1Tag()) {
						ID3v1 id3v1Tag = mp3file.getId3v1Tag();
						System.out.println("Track: " + id3v1Tag.getTrack());
						System.out.println("Artist: " + id3v1Tag.getArtist());
						System.out.println("Title: " + id3v1Tag.getTitle());
						System.out.println("Album: " + id3v1Tag.getAlbum());
						System.out.println("Year: " + id3v1Tag.getYear());
						System.out.println("Genre: " + id3v1Tag.getGenre() + " (" + id3v1Tag.getGenreDescription() + ")");
						System.out.println("Comment: " + id3v1Tag.getComment());
					}
					if (mp3file.hasId3v2Tag()) {
						ID3v2 id3v2Tag = mp3file.getId3v2Tag();
						System.out.println("Track: " + id3v2Tag.getTrack());
						System.out.println("Artist: " + id3v2Tag.getArtist());
						System.out.println("Title: " + id3v2Tag.getTitle());
						System.out.println("Album: " + id3v2Tag.getAlbum());
						System.out.println("Year: " + id3v2Tag.getYear());
						System.out.println("Genre: " + id3v2Tag.getGenre() + " (" + id3v2Tag.getGenreDescription() + ")");
						System.out.println("Comment: " + id3v2Tag.getComment());
						System.out.println("Lyrics: " + id3v2Tag.getLyrics());
						System.out.println("Composer: " + id3v2Tag.getComposer());
						System.out.println("Publisher: " + id3v2Tag.getPublisher());
						System.out.println("Original artist: " + id3v2Tag.getOriginalArtist());
						System.out.println("Album artist: " + id3v2Tag.getAlbumArtist());
						System.out.println("Copyright: " + id3v2Tag.getCopyright());
						System.out.println("URL: " + id3v2Tag.getUrl());
						System.out.println("Encoder: " + id3v2Tag.getEncoder());
						byte[] albumImageData = id3v2Tag.getAlbumImage();
						if (albumImageData != null) {
							System.out.println("Have album image data, length: " + albumImageData.length + " bytes");
							System.out.println("Album image mime type: " + id3v2Tag.getAlbumImageMimeType());
						}
					}

					ap.play();
				} catch (Exception e) {
					System.out.println(e.getMessage());
				}
			}
		}).start();
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("Press s for stop, b for begin, n (number) for next, p for previous or l for list:");
	}

	private File[] getMp3s(File mf) throws IOException {
		final ArrayList<File> list = new ArrayList<>();
		Files.walkFileTree(mf.toPath(), new SimpleFileVisitor<Path>() {

			public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
				return FileVisitResult.CONTINUE;
			}

			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
				File f = file.toFile();
				if (f.isFile() && f.getName().toLowerCase().endsWith(".mp3")) {
					list.add(f);
				}
				return FileVisitResult.CONTINUE;
			}

			public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
				return FileVisitResult.CONTINUE;
			}
		});
		return list.toArray(new File[0]);
	}

	public static void main(String[] args) {
		try {
			new PlayerForMp3();
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
	}
}

Folgende maven dependencies:
Code:
<!-- https://mvnrepository.com/artifact/javazoom/jlayer -->
<dependency>
	<groupId>javazoom</groupId>
	<artifactId>jlayer</artifactId>
	<version>1.0.1</version>
</dependency>

<dependency>
	<groupId>com.mpatric</groupId>
	<artifactId>mp3agic</artifactId>
	<version>0.9.1</version>
</dependency>

Das Problem ist aber, dass er nicht automatisch die nächste Mp3 abspielt, sobald ein Sound fertig ist, und außerdem zeigt er den aktuellen Abspielfortschritt nicht an. Wie kann ich das verbessern?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Adobe Shockwave Player importieren Allgemeine Java-Themen 1
D Java Musik Player Lautstärke Allgemeine Java-Themen 1
G Desktop open() - Problem mit Media Player Allgemeine Java-Themen 4
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
T Java Video Player Allgemeine Java-Themen 9
B Datentypen wav Dateien abspielen mit JMF, Clip und Player klappt nicht. Lösung Codec? Allgemeine Java-Themen 13
B Datentypen JMF: Player LinkedList sinnvoll? ca 30 kurze Sounddateien Allgemeine Java-Themen 3
J VLC-Player steuern Allgemeine Java-Themen 5
P Windows Media Player starten / finden Allgemeine Java-Themen 2
W JMF- Player.getDuration() Funktion spinnt Allgemeine Java-Themen 2
chriscrown Video Cutter/Player für speziellen H.264-Codec Allgemeine Java-Themen 2
multiholle MP3-Player mit Grundfunktionen Allgemeine Java-Themen 6
chriscrown MP3-Player mit jLayer --> Im Track vorwärts springen Allgemeine Java-Themen 6
P MP3-Player Library: MP3 abspielen und ID-Tags auslesen Allgemeine Java-Themen 12
G Java auf dem MP3 Player Allgemeine Java-Themen 2
DeeDee0815 OGG-Player Allgemeine Java-Themen 3
M Player mit JMF Allgemeine Java-Themen 4
S TicTacToe KI-Player mit Heuristik Allgemeine Java-Themen 3
M CD Player in Java Allgemeine Java-Themen 4
thE_29 Java EventRecorder/Player Allgemeine Java-Themen 7
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
F Getter Methode aufrufen funktioniert nicht Allgemeine Java-Themen 1
N Regulärer Ausdruck funktioniert nicht Allgemeine Java-Themen 6
Lukas2904 Wie funktioniert ein KeyLogger? Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
1Raini Java if-Abfrage funktioniert nicht! Allgemeine Java-Themen 3
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
I Wieso funktioniert das nich? Allgemeine Java-Themen 5
Dann07 MP3 Datei abspielen funktioniert nicht Allgemeine Java-Themen 6
O Aus JAR-Datei erstellte EXE-Datei funktioniert nicht Allgemeine Java-Themen 10
X JNA funktioniert nicht mehr Allgemeine Java-Themen 4
bueseb84 FolderWatcher mit WatchService funktioniert nur bedingt Allgemeine Java-Themen 5
Drachenbauer Division mit Int funktioniert nicht Allgemeine Java-Themen 3
O docx-Datei erzeugung mit DocXStamper funktioniert nicht Allgemeine Java-Themen 2
F Schleife funktioniert nicht richtig Allgemeine Java-Themen 13
T Split() Methode funktioniert nicht?! Allgemeine Java-Themen 11
L Tesseract-OCR 4.0 unter Linux funktioniert nicht Allgemeine Java-Themen 3
J Wie konkret funktioniert das Modulsystem unter Java 11? Allgemeine Java-Themen 4
J Neuronales Netz funktioniert mal und mal nicht. Allgemeine Java-Themen 3
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
J FTPSClient funktioniert nicht Allgemeine Java-Themen 4
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
M Operatoren Warum funktioniert diese überprüfung nicht? Allgemeine Java-Themen 7
R jar-Datei funktioniert nicht Allgemeine Java-Themen 2
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
R Verschlüsselung funktioniert nicht Allgemeine Java-Themen 5
RalleYTN requires transitive funktioniert nicht? Allgemeine Java-Themen 7
R Bruteforce hashes mit multithreading. Funktioniert das so? Allgemeine Java-Themen 0
P Best Practice Wieso funktioniert der Modulo - Operator nicht? Allgemeine Java-Themen 2
HarleyDavidson Eigener PropertyChangeListener funktioniert einfach nicht Allgemeine Java-Themen 3
J Exclude funktioniert nicht Allgemeine Java-Themen 2
K .jar funktioniert nicht vollständig Allgemeine Java-Themen 1
P Java https proxy (-Dhttps.proxyHost) Start-Parameter funktioniert nicht? Allgemeine Java-Themen 2
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
O Fahrenheit/Celsius Converter funktioniert nicht Allgemeine Java-Themen 2
M Serialisierung funktioniert nicht Allgemeine Java-Themen 9
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
J Arrays auf gleichheit untersuchen funktioniert nicht Allgemeine Java-Themen 11
P GUI: ArrayList anzeigen funktioniert nicht Allgemeine Java-Themen 5
H Timer funktioniert nicht? Allgemeine Java-Themen 3
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
O Mein JButton Array funktioniert nicht Allgemeine Java-Themen 3
R Erste Schritte Object reference funktioniert nicht. Wie mach ichs richtig? Allgemeine Java-Themen 3
J If Abfrage funktioniert nicht Allgemeine Java-Themen 4
R Objekt funktioniert nicht auf iOS Allgemeine Java-Themen 15
U PersistenceManager.createEntityManager funktioniert nicht Allgemeine Java-Themen 3
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
M Eigene forEach()-Methode funktioniert nicht. Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
JG12111989 Auswertung von Fragebogen funktioniert nicht! Allgemeine Java-Themen 7
M Primzahlberechnung funktioniert nicht. Allgemeine Java-Themen 4
A JFreeChart funktioniert nicht :( Allgemeine Java-Themen 6
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
A Debugger im Java-Editor funktioniert nicht Allgemeine Java-Themen 5
B DB-Zugriff einer Webanwendung funktioniert nicht mit Java 7 Allgemeine Java-Themen 2
B Web-Anwendung funktioniert mit Java 1.8, aber nicht mit Java 1.7 (auf Client) Allgemeine Java-Themen 5
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
P Wie funktioniert das Feedback eines Klicks auf eine Java GUI Allgemeine Java-Themen 10
F JTextField funktioniert nicht Allgemeine Java-Themen 6
Athena Programm funktioniert nur beim Debugging korrekt, sonst nicht. Allgemeine Java-Themen 1
S CSV Eintrag der nächsten Zeile auslesen funktioniert nicht Allgemeine Java-Themen 8
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
G Verschlüsselungsalgorythmus funktioniert nicht Allgemeine Java-Themen 2
buggy84 Ausführen einer Batch mit Parameterübergabe funktioniert nicht richtig Allgemeine Java-Themen 18
G Befehl funktioniert in Eclipse allerdings nicht in einer Jar-Datei Allgemeine Java-Themen 3
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
W getResources funktioniert nur in Eclipse, nicht in JAR Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben