0
我想使用xuggle從視頻捕捉圖像。在lib文件夾中添加xuggle-xuggler-3.0.660.jar。它提供了以下錯誤:從Java視頻創建圖像幀時出錯
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at com.xuggle.ferry.JNILibraryLoader.<clinit>(JNILibraryLoader.java:47)
at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19)
at com.xuggle.xuggler.Global.<clinit>(Global.java:240)
at testing.VideoThumbnailsExample.<clinit>(VideoThumbnailsExample.java:55)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 4 more
Exception in thread "main" Java Result: 1
我寫了下面的代碼:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testing;
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 = "D:/bailey.mpg";
private static final String outputFilePrefix = "c:/photo/a/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();
else // no need to show frames from this video stream
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;
}
}
}
}
請告訴我,我應該怎麼辦?
jenuine下載它,我有加SLF4J-簡單1.6.1.jar和slf4j.api-1.6.1 .jar建立path.but現在它給出以下錯誤 – Sumit 2012-08-17 07:15:32
可以發佈錯誤後添加罐子 – jenuine 2012-08-17 07:16:42
[main]錯誤com.xuggle.ferry.JNILibraryLoader - 無法加載庫:xuggle-xuggler;版本:3;請訪問http://www.xuggle.com/xuggler/faq/以找到此問題的常見解決方案 java.lang.UnsatisfiedLinkError:com.xuggle.xuggler.XugglerJNI.Global_NO_PTS_get()J \t at com.xuggle.xuggler。 XugglerJNI.Global_NO_PTS_get(Native Method) \t at com.xuggle.xuggler.Global。(Global.java:240) \t at testing.VideoThumbnailsExample。 ( –
Sumit
2012-08-17 07:17:41