3

我正在尝试在 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 库的文件夹的路径。

感谢您的任何想法。

4

2 回答 2

2

我通常搜索常见的位置,例如/Applications/VLC.app/Contents/MacOS/lib/Program Files/VideoLan/VLC/sdk/lib

如果您无法通过搜索众所周知的位置找到库,您将被迫要求用户为您提供位置...

我还在使用vlcj,它能够捆绑二进制文件并在运行时导出/安装它们(这可能有点令人望而却步,因为它会大大增加应用程序的大小)

于 2012-09-20T20:21:19.967 回答
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 安装到自定义位置,您仍然不得不询问他库在哪里。

于 2012-09-22T17:35:01.537 回答