当我尝试通过该方法获取媒体对象持续时间时getDuration()
,它返回未知。我发现这个论坛https://forums.oracle.com/thread/2287900说它可能不会立即为人所知。
然而那个论坛说它是一个网络问题,但我没有使用网络。duration
那么,为什么可能不知道还有什么其他原因呢?我怎样才能找到它?
当我尝试通过该方法获取媒体对象持续时间时getDuration()
,它返回未知。我发现这个论坛https://forums.oracle.com/thread/2287900说它可能不会立即为人所知。
然而那个论坛说它是一个网络问题,但我没有使用网络。duration
那么,为什么可能不知道还有什么其他原因呢?我怎样才能找到它?
这对我有用:
Media mediaPlaying = new Media(sourcePlaying);
MediaPlayer mediaPlayer = new MediaPlayer(mediaPlaying);
while (mediaPlaying.getDuration().toString().equalsIgnoreCase("UNKNOWN")) {
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(PlayMgmt.class.getName()).log(Level.SEVERE, null, ex);
}
}
System.out.println("Duration: "+mediaPlaying.getDuration().toMinutes());
对我来说它有时会失败,我需要一直工作,然后我找到了一个总是有效的解决方案(到目前为止)
//get the duration of video in Seconds
public double GetVideoDuration(String pathPlaying) throws Exception{
double DurationVideo = 0;
IsoFile isoFile = new IsoFile(pathPlaying);
DurationVideo = (double)
isoFile.getMovieBox().getMovieHeaderBox().getDuration() /
isoFile.getMovieBox().getMovieHeaderBox().getTimescale();
isoFile.close();
return DurationVideo;
}