簡體   English   中英

Javafx 無法在 ubuntu 上播放帶有 MediaException 的 mp3 文件 20

[英]Javafx can't play mp3 file with MediaException on ubuntu 20

  1. 配置:ubuntu 20,javafx 11,jdk15,語言8級
  2. 問題:在ubuntu上可以直接播放mp3文件,但是用下面的代碼不能播放,但是用這段代碼可以播放*.wav和*.aiff音頻文件,除了mp3:
    Media media = new Media(new File("assets/audios/shoot.mp3").toURI().toString());
        MediaPlayer mediaPlayer = new MediaPlayer(media);
        mediaPlayer.play();
  1. 例外:
    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:518)
    at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:421)
    at com.aldora.tankwar.Tools.playSound(Tools.java:18)
    at com.aldora.tankwar.App.main(App.java:146)
Caused by: com.sun.media.jfxmedia.MediaException: Could not create player!
    at com.sun.media.jfxmediaimpl.NativeMediaManager.getPlayer(NativeMediaManager.java:295)
    at com.sun.media.jfxmedia.MediaManager.getPlayer(MediaManager.java:118)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:474)
  1. 調試結果: com.sun.media.jfxmediaimpl.platform.gstreamer.GSTPlatform.createMediaPlayer拋出媒體錯誤:ERROR_MEDIA_NULL

經過反復試驗,我發現升級javafx無法解決這個問題,從javafx11切換到javafx16可以解決它。 javafx下載鏈接

問題出在 java 的“sound.properties”配置文件中。 我現在在 Ubuntu 20.04 上,使用 java-11-openjdk,因此,編輯/etc/java-11-openjdk/sound.properties並在末尾添加以下行:

javax.sound.sampled.Clip=com.sun.media.sound.DirectAudioDeviceProvider
javax.sound.sampled.Port=com.sun.media.sound.PortMixerProvider
javax.sound.sampled.SourceDataLine=com.sun.media.sound.DirectAudioDeviceProvider
javax.sound.sampled.TargetDataLine=com.sun.media.sound.DirectAudioDeviceProvider

如需深入了解,請閱讀: https://keithp.com/blogs/Java-Sound-on-Linux/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM