我正在使用 VLCJ 库来播放位于某些 Web 服务器上的媒体文件。我唯一的问题是如何获得正确的媒体长度。我尝试解析媒体,但应用程序挂起,如果我在媒体播放器上调用 getLength,它会返回 0。如果使用 getPosition() 和 setPosition(float),Newerthless 可以正常工作,但这仅告诉媒体播放的百分比,而不是以秒为单位的实际长度。
是否有可能获得正确的流媒体长度并使用进度来回前进?
谢谢你。
如果getLength()
返回 0,那是因为 VLCJ 不知道(或没有被告知)流有多长,所以它实际上无法为您提供准确的结果!
我能想到的唯一方法是,如果你有其他东西可以在服务器端(可能是 VLCJ 的服务器实例)单独发送文件的长度?
VLC 在获取 Theora/Vorbis 数据长度方面存在问题。这必须由 vlc 开发人员解决,而不是 vlcj。他们只是现在不打扰...
您可以使用这个简单的代码:
int DurationInSeconds;
parseMedia();
DurationInSeconds = (int)(player.getMediaMeta().getLength()/1000);
如果您想在播放媒体之前有时间
正如我在正常情况下看到的,当您尝试在播放方法后立即调用时,getLength() 返回 0。但是当你在另一个事件/方法中调用它时,它会返回正确的长度。为此,我在播放方法/线程后尝试睡眠几毫秒,它返回正确的长度。那么加载所有引用可能需要一些时间。现在我不知道这背后到底是什么。?但如上所述流媒体我认为在完成流媒体后可能会出现正确的结果。