Android Studio with javaCv and FFMPEG

2.2k Views Asked by At

So I am using the new Android Studio and I am trying to get JavaCV installed in the most basic setup. I made a brand new project with nothing in it, imported (I think unsuccessfully) the JavaCV library and then I am running one of the samples given in the JavaCV repo and I am getting the following error.

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)

I have read several of the other top posts on the issue but I cannot figure out what is wrong. I downloaded the JavaCV through gradle, then I added the lib and lib/areabi folders. I imported ffmpeg.jar, javacpp.jar, javacv.jar and opencv.jar all to the lib folder. and I extracted all the .SO files from opencv-android-arm.jar and ffmpeg-android-arm.jar and put them in the lib/armeabi just like the instructions on the git repo. I cannot figure out what is going on. Anyone have any ideas? Also my current setup is. Project->AppModule and then inside of that is where I have my lib and inside of lib i have the armeabi. Does anyone have any info on whats going on?

2

There are 2 best solutions below

0
On

Try to add these five codes in dependency:

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'

Here you are using bytedeco instead of googlecode now

0
On

I had the same problem, I took the library from google. Projects in use FFMpegRecoder and IplImage

My libs:

  • javacv-0.7-src.zip

  • javacv-0.7-bin.zip

  • javacv-0.7-cppjars.zip

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