[英]How to play sounds with JavaFX
我剛開始使用 JavaFX。 我知道它的基本原理是如何工作的。 我嘗試使用媒體和媒體播放器類來播放一種名為“sound.mp3”的聲音。 我在eclipse中編程,我在src文件夾中有聲音文件,與“(默認包)”相同的文件夾。 這是我的代碼:
import javafx.scene.media.*;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
String ssound = "sound.mp3";
Media sound = new Media(ssound);
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
StackPane root = new StackPane();
primaryStage.setScene(new Scene(root, 800, 450));
primaryStage.show();
}
}
請告訴我我做錯了什么。
這是來自控制台的錯誤消息:
Exception in Application start method
Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.IllegalArgumentException: uri.getScheme() == null!
at com.sun.media.jfxmedia.locator.Locator.<init>(Unknown Source)
at javafx.scene.media.Media.<init>(Unknown Source)
at Main.start(Main.java:16)
at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$5.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$4$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
at com.sun.glass.ui.win.WinApplication$3$1.run(Unknown Source) ... 1 more
只是其他答案所說的內容的工作匯編:
String musicFile = "StayTheNight.mp3"; // For example
Media sound = new Media(new File(musicFile).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
將音樂文件添加到您的項目文件夾中,並與bin
和src
一起。
任何 IDE 都會提示您添加這些:
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import java.io.File;
奇跡般有效。
mApplause = new AudioClip(this.getClass().getResource("/sounds/applause.mp3").toExternalForm());
所以這就是我使用的並且有效,我知道它可能不再重要,但是因為它在我尋找其他東西時進入了我的谷歌搜索,我想我會回答它。 :)
這意味着 toExternal Form 它告訴形成路徑文件的 url 形式。
這是我目前正在使用的:
Media hit = new Media(new File(soundFilename).toURI().toString());
這取決於音頻文件在哪里。 (它也只接受 .wav)如果剪輯在您需要使用的 src 文件夾之外
new Media("file:sound.wav")
如果不是,沒關系,你好嗎
這里的其他答案對我不起作用,但這完成了工作:
Media sound = new Media(getClass().getResource("sounds/sound.mp3").toExternalForm());
MediaPlayer mediaPlayer = new MediaPlayer(sound);
mediaPlayer.play();
我有同樣的問題。 就我而言,它是關於對 javaFX 的訪問。 假設您使用 IntelliJ IDEA,轉到 Run -> Edit Configurations,選擇“Modify Options”,單擊“Add VM Options”,然后粘貼:--module-path /PATH/TO/YOUR/JAVAFX/LIB -- add-modules javafx.controls,javafx.fxml,javafx.base,javafx.media(將 /PATH/TO/YOUR/JAVAFX/LIB 替換為您計算機上 javafx 安裝目錄中“lib”文件夾的目錄。這類似於這個官方教程說的是: Create-a-javafx-project-with-IntelliJ ; 但是模塊 javafx.media 和 javafx.base 被添加了。
請注意,根據我的搜索和經驗,javaFX 11無法播放 .mp3 文件(與 .wav 文件不同)。 您可能需要考慮將 javaFX 更新為 16 以播放 .mp3 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.