2016-02-17 2 views
0

Я использую обработку 3.0 и/или eclipse с помощью Плагина обработки. Я пытаюсь загрузить/воспроизвести видео, используя библиотеку видео обработки, основанную на GStreamer. Когда я запускаю эскиз как в обработке, так и в Eclipse, все идет хорошо. Но если я экспортирую приложение, функция видео недоступна для версии Windows (отлично работает OSX).Проблема с обработкой Java с помощью GStreamer

Журнал выглядит следующим образом:

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$12.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 было бы очень признательно.

Спасибо!

М.

+0

Как вы экспортируете приложение? Каков результат этого экспорта (какой файл)? Как вы запускаете этот файл? –

+0

Привет, Кевин! Этот журнал из исполняемого файла .jar, который я получил из eclipse. Если я экспортирую непосредственно из Обработки, то у меня есть два разных поведения: если я экспортирую приложение с той же ОС, то он будет работать. Если я экспортирую с Mac на Win, это не так. – MBerra

ответ

1

Подумайте об этом так: библиотека GStreamer имеет две зависимости: код Java и машинный код.

Вы включаете аспект Java-кода в путь к классам. Поскольку вы экспортируете исполняемую банку из eclipse, этот путь класса завершается в банке, которую вы экспортируете.

Однако, это не содержит собственный код. Обычно это завершается в отдельный файл (часто файл .dll), и eclipse не знает, как автоматически включить его с экспортом.

Работает нормально с затмения и обработки из-за настроек, которые непосредственно указывают на файл собственной библиотеки, или потому, что код ищет собственный файл в известном месте. Но когда вы экспортируете его в банку, эти настройки теряются.

Итак, вам нужно выяснить, где находится собственный файл библиотеки GStreamer. Затем вам нужно либо убедиться, что оно находится в правильном месте (возможно, рядом с банкой?), Либо вам нужно запустить банку с включенной настройкой -Djava.library.path="path/to/your/native.lib".

Как только вы получите эту работу, вы можете использовать такой инструмент, как JarMatey, чтобы создать самораспаковывающуюся банку, которая позаботится об этом. (Примечание: я являюсь автором JarMatey.)

+0

Спасибо, Кевин, я предварительно скомпилировал библиотеку и добавил ее (победа и OsX), теперь она работает! – MBerra

Смежные вопросы