Java-GStreamer 的处理问题

Java-Processing Issue with GStreamer

我正在使用带有 Processing 插件的 Processing 3.0 and/or Eclipse。 我正在尝试 upload/play 使用基于 GStreamer 的处理视频库制作视频。 当我 运行 Processing 和 Eclipse 中的草图时,一切正常。但是如果我导出应用程序,视频功能不适用于 windows 版本(OSX 版本可以正常使用)。

日志如下:

Exception in thread "Animation Thread" java.lang.UnsatisfiedLinkError: Could not load library: gstreamer
 at org.gstreamer.lowlevel.GstNative.load(GstNative.java:53)
 at org.gstreamer.lowlevel.GstNative.load(GstNative.java:43)
 at org.gstreamer.Gst.<clinit>(Gst.java:101)
 at processing.video.Video.initImpl(Unknown Source)
 at processing.video.Video.init(Unknown Source)
 at processing.video.Movie.initGStreamer(Unknown Source)
 at processing.video.Movie.<init>(Unknown Source)
 at Shot_Position_Video.draw(Shot_Position_Video.java:259)
 at processing.core.PApplet.handleDraw(PApplet.java:2402)
 at processing.awt.PSurfaceAWT.callDraw(PSurfaceAWT.java:1527)
 at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:316)

这是我上传视频的行:

at Shot_Position_Video.draw(Shot_Position_Video.java:259)

代码是:

myMovie = new Movie(this, Video_address); 

有什么想法吗?我 运行 关于 jna.jar 和其他一些东西的很多部分解决方案,但我无法找到解决这个问题的方法。

即使建议使用其他库来代替 Gstreamer,我们也将不胜感激。

谢谢!

男.

这样想:GStreamer 库有两个依赖项:Java 代码和本机代码。

您在类路径中包含 Java 代码方面。由于您要从 eclipse 中导出 运行nable jar,因此该类路径会包含在您导出的 jar 中。

但是,这包含本机代码。这通常包含在一个单独的文件中(通常是一个 .dll 文件),并且 eclipse 不知道如何将它自动包含在导出中。

由于直接指向本机库文件的设置,或者因为代码正在已知位置寻找本机文件,因此从 eclipse 和 Processing 运行正常 运行。但是当您将其导出为 jar 时,这些设置将丢失。

所以,你需要弄清楚GStreamer原生库文件在哪里。然后你要么需要确保它在正确的位置(也许在罐子旁边?),要么你需要 运行 启用 -Djava.library.path="path/to/your/native.lib" 设置的罐子。

一旦你开始工作,你可以使用像 JarMatey 这样的工具来创建一个自解压 jar 来为你处理这个步骤。 (注:我是 JarMatey 的作者。)