java - Mp3 播放器 JavaFX

标签 java javafx media-player scenebuilder

几个小时以来,我一直在尝试添加一种打开我的 mp3 文件的方法 并在队列中一一打开它们。但我不知道该怎么做。当涉及到单个文件时,我打开并播放不是问题。 所以我正在考虑 Media(JavaFX) 类中的线程或 getDuration 方法。 当我使用 getDuration 时,我收到 Nan,我写道我需要等待 mediaPlayer 对象的 setOnReady,因此我创建了 Thread.sleep,但结果与之前相同。提前致谢! 这是一些代码(我知道,我描述的问题有点令人困惑):

Fields

private static MediaPlayer mediaPlayer;
private static FileChooser fileChooser;
private static Stage stage;
private List<File> selectedFiles;
private String path;

Play method

@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 method

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");
    }

最佳答案

可能有一种非常简单的方法可以做到这一点。

将您打开的所有文件存储到列表中。媒体文件播放完毕 (endOfMedia) 后,播放列表中的下一个文件。

祝你好运!

关于java - Mp3 播放器 JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49862216/

相关文章:

java - 自定义 ListView 项目选择不起作用

Java如何从另一种方法在JPanel上绘图?

java - 将项目导出到 jar 文件,包括 javadoc

javafx - 在 Canvas 上绘制 ArcTo

android - 从上下文 Assets 中的 Uri 加载 MediaPlayer

Java ArrayList.contains() 和 add() 方法

JavaFX 和 ProgressIndicator 以及 fxml

java - ChangeListener 功能用于检查带有时间延迟/或其他解决方案的键入值

ios - 如何在 iOS 中使用 MPMoviePlayerController 播放视频流

c# - 我如何播放音频并匹配文本框中的所有文本