当前位置: 首页 > 知识库问答 >
问题:

如何在 Java 中播放声音文件

宁良平
2023-03-14

我在许多论坛和YouTube教程中搜索了一些简单的代码来播放声音文件(.mp3),但我找到的所有内容都不适合我。

我总是收到异常,它找不到文件或其他错误,但它总是以异常结束。

有什么我必须先配置的吗?

-编辑- 我再次尝试以下代码来显示我得到的解释:

这是我的代码

添加JFXPanel后,我得到了异常:线程“main”中的异常MEDIA Exception:MEDIA _ UNAVAILABLE :D:\ bip . MP3(系统找不到文件)//是的,我检查了路径是否正确。

共有2个答案

谢鸿
2023-03-14

也许发布一个特定的错误可以解决你的问题,但无论如何,我认为这可以帮助你。我也实现了它,非常适合我。

我是这样做到的:

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上查看我的应用。

鲁阳焱
2023-03-14

为了避免初始化异常,您必须调用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();

  }
}
 类似资料:
  • 问题内容: 我希望能够在程序中播放声音文件。我应该去哪里看? 问题答案: 我写了下面的代码,效果很好。但我认为它仅适用于格式。

  • 我希望能够在我的程序中播放声音文件。我应该去哪里?

  • 问题内容: Octave似乎假设某个特定的声音播放实用程序将在系统上可用,但似乎没有提供指定备用声音的功能。在以下错误中,Octave正在寻找,这不是在所有系统上都可用的实用程序。 八度:38>声音(beamformed_20) sh:ofsndplay:找不到命令 是否可以使用Octave配置设置或代码片段来指定适合系统的实用程序? 问题答案: 在我的一台Linux机器上,我创建了以下ofsnd

  • 问题内容: 这是我用来在我的react应用程序中使用url(this.url)播放声音的代码。当我按下播放按钮时,它给我一个错误 我不确定为什么会这样,因为我没有看到任何未定义的状态。一个;; 状态已经声明。 我是新来的反应者,所以我可能会错过一些非常重要的东西。 请帮忙! 问题答案: 我稍微改进了Jaxx的版本,使其包含一个,以便在音频结束时重置按钮。 ES6类属性语法 挂钩版本(反应16.8+

  • 问题内容: 我正在尝试将文本语音转换应用程序与其他开发人员共享,但是我现在遇到的问题是Docker容器无法在主机上找到声卡。 当我尝试在Docker容器中播放WAV文件时 我想主要的问题是docker容器无法到达主机上的声卡。 到目前为止,我有 我在docker容器中安装了alsa-utils和大多数alsa依赖项。 通过指定运行容器时 添加 我不确定docker是否可以做到这一点(我不确定如何将

  • 播放(播放音效/播放录音)