0

当我尝试通过该方法获取媒体对象持续时间时getDuration(),它返回未知。我发现这个论坛https://forums.oracle.com/thread/2287900说它可能不会立即为人所知。

然而那个论坛说它是一个网络问题,但我没有使用网络。duration那么,为什么可能不知道还有什么其他原因呢?我怎样才能找到它?

4

2 回答 2

0

这对我有用:

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());
于 2014-07-31T06:09:08.950 回答
0

对我来说它有时会失败,我需要一直工作,然后我找到了一个总是有效的解决方案(到目前为止)

//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;
}
于 2019-08-19T09:06:06.133 回答