我在很多论坛和YouTube教程中搜索了一些简单的代码来播放声音文件(.mp3),但我发现的一切都不适合我。
我总是得到一个例外,它无法找到该文件或其他错误,但它总是以异常结束。
我可能先要配置一些东西吗?
CNC中 我再次尝试使用以下代码来显示我得到的内容:
添加JFXPanel后我得到了exeption:线程“main”中的异常MediaException:MEDIA_UNAVAILABLE:D:\ bip.mp3(系统无法找到文件)// 是的,我检查了路径是否正确。
答案 0 :(得分:2)
为避免初始化异常,您必须调用 Application.launch()方法或只需实例化新的JFXPanel()类(即使它不用于任何东西)。这将在应用程序启动时启动JavaFxRuntime
所以在代码中添加以下行
final JFXPanel fxPanel = new JFXPanel();
导入以下包
import javafx.embed.swing.JFXPanel;
现在你的代码看起来像这样
import java.io.File;
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
public class Test {
public static void main(String args[]) {
final JFXPanel fxPanel = new JFXPanel();
String bip = "D://bip.mp3"; //sound file path
Media hit = new Media(new File(bip).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();
}
}
答案 1 :(得分:0)
也许发布特定错误可以解决您的问题,但无论如何我认为this可以帮助您。而且我也实现了它并且对我来说非常有效。
我就是这样做的:
List<Media> mediaList = new ArrayList<>();
FileManager files = new FileManager();
files.loadMediaFiles(new File("your music directory goes here.."));
files.getFiles().stream().forEach((media) -> {
mediaList.add(new Media(media));
});
MediaPlayer mediaPlayer = new MediaPlayer(playList.get(0));
MediaView mediaView = new MediaView(mediaPlayer);
playPauseButton.setOnAction((ActionEvent event) -> {
if (mediaPlayer.getStatus() == Status.PAUSED || mediaPlayer.getStatus() == Status.READY || mediaPlayer.getStatus() == Status.STOPPED) {
mediaPlayer.play();
playPauseButton.setGraphic(pause);
} else {
mediaPlayer.pause();
playPauseButton.setGraphic(play);
}
});
您还可以在github上查看我的app。