JavaFX MediaPlayer - 音乐在10秒后停止

11

这里是代码,如标题所说,音乐在大约10秒后停止了。我在VLC或其他程序中正常播放该文件,它的持续时间超过5分钟。

public void music(){
        String bip = "src/data/fjordmusic.mp3";
        Media hit = new Media(Paths.get(bip).toUri().toString());
        MediaPlayer mediaPlayer = new MediaPlayer(hit);
        mediaPlayer.play();
    }

这很奇怪。你能否在问题中添加更多数据,比如你的平台细节? - ItachiUchiha
由于解决方案相同,因此删除了重复的问题(https://dev59.com/MG025IYBdhLWcg3wEhdb),但另一个问题是关于Android而不是JavaFX... - fabian
2个回答

22

你的问题已经在这里被问过并回答了:MediaPlayer stop playing after about 5 seconds

看起来垃圾收集器在方法结束后会删除 MediaPlayer 实例。将 MediaPlayer 声明放在方法之前,应该就能正常工作。

MediaPlayer mediaPlayer
public void music(){
    String bip = "src/data/fjordmusic.mp3";
    Media hit = new Media(Paths.get(bip).toUri().toString());
    mediaPlayer = new MediaPlayer(hit);
    mediaPlayer.play();
}

(我无法发布评论,所以被迫写一个答案。)


1
我实际上不得不将整个实例化移动到方法外面,而不仅仅是声明。你发布的链接实际上并没有指向JavaFX问题,但观察到相同的行为是有趣的。 - LeBird
我怀疑我是否能够达到让垃圾收集器负责的地步。你为我节省了很多时间!非常感谢 :) - geisterfurz007

5
尝试使用AudioClip替代:
javafx.scene.media.AudioClip;
    public void music(){
        String bip = "src/data/fjordmusic.mp3";
        Media hit = new Media(Paths.get(bip).toUri().toString());
        AudioClip mediaPlayer = new AudioClip(hit.getSource());
        mediaPlayer.play();
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接