Hello! I thought I'd give javafx-media a shot, as I'd never tried it before and was curious as to what it was capable of. Unfortunately, it seems that the most trivial possible example fails on Arch Linux. The symptom is that attempting to create a Media player yields the following exception(s):
Caused by: javafx.fxml.LoadException: /home/rm/doc/misc/2020/08/media_example/target/classes/com/io7m/media_example/mediaExample.fxml at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2625) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2603) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2466) at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435) at com.io7m.jbox/com.io7m.media_example.MainApplication.start(MainApplication.java:43) at com.io7m.jbox/com.io7m.media_example.Main.lambda$main$0(Main.java:36) ... 8 more Caused by: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player! at javafx.media/javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146) at javafx.media/javafx.scene.media.MediaPlayer.init(MediaPlayer.java:518) at javafx.media/javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:421) at com.io7m.jbox/com.io7m.media_example.MainController.initialize(MainController.java:57) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2573) ... 12 more Caused by: com.sun.media.jfxmedia.MediaException: Could not create player! at javafx.media/com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:295) at javafx.media/com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:118) at javafx.media/javafx.scene.media.MediaPlayer.init(MediaPlayer.java:474) ... 15 more The example code is here, just run the com.io7m.media_example.Main program: https://github.com/io7m/media_example_20200831 All the program does is unpack an included royalty-free H.264 MP4 file into a temporary directory and attempts to play it in a 128x128 window. I've traced the execution to this line in GSTMediaPlayer.java: int rc = gstInitPlayer(gstMedia.getNativeMediaRef()); if (0 != rc) { dispose(); throwMediaErrorException(rc, null); } It appears that gstMedia.getNativeMediaRef() returns 0L, and rc == 257 after the call. This results in the given MediaException. I don't think I'm misusing the API, so I'm guessing that this is some kind of system incompatibility. I've seen similar reports online, but those appeared to be down to using a raw filesystem path as the media source rather than a URI, but that's not the case here. $ uname -a Linux sunflower.int.arc7.info 5.8.4-arch1-1 #1 SMP PREEMPT Wed, 26 Aug 2020 18:35:43 +0000 x86_64 GNU/Linux $ java -version openjdk version "14.0.2" 2020-07-14 OpenJDK Runtime Environment (build 14.0.2+12) OpenJDK 64-Bit Server VM (build 14.0.2+12, mixed mode) Any assistance would be appreciated! -- Mark Raynsford | https://www.io7m.com