我正在尝试使用javacv加载视频文件,但我遇到了一些问题。
我设法编译了一个将在屏幕上显示图像的应用程序,因此我假设我的设置正常。
我使用的代码如下。
import java.io.File;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FFmpegFrameGrabber;
public class TestCV{
public static void main(String[] args) throws Exception {
File f = new File("input.mp4");
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(f);
final CanvasFrame canvas = new CanvasFrame("My Image");
canvas.showImage(grabber.grab());
}
}
这是错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\takas\AppData\Local\Temp\jniavutil3690549951281752227.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at com.googlecode.javacpp.Loader.load(Loader.java:337)
at com.googlecode.javacpp.Loader.load(Loader.java:271)
at com.googlecode.javacv.cpp.avutil.<clinit>(avutil.java:76)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.googlecode.javacpp.Loader.load(Loader.java:291)
at com.googlecode.javacv.cpp.avcodec.<clinit>(avcodec.java:87)
at com.googlecode.javacv.FFmpegFrameGrabber.<init>(FFmpegFrameGrabber.java:73)
at com.googlecode.javacv.FFmpegFrameGrabber.<init>(FFmpegFrameGrabber.java:69)
at tester.t.JavaFlow.main(JavaFlow.java:13)
我是否必须使用单独的ffmpeg dll? opecv bin文件夹中有一个ffmpeg dll。
如果我必须这样做,我需要一个更好的方法来使用eclipse包含它们。到目前为止,我只是将文件夹添加到路径变量。例如,我添加了这个以使opencv工作。
C:\的OpenCV \建立\共同\ TBB \ IA32 \ VC10 \; C:\的OpenCV \建立\ 86 \ VC10 \ BIN \;
答案 0 :(得分:3)
有些日子我得到同样的错误,我通过以下程序解决了这个问题,
下载windows的ffmpeg预编译文件
窗口32的http://ffmpeg.zeranoe.com/builds/win32/shared/ffmpeg-0.7.1-win32-shared.7z
窗口64的http://ffmpeg.zeranoe.com/builds/win64/shared/ffmpeg-0.7.1-win64-shared.7z
解压文件夹一些硬盘上的所有dll将它们放入system32文件夹。基本上这些dll需要在你的路径中,以便java程序可以访问它们