cristyan77
cristyan77

Reputation: 1

Video player file chooser select and play video file

I made a video player and I created a load file button to select and play another video files but when I selected another video file it plays the same video file How can I play another video file ? Here is my code:

package application;

import java.io.File;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.FileChooser;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.scene.control.Slider;
import javafx.scene.media.Media;


public class MainController implements Initializable {
@FXML private MediaView mv;
@FXML private MediaPlayer mp;
@FXML private Media me;
@FXML private Slider volumeSlider;


public void initialize(URL arg0, ResourceBundle arg1) {
    String path = new File("C:\\Users\\Cristyan\\Desktop\\Funny dog.mp4").getAbsolutePath();
    me = new Media(new File(path).toURI().toString());
    mp = new MediaPlayer(me);
    mv.setMediaPlayer(mp);

    DoubleProperty width = mv.fitWidthProperty();
    DoubleProperty height = mv.fitHeightProperty();
    width.bind(Bindings.selectDouble(mv.sceneProperty(), "width"));
    height.bind(Bindings.selectDouble(mv.sceneProperty(), "height"));
    volumeSlider.setValue(mp.getVolume()*100);
    volumeSlider.valueProperty().addListener(new InvalidationListener() {

        @Override
        public void invalidated(Observable observable) {
            mp.setVolume(volumeSlider.getValue() / 100);

        }

    });
}

public void play(ActionEvent event) {
    mp.play();
    mp.setRate(1);
}
public void pause(ActionEvent event) {
    mp.pause();
}
public void fast(ActionEvent event) {
    mp.setRate(2);
}
public void slow(ActionEvent event) {
    mp.setRate(.5);
}
public void reload(ActionEvent event) {
    mp.seek(mp.getStartTime());
    mp.play();
}
public void stop(ActionEvent event) {
    mp.seek(mp.getStartTime());
    mp.stop();
}

public void loadfile(ActionEvent event) {
    FileChooser fc = new FileChooser();
    fc.setInitialDirectory(new File ("C:\\Users\\Cristyan\\Desktop"));
    fc.getExtensionFilters().addAll(
            new ExtensionFilter("Video Files", "*.mp4"));
    File selectedFile = fc.showOpenDialog(null);
            if(selectedFile != null) {
                mp.play();
                }

    else {
        System.out.println("file is not valid");
    }

}

}

Upvotes: 0

Views: 815

Answers (1)

JFPicard
JFPicard

Reputation: 5168

After selecting your file, in that line: File selectedFile = fc.showOpenDialog(null); you must use it in your player like this:

   File selectedFile = fc.showOpenDialog(null);
   if(selectedFile != null) {
      me = new Media(selectedFile.toURI().toString());
      mp = new MediaPlayer(me);
      mv.setMediaPlayer(mp);
      mp.play();
   }

Upvotes: 1

Related Questions