JavaFX MediaPlayer spielt MP3 nicht ganz

dyo

Mitglied
Hey,

Ich habe ein einfaches Programm erstellt, welches ein MP3 abspielen soll:
Java:
public class Main extends Application {

    public Stage primaryStage;

    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
        mainWindow();
    }

    private void mainWindow() {
        try {
            // MainWindow.fxml in den Loader laden...
            FXMLLoader loader = new FXMLLoader(Main.class.getClassLoader().getResource("view/MainWindow.fxml"));
            AnchorPane pane = loader.load();

            // Controller setzten und dem Controller this zuweisen...
            MainWindowController mainWindowController = loader.getController();
            mainWindowController.setMain(this);

            // Die Szene definieren. 1280x720 ist die größe.
            Scene scene = new Scene(pane, 1280, 720);

            // Die Szene auf der Bühne setzen und anzeigen lassen...
            this.primaryStage.setScene(scene);
            this.primaryStage.show();
      
            //MP3 laden
            MediaPlayer audio = new MediaPlayer(new Media(new File("src/musik/lied.mp3").toURI().toString()));
            audio.setAutoPlay(true);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Allerdings wird das Lied nie zu Ende gespielt.
Wenn ich die Bitrate bzw Abtastrate der MP3 Datei verringere, so spielt der MediaPlayer das Lied länger... Allerdings bin ich mittlerweile an einen Punkt angelangt, wo sich das Lied nur noch scheiße anhört 🙁

Gibt es da eine bessere Lösung?

EDIT: MainWindow.fxml und MainWindowController sind sogut wie leer - dort passiert nichts.

Viele Grüße,
dyo
 
Zuletzt bearbeitet von einem Moderator:
Anhand deines Codestücks lässt sich leider rein gar nichts erkennen. Gerade einmal wie du deine Klasse aufrufst.
Was sie aber macht bleibt uns verborgen und daher können wir nur raten wo das Problem liegt 😉

Etwas mehr (und aussagekräftiger) Code wäre sehr hilfreich!
 
Eigentlich dachte ich dein Programm wäre die Klasse MediaPlayer 😉 und hätte mir erwartet von dieser etwas Code zu sehen.
Habe erst jetzt gecheckt das es sich dabei um eine Framework Klasse von JavaFX handelt -> mein Fehler.

Aber eine genauere Fehlerbeschreibung wäre praktischer. Ich kann mir unter "Allerdings wird das Lied nie zu Ende gespielt" wenig vorstellen.
Wenn von der Audio Datei keine Daten mehr gelesen werden können dann kann der MediaPlayer theoretisch auch nichts mehr abspielen.
 
Nehmen wir an das Lied geht 3:00 Minuten.
Wenn ich nun das Programm starte, dann läuft die Musik ca. 1:00 und dann ist Ruhe.
Das tritt bei allen MP3's auf, mit denen ich es bisher probiert habe.

Wenn ich nun mit einen anderen Programm die Bitrate einer MP3 verringere, dann wird diese MP3 kleiner und mein Programm spielt jetzt statt nur 1:00 vllt 1:30 bevor es still wird.

Ich habe daher den verdacht, dass MediaPlayer nur eine bestimmte Datenmenge "in sich aufnehmen kann". Ich glaube aber nicht, dass dieser Wert bei 1-2 mb liegt...

Vielleicht ist es ja jetzt etwas klarer 🙂
 
Diesen Link habe ich vorher schon gefunden. Aber da deine genaue Fehlerbeschreibung nicht kannte wollte ich ihn noch nicht posten.

(Hört sich nach einem ähnlichen Problem an)
http://stackoverflow.com/questions/30789973/javafx-mediaplayer-stops-when-file-isnt-complete
Dein Methode "mainWindow" ist irgendwann abgearbeitet und dein MediaPlayer Objekt wird nicht mehr referenziert.
Sprich irgendwann räumt der GarbageCollector es auf -> auch wenn etwas abgespielt wird

Lösung -> Definiere den MediaPlayer als Attribut deiner Application, diese sollte ja bestehen solange das Fenster offen ist.
 
Danke für den Tipp, ich werde es gleich mal ausprobieren 🙂
Das ich darauf nicht gekommen bin ... 😵

EDIT: Es lag doch tatsächlich daran 😀 Ich Danke Dir für Deine Hilfe 🙂
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben