2015-05-02 6 views
0

я получаю следующее сообщение об ошибке в мой проект Java Xugglerкак решить эту ошибку в моем Xuggler Java проекта

Exception in thread "main" java.lang.UnsatisfiedLinkError: no xuggle in java.library.path 
 
\t at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709) 
 
18:49:39.232 [main] ERROR com.xuggle.ferry.JNILibraryLoader - Could not load library: xuggle; version: 5; Visit http://www.xuggle.com/xuggler/faq/ to find common solutions to this problem 
 
\t at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
 
\t at java.lang.System.loadLibrary(System.java:1030) 
 
\t at com.xuggle.ferry.JNILibraryLoader.loadLibrary0(JNILibraryLoader.java:268) 
 
\t at com.xuggle.ferry.JNILibraryLoader.loadLibrary(JNILibraryLoader.java:171) 
 
\t at com.xuggle.ferry.JNILibrary.load(JNILibrary.java:161) 
 
\t at com.xuggle.ferry.FerryJNI.<clinit>(FerryJNI.java:16) 
 
\t at com.xuggle.ferry.Ferry.<clinit>(Ferry.java:25) 
 
\t at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19) 
 
\t at com.xuggle.xuggler.Global.<clinit>(Global.java:238) 
 
\t at VideoThumbnailsExample.<clinit>(VideoThumbnailsExample.java:39) 
 
\t at java.lang.Class.forName0(Native Method) 
 
\t at java.lang.Class.forName(Class.java:169) 
 
\t at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116)

Мой ява код

/** 
 
* Created by deepak on 5/2/2015. 
 
*/ 
 
import java.awt.image.BufferedImage; 
 
import java.io.File; 
 
import java.io.IOException; 
 
import javax.imageio.ImageIO; 
 

 
import com.xuggle.mediatool.IMediaReader; 
 

 
import com.xuggle.mediatool.MediaListenerAdapter; 
 

 
import com.xuggle.mediatool.ToolFactory; 
 

 
import com.xuggle.mediatool.event.IVideoPictureEvent; 
 

 
import com.xuggle.xuggler.Global; 
 

 
public class VideoThumbnailsExample 
 
{ 
 
    public static final double SECONDS_BETWEEN_FRAMES = 10; 
 

 
    private static final String inputFilename = "E:\\videotutorial\\Android Application Development \\001 - Download and Install the Java JDK.mp4"; 
 

 
    private static final String outputFilePrefix = "c:/snapshots/mysnapshot"; 
 

 

 

 
      // The video stream index, used to ensure we display frames from one and 
 

 
      // only one video stream from the media container. 
 

 
    private static int mVideoStreamIndex = -1; 
 

 

 

 
      // Time of last frame write 
 

 
    private static long mLastPtsWrite = Global.NO_PTS; 
 

 

 

 
    public static final long MICRO_SECONDS_BETWEEN_FRAMES = 
 

 
    (long)(Global.DEFAULT_PTS_PER_SECOND * SECONDS_BETWEEN_FRAMES); 
 

 

 

 
    public static void main(String[] args) { 
 

 

 

 
     IMediaReader mediaReader = ToolFactory.makeReader(inputFilename); 
 

 

 

 
     // stipulate that we want BufferedImages created in BGR 24bit color space 
 

 
     mediaReader.setBufferedImageTypeToGenerate(BufferedImage.TYPE_3BYTE_BGR); 
 

 

 

 
     mediaReader.addListener(new ImageSnapListener()); 
 

 

 

 
     // read out the contents of the media file and 
 

 
     // dispatch events to the attached listener 
 

 
     while (mediaReader.readPacket() == null) ; 
 

 
    } 
 

 

 

 
    private static class ImageSnapListener extends MediaListenerAdapter { 
 

 
     public void onVideoPicture(IVideoPictureEvent event) { 
 

 
      if (event.getStreamIndex() != mVideoStreamIndex) { 
 

 
       // if the selected video stream id is not yet set, go ahead an 
 

 
       // select this lucky video stream 
 

 
       if (mVideoStreamIndex == -1) 
 

 
       mVideoStreamIndex = event.getStreamIndex(); 
 

 
       // no need to show frames from this video stream 
 

 
       else 
 

 
       return; 
 

 
      } 
 

 

 

 
      // if uninitialized, back date mLastPtsWrite to get the very first frame 
 

 
      if (mLastPtsWrite == Global.NO_PTS) 
 

 
      mLastPtsWrite = event.getTimeStamp() - MICRO_SECONDS_BETWEEN_FRAMES; 
 

 
      // if it's time to write the next frame 
 

 
      if (event.getTimeStamp() - mLastPtsWrite >= 
 

 
      MICRO_SECONDS_BETWEEN_FRAMES) { 
 

 
       String outputFilename = dumpImageToFile(event.getImage()); 
 

 
       // indicate file written 
 

 
       double seconds = ((double) event.getTimeStamp())/
 

 
       Global.DEFAULT_PTS_PER_SECOND; 
 

 
       System.out.printf(
 

 
         "at elapsed time of %6.3f seconds wrote: %s\n", 
 

 
         seconds, outputFilename); 
 

 
       // update last write time 
 

 
       mLastPtsWrite += MICRO_SECONDS_BETWEEN_FRAMES; 
 

 
      } 
 

 
     } 
 

 
     private String dumpImageToFile(BufferedImage image) { 
 

 
      try { 
 

 
       String outputFilename = outputFilePrefix + 
 

 
       System.currentTimeMillis() + ".png"; 
 

 
       ImageIO.write(image, "png", new File(outputFilename)); 
 

 
       return outputFilename; 
 

 
      } 
 

 
      catch (IOException e) { 
 

 
       e.printStackTrace(); 
 
       return null; 
 

 
      } 
 

 
     } 
 
    } 
 

 
}

