在我的JavaFX应用程序中,我将以下代码放在方法中。我的目标是播放url
的音频,其中url
是指向MP4文件的http
链接。
Media media = new Media(url);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
当我调用该方法时,什么都没有播放,但我没有收到错误。此外,在使用mediaPlayer
检查mediaplayer.getStatus()
的状态时,我会获得UNKNOWN
。当我添加MediaView
时,就像这样:
MediaView mediaView = new MediaView(mediaPlayer);
grid.add(mediaView, 0, 0);
音频和视频播放。但是我不希望播放视频,因此我希望使用MediaView
避免额外开销。
如果我将MediaPlayer
设为静态变量,则播放音频,但我宁愿不使用静态变量。为什么初始代码不起作用?
答案 0 :(得分:0)
JavaFX中的MediaPlayer显然存在问题,并且已经存在很多年了。尽管如此,还是有解决方法的。
一种解决方法是:创建用户界面时,创建MediaViewer组件。即使不将其包含在布局中,也可以将其声明为对象属性,以使其准备就绪并可用。
private MediaView viewer = new MediaView();
然后:当您要播放音频文件时,请在调用“播放”方法之前将MediaPlayer附加到MediaView组件。
viewer.setMediaPlayer(mediaPlayer);
这似乎导致音频片段正常播放。