JavaFX MediaPlayer Soundloop bauen

MrDLink

Mitglied
Hi,
ich wollte mit Hilfe des MediaPlayers eine Soundloop bauen, bestehend aus zwei Teilen, einem Intro-Teil und einem Loop-Teil. Jedoch wechselt bzw. loopt er immer mit einer kleinen, hörbaren verzögerung.
Bisher habe ich zwei Methoden ausprobiert.

1) Zwei MediaPlayer:
Java:
    private static MediaPlayer introPlayer;
    private static MediaPlayer loopPlayer;
  
    private SoundManager(){

    }
  
    public static void setSound(Media intro, Media loop){
        introPlayer = new MediaPlayer(intro);
        loopPlayer = new MediaPlayer(loop);
       
        introPlayer.setAutoPlay(true);
        loopPlayer.setCycleCount(MediaPlayer.INDEFINITE);
      
        inroPlayer.setOnEndOfMedia(new Runnable(){
            @Override
            public void run() {
               loopPlayer.play();
            }    
        });
        mediaPlayer.setStartTime(Duration.seconds(3.118));
    }

2) StartZeit versetzen:
Java:
    private static MediaPlayer mediaPlayer;
  
    private SoundManager(){

    }
  
    public static void setSound(Media sound){
        mediaPlayer = new MediaPlayer(sound);
        mediaPlayer.setAutoPlay(true);
        mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
      
      
        mediaPlayer.setOnPlaying(new Runnable(){
             @Override
             public void run() {
                   mediaPlayer.setStartTime(Duration.seconds(3.118));
        
             }  
        });
    }

Gibt es da noch weiter, bessere Lösungen?
 

dzim

Top Contributor
Kenn mich mit der API nicht so direkt aus, aber hast du mal überprüft, dass am Ende deiner Input-Datei eben keine Pause ist - vielleicht ist es dass ja schon...
 

MrDLink

Mitglied
Hmm, danke, aber das hat auch nicht geholfen.
Ich glaube das liegt am MediaPlayer selbst. Wenn ich die Loop-Datei mit setCycleCount(INDEFINITE) laufen lasse stockt er kurz vor jeder neuen Wiederholung.
 

dzim

Top Contributor
Ist ja krass: Wollte es gerade mal probieren, aber ich komme gar nicht so weit :eek:

Caused by: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
at application.MediaTestController.initialize(MediaTestController.java:41)
... 22 more
Caused by: com.sun.media.jfxmedia.MediaException: Could not create player!
at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:274)
at com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:118)
at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:467)
... 24 more
Exception running application application.Main

Bin unter Ubuntu unterwegs und obwohl laut OpenJDK/JFX Bug Tracker das Problem behoben sein soll, kann er bei mir kein libavcodec54 finden (so scheint es). Liegt vielleicht daran, das ich noch eine neuere ffmpeg Version zusätzlich drauf hab. Wie dem auch sei: Ich zerschieß mir dafür jetzt nicht das Set Up ;)
 

Ähnliche Java Themen

Neue Themen


Oben