我正在尝试用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库的文件夹的路径。
谢谢你的点子。
发布于 2012-09-23 01:35:02
谢谢你的帮助,但我找到了更好的解决方案。在阅读了几个小时的VLCJ之后,我注意到了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-21 04:21:20
我通常搜索大家都知道的位置,比如/Applications/VLC.app/Contents/MacOS/lib/或Program Files/VideoLan/VLC/sdk/lib。
如果您无法通过搜索常见的位置找到库,您将被迫要求用户为您提供位置...
我也在使用vlcj,它有能力捆绑二进制文件并在运行时导出/安装它们(这可能有点令人望而却步,因为它抛出了相当大的应用程序大小)
https://stackoverflow.com/questions/12520183
复制相似问题