一次播放多个声音JavaFx

时间:2019-03-25 00:34:44

标签: java javafx audio

我目前正在研究一个针对儿童的小型教育游戏。现在,我正在介绍屏幕上,声音似乎有些问题。最初,我认为mp3文件可能是造成此问题的原因,因为我读到最好改用.wav文件。这两种声音是蜂鸣声,是游戏打开时的打开主题。有时它可以完美地工作,没有任何问题,其他时候声音都播放一秒钟然后消失。如果有人可以指出我正确的方向,那将有很大的帮助。

我试图将文件转换为.wav文件,但这似乎并不能解决问题。 我试图将媒体播放器定义为属性,以避免垃圾回收例程清除媒体播放器的实例。这似乎也无法解决问题。

public class Intro extends Application{
     MediaPlayer mediaPlayer;

     MediaPlayer mediaPlayer2;
    @Override
    public void start(Stage primaryStage) {
        // TODO Auto-generated method stub

        //THE BEES
        String musicFile = "thebees.wav";
        String music2 = "opening.wav";
        Pane root = new Pane();
        Scene scene = new Scene(root, 600, 500);
        //Bee sound
        Media sound = new Media(new File(musicFile).toURI().toString());
        MediaPlayer mediaPlayer = new MediaPlayer(sound);
        mediaPlayer.play();

        Media sound2 = new Media(new File(music2).toURI().toString());
        MediaPlayer mediaPlayer2 = new MediaPlayer(sound2);
        mediaPlayer2.play();

我要寻找的是打开简介屏幕时,两个文件将同时播放。 再次感谢任何帮助您的人!

1 个答案:

答案 0 :(得分:1)

您可以按照方法here将文件合并为一个文件。确保合并,而不是串联。如果一个文件长于另一个文件,则可以将其填充为零,直到长度相等为止。

听起来在链接的帖子中存在均衡或裁剪问题。我将两个文件规范化(即1是最大.wav值)到最大值的一半(使0.5成为最大值),然后简单地将每个样本加在一起就得到了保证不被裁剪的组合音频文件。按照此方法,每个文件具有相同的卷。

如果文件之间使用了不同的采样率,请根据需要使用上采样/下采样。