media.getDuration()。toSeconds()在某些歌曲上返回0

时间:2013-09-02 12:16:51

标签: java javafx-2 jmf

我写过以下代码

Media hit = new Media(dir); 
MediaPlayer player = new MediaPlayer(hit);
runMedia run = new runMedia(player);
Ui.changeGuiTitle("Now playing: "+getLastBitFromUrl(dirUnencoded.toString()));
Ui.updateInitialTime(getTime(hit.getDuration().toSeconds()));

getTime方法:

System.out.println(time);
System.out.println(Math.round(time));
double seconds = Math.round(time);
double modulo = seconds % 60;
double hours = (seconds - modulo) / 3600;
double minutes = hours / 60;
String Time = "";

if (hours > 0.5)
{
    Time = Math.round(hours) + " : " + Math.round(minutes) + " : "  
    +   Math.round(seconds);
}
else
{
    Time = Math.round(minutes) + " : " + Math.round(seconds);
}
return Time;

它不会出错,但我的问题是某些歌曲在0返回.getDuration().toSeconds(),而其他歌曲返回其值非常好。什么可能导致这个问题?

修改 在调试模式下,一首歌曲包含136280.816326毫秒..而System.out.println(time)返回0

http://imgur.com/1oN0Vxk - 调试和正常构建之间的区别

1 个答案:

答案 0 :(得分:0)

我也遇到过这个问题。创建媒体对象后,需要一些时间才能完全初始化(我的经验)。

您可以尝试在MediaPlayer的onReady或onPlaying方法中调用getTime-Method。