几个小时以来,我一直在尝试添加一个打开我的mp3文件的方法 并在队列中逐个打开它们。但我不知道该怎么做。当谈到单个文件时,打开它并播放对我来说不是问题。 所以我在考虑来自Media(JavaFX)类的线程或getDuration方法。 当我使用getDuration时,我收到了Nan,我写道我需要等待setOnReady用于我的mediaPlayer对象,所以我创建了一个Thread.sleep,但结果与之前相同。提前致谢! 这是一些代码(我知道,我描述的问题有点令人困惑):
字段
private static MediaPlayer mediaPlayer;
private static FileChooser fileChooser;
private static Stage stage;
private List<File> selectedFiles;
private String path;
播放方法
@FXML
void play() {
Media media;
try {
for (int i = 0; i < selectedFiles.size(); i++) {
Thread thread = new Thread();
path = selectedFiles.get(i).getAbsolutePath().replace("\\", "/");
media = new Media("file:///" + path);
mediaPlayer = new MediaPlayer(media);
Thread.sleep(5000);
mediaPlayer.setOnReady(() -> mediaPlayer.play());
System.out.println(media.getDuration().toSeconds());
thread.setName("thread " + i);
System.out.println(thread.getName());
}
}catch (Exception e){
System.out.println("You need to choose the music file like mp3 etc");
System.out.println("The error name:\n"+e);
}
}
MultipleDialog方法
enter code here @FXML
void openDirectory(){
try {
fileChooser = new FileChooser();
FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter("mp3 files (*.mp3)", "*.mp3");
fileChooser.getExtensionFilters().add(extensionFilter);
selectedFiles = fileChooser.showOpenMultipleDialog(null);
}catch (Exception e){
System.out.println("No file");
}
答案 0 :(得分:1)
可能有一种非常简单的方法可以做到这一点。
将您打开的所有文件存储到列表中。播放完媒体文件后(endOfMedia),播放列表中的下一个文件。
祝你好运!