如何用Java播放声音文件

时间:2017-04-07 10:00:04

标签: java file audio

我在很多论坛和YouTube教程中搜索了一些简单的代码来播放声音文件(.mp3),但我发现的一切都不适合我。

我总是得到一个例外,它无法找到该文件或其他错误,但它总是以异常结束。

我可能先要配置一些东西吗?

CNC中 我再次尝试使用以下代码来显示我得到的内容:

Here is my code

添加JFXPanel后我得到了exeption:线程“main”中的异常MediaException:MEDIA_UNAVAILABLE:D:\ bip.mp3(系统无法找到文件)// 是的,我检查了路径是否正确。

2 个答案:

答案 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