Java VLCJ getLength()

Java VLCJ getLength(),java,vlcj,Java,Vlcj,我正在使用VLCJ库播放位于某个web服务器上的媒体文件。 我唯一的问题是如何获得正确的媒体长度。我尝试解析媒体,但应用程序挂起,如果我在媒体播放器上调用getLength,它将返回0。 Newerthless如果使用getPosition()和setPosition(float),它可以正常工作,但这只显示播放的媒体的%,而不是以秒为单位的实际长度 是否有可能获得正确长度的流媒体,并使用该进度进行往返 谢谢。如果getLength()返回0,那是因为VLCJ不知道(或没有被告知)流有多长,所以

我正在使用VLCJ库播放位于某个web服务器上的媒体文件。 我唯一的问题是如何获得正确的媒体长度。我尝试解析媒体,但应用程序挂起,如果我在媒体播放器上调用getLength,它将返回0。 Newerthless如果使用getPosition()和setPosition(float),它可以正常工作,但这只显示播放的媒体的%,而不是以秒为单位的实际长度

是否有可能获得正确长度的流媒体,并使用该进度进行往返

谢谢。

如果
getLength()
返回0,那是因为VLCJ不知道(或没有被告知)流有多长,所以它实际上无法给出准确的结果


我能想到的唯一方法是,如果您有其他可以在服务器端工作的东西(可能是VLCJ的服务器实例),它可以单独发送文件的长度?

VLC在获取Theora/Vorbis数据的长度方面有问题。 这必须由vlc开发人员来解决,而不是vlcj。 就像我在正常情况下看到的那样,他们现在就不麻烦了。

试图在播放后立即调用方法时,getLength()返回0。 但是,当您在另一个事件/方法中调用它时,它将返回正确的长度。 为此,我在play method/thread返回正确长度后尝试了几毫秒的休眠。然后加载所有引用可能需要一些时间。现在我不知道这背后到底是什么。?
但如上所述,我认为流媒体完成后可能会出现正确的结果。

您可以使用以下简单代码:

int DurationInSeconds;
parseMedia();
DurationInSeconds = (int)(player.getMediaMeta().getLength()/1000);
如果你想在播放媒体前有时间