📅  最后修改于: 2023-12-03 15:16:03.871000             🧑  作者: Mango
JavaFX 提供了内置的音频播放器,可以方便地在 JavaFX 应用程序中播放音频文件。在本文中,我们将介绍如何在 JavaFX 中播放音频。
在开始之前,我们需要准备一个音频文件。示例中我们会使用一个名为 song.mp3
的 MP3 文件。
另外,我们还需要启用 JavaFX 的音频模块,我们可以在启动程序的时候加入以下参数:
--module-path=/path/to/javafx-sdk-<version>/lib --add-modules=javafx.controls,javafx.media
其中 /path/to/javafx-sdk-<version>/
为你本地的 JavaFX SDK 的目录。
JavaFX 的音频播放器是 MediaPlayer
类。在使用之前,我们需要创建一个 Media
对象,该对象代表一个媒体文件。在创建 Media
对象时,我们需要传入媒体文件的 URL。在本例中,我们将使用相对路径指定音频文件的位置。
String path = "song.mp3";
Media media = new Media(new File(path).toURI().toString());
接下来,我们创建一个 MediaPlayer
对象,该对象接受 Media
对象作为参数。我们可以使用 mediaPlayer.play()
方法来播放音频。
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
完整代码如下:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import java.io.File;
public class AudioPlayer extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
String path = "song.mp3";
Media media = new Media(new File(path).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.play();
StackPane root = new StackPane();
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
使用 MediaPlayer
类的 pause()
和 play()
方法可以在 JavaFX 应用程序中启用音频播放暂停和继续播放功能。
mediaPlayer.pause(); // 暂停播放
mediaPlayer.play(); // 继续播放
使用 MediaPlayer
类的 stop()
方法可以在 JavaFX 应用程序中停止音频播放。
mediaPlayer.stop();
使用 MediaPlayer
类的 setVolume(double)
方法可以调整音量。音量值的范围为 0.0(静音)到 1.0(最大音量)。使用 MediaPlayer
类的 setRate(double)
方法可以调整音频播放速度。速度值的范围为 0.5(半速)到 2.0(双倍速)。
示例代码如下:
// 设置音量
mediaPlayer.setVolume(0.5);
// 设置播放速度
mediaPlayer.setRate(1.5);
JavaFX 中还有另一个与音频播放相关的类 MediaView
,用于将视频和音频内容嵌入到 JavaFX 应用程序中。使用该类可以将音频文件视觉化,如显示播放进度和音量控制按钮等。
MediaView mediaView = new MediaView(mediaPlayer);
完整代码如下:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import java.io.File;
public class AudioPlayerWithView extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
String path = "song.mp3";
Media media = new Media(new File(path).toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaView.setMediaPlayer(mediaPlayer); // 添加视图
mediaView.setFitHeight(300); // 设置视图高度
mediaView.setFitWidth(300); // 设置视图宽度
StackPane root = new StackPane();
root.getChildren().add(mediaView);
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这篇文章介绍了如何在 JavaFX 应用程序中播放音频。我们学习了如何使用 MediaPlayer
类来播放音频文件,并实现了暂停、继续播放和停止播放功能。我们还讨论了如何调整音频播放的音量和速度,并引入了 MediaView
类,该类用于将音频文件视觉化,并实现了一个简单的音频播放器。