如何在 Java 中播放声音文件
Posted
技术标签:
【中文标题】如何在 Java 中播放声音文件【英文标题】:How to play a sound file in Java 【发布时间】:2017-04-07 10:00:03 【问题描述】:我在许多论坛和 YouTube 教程中搜索了一些简单的代码来播放声音文件 (.mp3),但我发现的所有内容都不适合我。
我总是得到它找不到文件或其他错误的异常,但它总是以异常结束。
有什么我必须先配置的吗?
-编辑- 我再次尝试了以下代码以显示我得到了什么异常:
Here is my code
添加 JFXPanel 后,我得到了异常: 线程“main”MediaException 中的异常:MEDIA_UNAVAILABLE:D:\bip.mp3(系统找不到文件)// 是的,我检查了路径是否正确。
【问题讨论】:
这是我搜索的第一件事***.com/questions/6045384/playing-mp3-and-wav-in-java Playing .mp3 and .wav in Java?的可能重复 JavaFX: "Toolkit" not initialized when trying to play an mp3 file through MediaPlayer class的可能重复 @phihag 我已经找到了这篇文章,但我尝试了解决方案,但它仍然不起作用......我仍然得到相同的结果。也许我做错了什么? @CRHS 您链接到的代码(在图片中而不是在此处发布 - 为什么?)不包含任何解决方案。 【参考方案1】:要避免初始化异常,您必须调用 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();
【讨论】:
现在我得到了这个:线程“main”中的异常 MediaException:MEDIA_UNAVAILABLE:D:\Waves.mp3(系统找不到文件) 检查媒体文件名和路径,因为当我尝试将 bip.mp3 更改为 bip1.mp3(没有这样的文件)时,我得到了同样的错误,所以请检查文件名是否正确。 那是有线的……我检查了 5 次,但结果仍然相同……我什至为我的文件选择了相同的名称以确保 :( 尝试添加这样的媒体 Media hit = new Media("file:///D://bip.mp3");文件后三个斜线。参考superuser.com/questions/352133/…【参考方案2】:也许发布一个特定的错误可以解决你的问题,但无论如何我认为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。
【讨论】:
以上是关于如何在 Java 中播放声音文件的主要内容,如果未能解决你的问题,请参考以下文章