播放某些 mp3 文件时 JavaFX 抛出 ERROR_MEDIA_INVALID

标签 java javafx

尝试通过 JavaFX 媒体播放器播放某些 .mp3 文件时,我不断收到 ERROR_MEDIA_INVALID 错误。之前的谷歌搜索刚刚导致了旧的错误报告,我不确定这是否是一个真正的错误或我错过的东西。

示例:

package sample;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.stage.Stage;

import java.io.File;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{

        primaryStage.setTitle("Hello World!");
        Button btn = new Button();
        btn.setText("Say 'Hello World'");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {

                //change filename as needed
                var file = new File("C:/Users/tgaravaglia/Downloads/test.mp3");

                var media = new Media(file.toURI().toString());
                var player = new MediaPlayer(media);
                player.setOnError(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        //ERROR_MEDIA_INVALID here
                        player.getError().printStackTrace();
                    }
                });
                player.play();
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

堆栈跟踪:

MediaException: UNKNOWN : [com.sun.media.jfxmediaimpl.platform.gstreamer.GSTMediaPlayer@6f4b481f] ERROR_MEDIA_INVALID: ERROR_MEDIA_INVALID
    at javafx.media/javafx.scene.media.MediaException.getMediaException(MediaException.java:160)
    at javafx.media/javafx.scene.media.MediaPlayer$_MediaErrorListener.onError(MediaPlayer.java:2623)
    at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaPlayer$EventQueueThread.HandleErrorEvents(NativeMediaPlayer.java:692)
    at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaPlayer$EventQueueThread.run(NativeMediaPlayer.java:426)

工作文件:https://drive.google.com/file/d/1e3k9gVhV_hDehWHwhHElXC2jU4aKn6oc/view?usp=sharing

损坏的文件:https://drive.google.com/file/d/1_VKx4zLH6lFLv6VJdDvrP6IP3c-TjOYo/view?usp=sharing

最佳答案

所以...我想通了。那个糟糕的“mp3”文件实际上是伪装的 .wav 文件。我通过基于云的 wav->mp3 转换器运行它,现在它工作正常。希望这可以帮助将来遇到同样问题的人!

关于播放某些 mp3 文件时 JavaFX 抛出 ERROR_MEDIA_INVALID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66073923/

相关文章:

java - 添加多种用户类型,每个用户都有不同的功能

Javafx自定义单元工厂节点不起作用,但继承了单元工厂中的setText()方法

java - JAVAFX 在 12 小时内转换 24 小时制

java - 有没有办法在JavaFX中转换节点数组

java - 除了javafx中的小动画时间线,还有什么解决办法吗?

JavaFX16 警告 : Unsupported JavaFX configuration: classes were loaded from 'unnamed module @***'

java - 在 Java 中使用 XPath 解析 XML

java - 在 Spring Boot 中启用 TLSv1 密码

java - 列出依赖项时未找到 JDEPS 模块异常

java - JPanel 在设置为图标数组时不显示标签,但在设置为单个图标时会显示