使用javaCv和FFMPEG的Android Studio

使用javaCv和FFMPEG的Android Studio,android,opencv,ffmpeg,android-studio,javacv,Android,Opencv,Ffmpeg,Android Studio,Javacv,因此,我正在使用新的Android Studio,并尝试在最基本的设置中安装JavaCV。我做了一个全新的项目,里面什么都没有,导入了JavaCV库(我认为没有成功),然后我运行了JavaCV repo中给出的一个示例,我得到了以下错误 Process: com.example.calvintmoss.dejavid, PID: 1187 java.lang.UnsatisfiedLinkError: Couldn't load jniopencv_core from loader dalvik

因此,我正在使用新的Android Studio,并尝试在最基本的设置中安装JavaCV。我做了一个全新的项目,里面什么都没有,导入了JavaCV库(我认为没有成功),然后我运行了JavaCV repo中给出的一个示例,我得到了以下错误

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)
Process:com.example.calvintmoss.dejavid,PID:1187
java.lang.UnsatifiedLinkError:无法从加载程序dalvik.system.PathClassLoader[DexPathList[[zip文件”/data/app/com.example.calvintmoss.dejavid-1.apk]],NativelLibraryDirectory=[/data/app lib/com.example.calvintmoss.dejavid-1,/system/lib]]:findLibrary返回null
位于java.lang.Runtime.loadLibrary(Runtime.java:358)
位于java.lang.System.loadLibrary(System.java:526)
位于org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
位于org.bytedeco.javacpp.Loader.load(Loader.java:410)
位于org.bytedeco.javacpp.Loader.load(Loader.java:353)
位于org.bytedeco.javacpp.opencv_core.(opencv_core.java:10)
位于org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(opencv_core.java:909)
位于com.example.calvintmoss.dejavid.MainActivity.initRecorder(MainActivity.java:249)
位于com.example.calvintmoss.dejavid.MainActivity.onCreate(MainActivity.java:151)
位于android.app.Activity.performCreate(Activity.java:5231)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
在android.app.ActivityThread.access$800(ActivityThread.java:135)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5001)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.UnsatifiedLink错误:无法从加载程序dalvik.system.PathClassLoader[DexPathList[[zip文件”/data/app/com.example.calvintmoss.dejavid-1.apk]],NativelLibrary目录=[/data/app lib/com.example.calvintmoss.dejavid-1,/system/lib]]:findLibrary返回null
位于java.lang.Runtime.loadLibrary(Runtime.java:358)
位于java.lang.System.loadLibrary(System.java:526)
位于org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535)
位于org.bytedeco.javacpp.Loader.load(Loader.java:401)
位于org.bytedeco.javacpp.Loader.load(Loader.java:353)
位于org.bytedeco.javacpp.opencv_core.(opencv_core.java:10)
位于org.bytedeco.javacpp.helper.opencv_core$AbstractIplImage.create(opencv_core.java:909)
位于com.example.calvintmoss.dejavid.MainActivity.initRecorder(MainActivity.java:249)
位于com.example.calvintmoss.dejavid.MainActivity.onCreate(MainActivity.java:151)
位于android.app.Activity.performCreate(Activity.java:5231)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
在android.app.ActivityThread.access$800(ActivityThread.java:135)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:136)
位于android.app.ActivityThread.main(ActivityThread.java:5001)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
在dalvik.system.NativeStart.main(本机方法)

我已经阅读了关于这个问题的其他几篇文章,但我不知道是什么错了。我通过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中,就像上面的说明一样。我搞不懂发生了什么事。有人有什么想法吗?此外,我当前的设置是。Project->AppModule,然后在里面是我的lib,在lib里面是armeabi。有人知道发生了什么吗?

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

我的图书馆:

  • javacv-0.7-src.zip

  • javacv-0.7-bin.zip

  • javacv-0.7-cppjars.zip


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

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

您可以打开/build/outputs/apk文件夹并打开apk(使用任何zip工具),查看apk是否包含预期的本机库。(尤其是libopencv_core.so)出于好奇而进行查询——为什么许多人仍然继续使用已经/可能已经过时的JavaCV。org现在提供了Android包装器和桌面java包装器,它们将始终