我试图用Java创建一个跨平台的应用程序,使用libvlc来播放视频。我已经在网上搜索了很多但我还没有找到任何代码来在所使用的平台上独立加载libvlc(Mac,Win,Linux - 32或64位)。我使用JNA库来加载libvlc。
例如,这是从Mac上的默认安装路径加载libvlc的代码:
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC.app/Contents/MacOS/lib/");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
但是如果用户更改了VLC.app的安装路径怎么办?
所以我需要创建一个独立于路径的跨平台加载代码。一般来说,我只是不知道从哪里获取包含libvlc库的文件夹的路径。
感谢任何想法。
答案 0 :(得分:2)
我通常搜索常见的位置,例如/Applications/VLC.app/Contents/MacOS/lib/
或Program Files/VideoLan/VLC/sdk/lib
。
如果您无法通过搜索公知位置找到图书馆,您将被迫要求用户为您提供位置...
我也使用vlcj,它能够捆绑二进制文件并在运行时导出/安装它们(这可能有点令人望而却步,因为它会大大抛出应用程序的大小)
答案 1 :(得分:2)
感谢您的帮助,但我找到了更好的解决方案。在阅读了VLCJ的javadoc几个小时之后,我注意到了NativeDiscovery类,它已经保存了所有这些常用路径。
private void setupLibVLC() throws LibraryNotFoundException {
new NativeDiscovery().discover();
// discovery()'s method return value is WRONG on Linux
try {
LibVlcVersion.getVersion();
} catch (Exception e) {
throw new LibraryNotFoundException();
}
}
此解决方案的唯一要点是,如果用户已将VLC安装到自定义位置,您仍然被迫询问他库的位置。