gpt4 book ai didi

java - 配置 libmediainfo 以使用 Java 项目而无需在所有平台 (OS) 上安装

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:09 26 4
gpt4 key购买 nike

我正在使用 mediainfo ( http://mediainfo.sourceforge.net/en) 通过 Java 代码从音频和视频文件中提取信息。

我的 java 项目运行在所有平台上(osx、win 和 linux)。到目前为止,我只在 osx 上测试了 mediainfo,过程很简单:只需将 libmediainfo.dylib 放在目标文件夹中并使用 native 库访问它,就可以了。该解决方案完美无缺...

我现在希望将此功能扩展到其他操作系统,从 Linux 开始。然而,事实证明它比我想象的更具挑战性。起初我一直得到这个:

"java.lang.UnsatisfiedLinkError: Unable to load library 'mediainfo': libmediainfo.so: cannot open shared object file: No such file or directory"

这是预期的,因为它在/usr/lib 中查找

但这已通过安装合适的 libmediainfo0 和 libzen0 ".deb from http://mediainfo.sourceforge.net/en/Download/Ubuntu

不过,我的解决方案需要是可移植的,也就是说,我希望所有必要的资源都包含在 java 项目包中,而不需要任何进一步的安装。我还需要知道是否可以更改 mediainfo 以查找我的 java 包中的资源而不是系统位置。

为了您的引用,我正在使用 Java Native Access (jna) 与库进行交互。还使用网站建议的 MediaInfo.java 和 MediaInfoLibrary.java 类。如果您需要其他详细信息,请告诉我。

任何智慧都受到高度赞赏谢谢!!

最佳答案

最新版本的 JNA (3.5.2) 将自动解压 native 库 bundled as resources (无论是基于文件还是基于 jar)。

如果您将 linux/amd64 的共享库作为 /linux-x86-64/libmylibrary.so 包含在您的一个 jar 文件中,JNA 将提取它并在您调用 Native.loadLibrary("我的图书馆")。旧版本的 JNA 要求您在 LD_LIBRARY_PATH(envariable)或 jna.library.path(系统属性)上提供该库。

关于java - 配置 libmediainfo 以使用 Java 项目而无需在所有平台 (OS) 上安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15975296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com