【问题标题】:Android Studio with javaCv and FFMPEG带有 javaCv 和 FFMPEG 的 Android Studio
【发布时间】:2016-01-19 12:06:06
【问题描述】:

所以我正在使用新的 Android Studio,并尝试在最基本的设置中安装 JavaCV。我创建了一个没有任何内容的全新项目,导入(我认为未成功)JavaCV 库,然后我正在运行 JavaCV 存储库中给出的示例之一,我收到以下错误。

Process: com.example.calvintmoss.dejavid, PID: 1187
java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.calvintmoss.dejavid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.calvintmoss.dejavid-1, /system/lib]]]: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:358)
        at java.lang.System.loadLibrary(System.java:526)
        at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
        at org.bytedeco.javacpp.Loader.load(Loader.java:410)
        at org.bytedeco.javacpp.Loader.load(Loader.java:353)
        at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
        at org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(opencv_core.java:909)
        at com.example.calvintmoss.dejavid.MainActivity.initRecorder(MainActivity.java:249)
        at com.example.calvintmoss.dejavid.MainActivity.onCreate(MainActivity.java:151)
        at android.app.Activity.performCreate(Activity.java:5231)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.UnsatisfiedLinkError: Couldn't load opencv_core from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.calvintmoss.dejavid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.calvintmoss.dejavid-1, /system/lib]]]: findLibrary returned null
        at java.lang.Runtime.loadLibrary(Runtime.java:358)
        at java.lang.System.loadLibrary(System.java:526)
        at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
        at org.bytedeco.javacpp.Loader.load(Loader.java:401)
            at org.bytedeco.javacpp.Loader.load(Loader.java:353)
            at org.bytedeco.javacpp.opencv_core.<clinit>(opencv_core.java:10)
            at org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(opencv_core.java:909)
            at com.example.calvintmoss.dejavid.MainActivity.initRecorder(MainActivity.java:249)
            at com.example.calvintmoss.dejavid.MainActivity.onCreate(MainActivity.java:151)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)

我已经阅读了有关该问题的其他几篇热门帖子,但我不知道出了什么问题。我通过 gradle 下载了 JavaCV,然后添加了 lib 和 lib/areabi 文件夹。我将 ffmpeg.jar、javacpp.jar、javacv.jar 和 opencv.jar 全部导入 lib 文件夹。我从 opencv-android-arm.jar 和 ffmpeg-android-arm.jar 中提取了所有 .SO 文件,并将它们放入 lib/armeabi 中,就像git repo 上的说明一样。我无法弄清楚发生了什么。有人有想法么?我目前的设置也是。 Project->AppModule 然后在里面我有我的lib,在lib里面我有armeabi。有人知道发生了什么吗?

【问题讨论】:

  • 您可以打开 /build/outputs/apk 文件夹并打开 apk(使用任何 zip 工具)以查看 apk 是否包含预期的原生库。 (尤其是 libopencv_core.so)
  • 出于好奇查询 - 为什么许多人仍在继续使用已经/可能已经过时的 JavaCV。 OpenCV.org 现在提供 Android 包装器和桌面 java 包装器,它们将始终保持同步(自动生成)。 JavaCV 有什么优势还是只是惯性? stackoverflow.com/a/27356635/1180117

标签: android opencv ffmpeg android-studio javacv


【解决方案1】:

我遇到了同样的问题,我从谷歌上拿了图书馆。 正在使用的项目FFMpegRecoder和IplImage

我的库:

  • javacv-0.7-src.zip

  • javacv-0.7-bin.zip

  • javacv-0.7-cppjars.zip

https://code.google.com/p/javacv/

【讨论】:

    【解决方案2】:

    尝试在依赖中添加这五个代码:

    compile 'org.bytedeco:javacv:+'
    compile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-x86'
    compile 'org.bytedeco.javacpp-presets:ffmpeg:2.8.1-1.1:android-x86'
    compile 'org.bytedeco.javacpp-presets:opencv:3.0.0-1.1:android-arm'
    compile 'org.bytedeco.javacpp-presets:ffmpeg:2.8.1-1.1:android-arm'
    

    你现在使用的是 bytedeco 而不是 googlecode

    【讨论】:

      猜你喜欢
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      相关资源
      最近更新 更多