Java VLCJ/libvlc跨平台库路径

Java VLCJ/libvlc跨平台库路径,java,cross-platform,libvlc,vlcj,Java,Cross Platform,Libvlc,Vlcj,我正在尝试用Java创建一个跨平台的应用程序,使用libvlc来播放视频。我已经在网上搜索了很多次,但是我没有找到任何代码可以在所使用的平台(Mac、Win、Linux–32或64位)上独立加载libvlc。我使用JNA库来加载libvlc 例如,这是从Mac上的默认安装路径加载libvlc的代码: NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC.app/Contents/Mac

我正在尝试用Java创建一个跨平台的应用程序,使用libvlc来播放视频。我已经在网上搜索了很多次,但是我没有找到任何代码可以在所使用的平台(Mac、Win、Linux–32或64位)上独立加载libvlc。我使用JNA库来加载libvlc

例如,这是从Mac上的默认安装路径加载libvlc的代码:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC.app/Contents/MacOS/lib/");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
但是如果用户更改了VLC.app的安装路径怎么办

所以我需要创建一个独立于路径的跨平台加载代码。一般来说,我只是不知道从哪里获得包含libvlc库的文件夹的路径


谢谢你的建议。

我通常会搜索大家都知道的位置,比如
/Applications/VLC.app/Contents/MacOS/lib/
程序文件/VideoLan/VLC/sdk/lib

如果您无法通过搜索常见的位置找到库,您将被迫要求用户为您提供位置


我也在使用它,它能够捆绑二进制文件并在运行时导出/安装它们(这可能有点禁止,因为它会大大增加应用程序的大小)

感谢您的帮助,但我找到了更好的解决方案。在阅读了几个小时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安装到自定义位置,您仍然必须询问他库在哪里。

在Windows操作系统下,如果用户使用Windows标准VLC安装程序安装VLC,则不会出现问题。VLC的安装路径可以从其Windows注册表中提取
HKEY\U LOCAL\U MACHINE\SOFTWARE\VideoLAN\VLC\InstallDir