尝试使用javacv使用ffmpeg加载视频文件

时间:2011-12-23 22:05:33

标签: java opencv ffmpeg

我正在尝试使用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 \;

1 个答案:

答案 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程序可以访问它们