Я пытаюсь получить кадр изображения с моей mp4. Я загрузил свои зависимости xuggler, используя maven, следующим образом.

<?xml version="1.0" encoding="UTF-8"?> 
 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
 
    <modelVersion>4.0.0</modelVersion> 
 

 
    <groupId>xuggler</groupId> 
 
    <artifactId>xuggler</artifactId> 
 
    <version>1.0-SNAPSHOT</version> 
 
    <repositories> 
 
     <repository> 
 
      <id>xuggle repo</id> 
 
      <url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url> 
 
     </repository> 
 
    </repositories> 
 
    <dependencies> 
 
    <dependency> 
 
     <groupId>xuggle</groupId> 
 
     <artifactId>xuggle-xuggler</artifactId> 
 
     <version>5.2</version> 
 
    </dependency> 
 
    </dependencies> 
 

 

 
</project>

Я скачал Xuggler зависимостей с использованием Maven. Я думаю, что я, возможно, не настроил среду должным образом. Я использую Windows 8. Предоставьте мне шаг за шагом ответ, как установить его, если это среда проблема

ответ

0

Exception in thread "main" java.lang.UnsatisfiedLinkError: no xuggle in java.library.path

Добавить библиотеки все Xuggler в (*.dll) в PATH среде.

Также установлено scope - compile.

<dependency> 
    <groupId>xuggle</groupId> 
    <artifactId>xuggle-xuggler</artifactId> 
    <version>5.2</version> 
    <scope>compile</scope> 
</dependency> 

Это говорит Maven, что зависимость должна быть доступна на пути к классам компиляции, на единице тестового пути к классам, на исполнении классов, на время выполнения классов. Зависимость копируется в развернутое приложение.

«Шаг за шагом» инструкции вы можете найти здесь, например: How do I have to install/configure Xuggle to not get an UnsatisfiedLinkError?

Также это может быть связано Xuggler вопрос. Попробуйте обновить Xuggler до версии 5.4 (от 5.2).

+0

Фактически я использую intellj идею и загрузил jars через maven, я не смог найти какой-либо DLL-файл в папке .m2 (папка .m2, где maven загружает и хранит каждый файл jar), ответьте – programminglover

+0

Я обновляю мой ответ, надеюсь эта помощь. –

+0

нет нет версия выпуск – programminglover

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