Попытка загрузить видеофайл с помощью ffmpeg с помощью javacv - PullRequest
3 голосов
/ 24 декабря 2011

Я пытаюсь загрузить видеофайл с помощью 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? В папке opecv bin есть одна dll ffmpeg.

Если мне придется сделать это, мне понадобится лучший способ включить их с помощью затмения. До сих пор я просто добавляю папку в переменную пути. Например, я добавил это, чтобы opencv работал.

C: \ OpenCV \ построить \ Common \ ТВВ \ ia32 \ VC10 \; C: \ OpenCV \ построить \ x86 \ VC10 \ Bin \;

1 Ответ

3 голосов
/ 11 марта 2012

несколько дней назад я получил ту же ошибку, и я решил эту проблему, следуя процедуре,

скачать скомпилированный файл ffmpeg для windows

для окна 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-программа могла получить к ним доступ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...