要播放mp3文件,我正在使用该javafx.scene.media.MediaPlayer
课程.但我注意到使用该seek()
方法后currentTimeProperty不可靠.
initMediaPlayer()
当用户选择mp3文件时,将调用下面代码中的方法.播放时间显示在时间滑块(=timeSlider
)中,用户可以从该滑块中移动以从歌曲中的任何一点开始播放.歌曲中的当前位置也显示在标签(=timeLabel
)中.
当我开始播放时play()
,当我用pause()
或暂停或重启歌曲时stop()
,一切正常.
问题是使用后seek()
的currentTimeProperty
长度不正确.这在歌曲结束时变得非常明显,然后currentTimeProperty
有时比歌曲的总时间长4秒.
这个问题的原因是什么,有办法解决这个问题吗?
private void initMediaPlayer() {
try {
audio = new Media(audioFile.toURI().toURL().toString());
audioPlayer = new MediaPlayer(audio);
} catch (MalformedURLException ex) {
Logger.getLogger(MainWindowController.class.getName())
.log(Level.SEVERE, null, ex);
}
audioPlayer.currentTimeProperty().addListener(new InvalidationListener() {
public void invalidated(Observable ov) {
Duration time = audioPlayer.getCurrentTime();
Duration total = audioPlayer.getTotalDuration();
if (!timeSlider.isValueChanging() &&
total.greaterThan(Duration.ZERO)){
timeSlider.setValue(time.toMillis() / total.toMillis() * 100);
}
timeLabel.setText(formatTime(time,total));
}
});
timeSlider.valueChangingProperty().addListener(new …
Run Code Online (Sandbox Code Playgroud) Sonar在我们的Java项目中指出了这个错误.欢迎任何安全编程的建议!
URL url = getClass().getResource("/myWonderfulResource.txt");
if (url == null) {
throw new IllegalStateException("File not found: /myWonderfulResource.txt");
}
Run Code Online (Sandbox Code Playgroud) 给定一个类似 $PATH 的路径:
/Users/myname/bin:
/usr/local/Cellar:
/usr/local/Cellar/ruby/1.9.3-p362/bin:
... and so forth
Run Code Online (Sandbox Code Playgroud)
我真的需要 ruby 位置还是 /usr/local/Cellar 足以找到 ruby?
java ×2
bash ×1
getresource ×1
javafx ×1
macos ×1
media-player ×1
path ×1
sonarqube ×1
unsafe ×1
url ×1