JavaFX MediaPlayer 切换到播放状态,但不播放 mp3
JavaFX MediaPlayer switches to state PLAYING, but doesn't play mp3
我正在尝试使用 JavaFX MediaPlayer 播放 mp3 文件。它加载文件并切换到 PLAYING 状态而没有任何错误,但它不播放文件并且 currentTimeProperty 也没有改变。我做错了什么?
public class Test extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
MediaPlayer player = new MediaPlayer(new Media(
new File("sounds/sound.mp3").toURI().toString()
));
Button btn = new Button("Play");
btn.setOnAction(event -> player.play());
VBox pane = new VBox(10, btn);
pane.setAlignment(Pos.CENTER);
Scene scene = new Scene(pane, 100, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
}
我想你忘了一部分试试这个
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
MediaPlayer player = new MediaPlayer(new Media(
new File("sounds/sound.mp3").toURI().toString()
));
Button btn = new Button("Play");
btn.setOnAction(event -> player.play());
VBox pane = new VBox(10, btn);
pane.setAlignment(Pos.CENTER);
Scene scene = new Scene(pane, 100, 100);
MediaView mediaView = new MediaView(player);
((Group)scene.getRoot()).getChildren().add(mediaView);
primaryStage.setScene(scene);
primaryStage.show();
}
您提供的代码工作正常,因为它适用于 me.I 我不是 MediaPlayer 和 MediaView 的专家 类 但假设您正确加载媒体并且没有获得 MediaException: MEDIA_UNAVAILABLE
当您加载 mp3 文件时,有两个可能的原因导致您的问题。
- 不支持您的文件格式。查看有关 Java 的文档
supported formats 你会看到支持的mp3格式
是:原始 MPEG-1、2 和 2.5 音频;第一、二、三层;全部
支持的采样频率和比特率组合。因此,如果
您的文件不受支持,您将无法播放它。现在轮到你
可以使用下面的代码检查是否有任何类型的错误。
player.setOnError(() -> System.out.println("Error : " + player.getError().toString()));
- 我过去在使用新的 windows 操作系统时遇到过类似的问题。如果您使用 Windows,您的操作系统可能没有必要的编解码器来播放 video/audio。这样,您的 JavaFX 应用程序将尝试播放音频,但您不会听到任何声音。要解决这个问题,您可以尝试安装一些我不熟悉的音频编解码器,但我建议您使用 K-Lite 编解码器包(进行 google 搜索,您会没事的)
我正在尝试使用 JavaFX MediaPlayer 播放 mp3 文件。它加载文件并切换到 PLAYING 状态而没有任何错误,但它不播放文件并且 currentTimeProperty 也没有改变。我做错了什么?
public class Test extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
MediaPlayer player = new MediaPlayer(new Media(
new File("sounds/sound.mp3").toURI().toString()
));
Button btn = new Button("Play");
btn.setOnAction(event -> player.play());
VBox pane = new VBox(10, btn);
pane.setAlignment(Pos.CENTER);
Scene scene = new Scene(pane, 100, 100);
primaryStage.setScene(scene);
primaryStage.show();
}
}
我想你忘了一部分试试这个
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
MediaPlayer player = new MediaPlayer(new Media(
new File("sounds/sound.mp3").toURI().toString()
));
Button btn = new Button("Play");
btn.setOnAction(event -> player.play());
VBox pane = new VBox(10, btn);
pane.setAlignment(Pos.CENTER);
Scene scene = new Scene(pane, 100, 100);
MediaView mediaView = new MediaView(player);
((Group)scene.getRoot()).getChildren().add(mediaView);
primaryStage.setScene(scene);
primaryStage.show();
}
您提供的代码工作正常,因为它适用于 me.I 我不是 MediaPlayer 和 MediaView 的专家 类 但假设您正确加载媒体并且没有获得 MediaException: MEDIA_UNAVAILABLE
当您加载 mp3 文件时,有两个可能的原因导致您的问题。
- 不支持您的文件格式。查看有关 Java 的文档 supported formats 你会看到支持的mp3格式 是:原始 MPEG-1、2 和 2.5 音频;第一、二、三层;全部 支持的采样频率和比特率组合。因此,如果 您的文件不受支持,您将无法播放它。现在轮到你 可以使用下面的代码检查是否有任何类型的错误。
player.setOnError(() -> System.out.println("Error : " + player.getError().toString()));
- 我过去在使用新的 windows 操作系统时遇到过类似的问题。如果您使用 Windows,您的操作系统可能没有必要的编解码器来播放 video/audio。这样,您的 JavaFX 应用程序将尝试播放音频,但您不会听到任何声音。要解决这个问题,您可以尝试安装一些我不熟悉的音频编解码器,但我建议您使用 K-Lite 编解码器包(进行 google 搜索,您会没事的)