【问题标题】:MediaPlayer isn't working媒体播放器不工作
【发布时间】:2015-05-18 18:54:41
【问题描述】:

如何使用 MediaPlayer 播放 m4a 文件? 这是我的代码:

public void audioPlayerButtons(ActionEvent actionEvent) {
       String bip = "Songs/01 Clarity.m4a";
       Media hit = new Media(bip);
       MediaPlayer mediaPlayer = new MediaPlayer(hit);

       if (actionEvent.getSource() == playbtn) {
           mediaPlayer.play();

       } else if (actionEvent.getSource() == pausebtn) {
           mediaPlayer.pause();

       } else if (actionEvent.getSource() == forwardbtn) {
           mediaPlayer.stop();

       } else if (actionEvent.getSource() == backwardbtn) {
           mediaPlayer.isAutoPlay();
       }

但它抛出一个错误:

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1762)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1645)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)

你能帮我理解为什么吗?

基本上,我的目标是使用 mediaPlayer 制作一个 mp3 播放器

【问题讨论】:

    标签: java javafx mp3


    【解决方案1】:

    根据Javadocs for the Media constructor:

    源必须代表一个有效的 URI 并且是不可变的。只有 HTTP, 支持 FILE 和 JAR URL。如果提供的 URL 无效,则 会抛出异常。

    您提供的值 ("Songs/01 Clarity.m4a") 肯定不是有效的 URI,因为它有空格。

    你需要类似的东西

    String bip = getClass().getResource("Songs/01 Clarity.m4a").toExternalForm();
    

    (它将尝试找到与当前类相关的歌曲,如果您打算将 m4a 文件与您的应用程序捆绑在一起,这将很有用),或者

    String bip = new File("Songs/01 Clarity.m4a").toURI().toString();
    

    它将在文件系统上查找相对于工作目录的文件。

    在任何一种情况下,您都可能需要更改路径以使其正确。

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多