我正在尝试使用JavaFX播放mp3文件,但是某些mp3文件不起作用。当我尝试播放它们时,它们要么停止在0ms处,要么停止于某个看似随机的数字(例如78ms),但是同一文件将在一致的时间停止。无论如何,在反复试验中,媒体播放器的状态始终为PLAYING
。这是我大多数mp3文件的问题,我不知道为什么。这是我用来运行这些测试的代码:
package mediatest;
import java.io.File;
import java.net.URISyntaxException;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
public class MediaTest extends Application {
private static MediaPlayer mediaPlayer;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws URISyntaxException {
FileChooser fc = new FileChooser();
File file = fc.showOpenDialog(null);
String path = file.getAbsolutePath();
System.out.println(path);
path = path.replace("\\", "/");
Media media = new Media(new File(path).toURI().toString());
mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
MediaView mediaView = new MediaView(mediaPlayer);
System.out.println(mediaPlayer.getStatus());
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
Button btn = new Button("press");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent e) {
mediaPlayer.play();
System.out.println(mediaPlayer.getStatus());
System.out.println(mediaPlayer.getVolume());
System.out.println(mediaPlayer.currentTimeProperty());
}
});
grid.add(btn, 0,0);
Scene scene = new Scene(grid, 300, 275);
primaryStage.setScene(scene);
primaryStage.setTitle("Audio Player 1");
primaryStage.setWidth(200);
primaryStage.setHeight(200);
primaryStage.show();
}
}
您选择一个文件,它将自动播放。您可以按一下按钮查看它是否正在播放以及歌曲的当前时间。这是我按错误文件上的按钮时的输出:
PLAYING
1.0
ReadOnlyObjectProperty [bean: javafx.scene.media.MediaPlayer@109dde8a, name: currentTime, value: 78.367345 ms]
当我尝试播放该文件时,每次按下该按钮都具有相同的输出。发生了什么事,我该如何解决?