VLCJ getLength()

时间:2011-07-28 08:18:13

标签: java vlcj

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

是否可以获得正确长度的流媒体并使用进度前后移动?

谢谢。

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

VLC在获取Theora / Vorbis数据的长度方面存在问题。 这必须由vlc开发人员修复,而不是vlcj。 他们现在不打扰......

答案 2 :(得分:1)

正如我在正常情况下看到的那样  当您尝试在播放方法后立即调用时,getLength()返回0。 但当你在另一个事件/方法中调用它时,它返回正确的长度。 为此,我尝试睡眠播放方法/线程后几毫秒,它返回正确的长度。然后加载所有引用可能需要一些时间。现在我不确切知道这背后是什么。  但正如上面的流媒体我认为完成流媒体后可能会得到正确的结果。

答案 3 :(得分:1)

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

int DurationInSeconds;
parseMedia();
DurationInSeconds = (int)(player.getMediaMeta().getLength()/1000);

如果您在播放媒体之前需要时间