📜  javafx-播放音频(1)

📅  最后修改于: 2023-12-03 15:16:03.871000             🧑  作者: Mango

JavaFX 播放音频

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 类,该类用于将音频文件视觉化,并实现了一个简单的音频播放器。