当我运行此代码时,我得到两个例外。我正确安装了Java 8,它是oracle版本(不是OpenJDK)。这个相同的代码工作正常并在Windows 8上使用Java 8播放媒体。我不想使用应用程序,因为我试图从更多(非JavaFX)代码播放此媒体。
import javafx.embed.swing.JFXPanel;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
public class Test {
public static void main(String[] args) {
new JFXPanel();//Required to initialize JavaFX or I get this exception: Exception in thread "Thread-0" java.lang.IllegalStateException: Toolkit not initialized
String fileLocation = "file:/home/chris/Music/jawstheme.mp3";
System.out.println(fileLocation);
Media hit = new Media(fileLocation);
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.play();
}
}
这是我得到的例外。
file:/home/chris/Music/jawstheme.mp3
Exception in thread "main" MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
at Test.main(Test.java:11)
Caused by: com.sun.media.jfxmedia.MediaException: Could not create player!
at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:222)
at com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:104)
at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:467)
... 2 more
答案 0 :(得分:1)
一些建议:
Platform.runLater
Application
而不是JFXPanel
。 java -version
检查)。确保您的系统符合minimum requirements for a certified configuration for JavaFX media playback。特别是:
“您必须安装GLIB 2.28才能运行JavaFX Media。您必须安装以下内容才能支持AAC音频,MP3音频,H.264视频和HTTP实时流媒体:Ubuntu Linux 12.04上的libavcodec53和libavformat53或同等版本。“
根据您提供的信息,无法验证您的问题的确切原因,但希望上述建议可以帮助您解决问题。
答案 1 :(得分:1)
你没说,但我打赌你在使用Ubuntu。
这是JavaFX的一个错误 错误报告:https://bugs.openjdk.java.net/browse/JDK-8150503
它已在Java 9中修复,因此更新到Java 9将解决此问题。
使用https://github.com/icela/FriceEngine提供的org.frice.utils.media.AudioManager.play
(这是一个1.6mb的jar库,你只需使用它AudioManager.play
,支持mp3。)
将您的mp3文件转换为wav格式,JavaFX MediaPlayer
支持该格式。
不要在Ubuntu上运行它。
答案 2 :(得分:0)
我在JavaFX 13和Ubuntu 18.04上遇到了同样的问题。解决方案很简单。只需使用以下命令安装缺少的mp3和H.264代码:
sudo apt-get install ubuntu-restricted-extras ffmpeg