2

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

是否有可能获得正确的流媒体长度并使用进度来回前进?

谢谢你。

4

4 回答 4

3

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

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

于 2011-08-04T15:03:36.993 回答
2

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

于 2012-05-23T21:49:57.630 回答
1

您可以使用这个简单的代码:

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

如果您想在播放媒体之前有时间

于 2013-04-06T17:59:15.447 回答
1

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

于 2012-07-20T13:22:53.323 回答