JavaFX MediaPlayer不播放带有大png封面的mp3

时间:2014-12-12 17:25:26

标签: java javafx media

我无法使用javafx.scene.media.MediaPlayer类播放包含大png文件的mp3作为封面(缩略图)图像。您可以在附加的归档示例mp3文件和NetBeans项目中找到可用于重现我的问题的已编译应用程序。当我尝试打开mp3时,MediaPlayer不会抛出任何异常,但是文件没有播放。

没有封面的Mp3文件播放正常,如果我在mp3中包含相同的封面但是jpg格式它也可以正常播放。我可以使用MPC-HC x64和标准Windows Media Player播放带有大png封面的mp3。我在Windows 7 Ultimate 64位上测试了这个,使用Java 8 Update 25,构建1.8.0_25-b18。

在我的场景中,改变mp3文件本身是不可行的。我非常感谢任何不涉及更改mp3文件内容的解决方法的提示。

您可以在此处找到所提及的存档: https://www.dropbox.com/s/1vzw6hqteza0164/BugReproduction.zip?dl=0

P.S。你可以用mp3tag应用程序(http://www.mp3tag.de/en/download.html)更改mp3封面图片。

1 个答案:

答案 0 :(得分:1)

我测试你的代码,根据你的问题,封面图像的尺寸也不仅仅是png如果图像超过2MB ...所以根据@jewelsea你可以在javafx-jira.kenai上记录一个错误报告。 com,

我可以向您推荐一个代码解决方案: 您可以使用java代码创建一个没有图像封面的mp3临时文件...

...
mediaPlayer.setOnError(()-> {
  (code to create temp file ...)
  Media media = new Media(<tempfile>);
  mediaPlayer = new MediaPlayer(media);
  mediaPlayer.play();
});
mediaPlayer.play();

为此,有两种解决方案:

1)您可以在维基百科上的thisthis中研究mp3文件的结构

2)您可以为windows安装eyeD3,请参阅this并使用java代码从行命令eyeD3 --remove-image mp3file tempmp3file中使用此选项创建临时文件,阅读this