2014-09-04 16 views
5

So che ci sono molte domande simili a questo, ma molte di esse sembrano non aggiornate a causa dello sviluppo di librerie come JavaCV.Configurazione JavaCV in Android Studio

Ho utilizzato il codice da Video Creation with Images and Audio in Android per creare filmati, ma ho un problema con le importazioni di lib.

ho fatto come pagina JavaCV dice, ho messo la dipendenza in Gradle:

compile group: 'org.bytedeco', name: 'javacv', version: '0.9' 

ora, non so se devo fare qualcosa di diverso?

Ho usato queste importazioni:

import org.bytedeco.javacpp.avcodec; 
import org.bytedeco.javacpp.opencv_core.IplImage; 
import org.bytedeco.javacv.FFmpegFrameRecorder; 

import static org.bytedeco.javacpp.opencv_highgui.cvLoadImage; 

e ottenere questo errore:

Caused by: java.lang.NoClassDefFoundError: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil 
     at org.bytedeco.javacpp.Loader.load(Loader.java:387) 
     at org.bytedeco.javacpp.Loader.load(Loader.java:353) 
     at org.bytedeco.javacpp.avformat.<clinit>(avformat.java:13) 
     at org.bytedeco.javacv.FFmpegFrameRecorder.<clinit>(FFmpegFrameRecorder.java:106) 
     at voidstudio.app.activity.CreateMovieTask.doInBackground(CreateMovieTask.java:46) 
     at voidstudio.app.activity.CreateMovieTask.doInBackground(CreateMovieTask.java:21) 

e

Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacpp.avutil 
     at java.lang.Class.classForName(Native Method) 
     at java.lang.Class.forName(Class.java:217) 

e

Caused by: java.lang.UnsatisfiedLinkError: Couldn't load jniavutil from loader dalvik.system.PathClassLoader[dexPath=/data/app/voidstudio.app-1.apk,libraryPath=/data/app-lib/voidstudio.app-1]: findLibrary returned null 
     at java.lang.Runtime.loadLibrary(Runtime.java:365) 
     at java.lang.System.loadLibrary(System.java:521) 
     at org.bytedeco.javacpp.Loader.loadLibrary(Loader.java:535) 
     at org.bytedeco.javacpp.Loader.load(Loader.java:410) 

mi è mancato sth nella configurazione? Ho visto domande simili ma non c'era una risposta adeguata per questo.

+0

Ho lo stesso problema, hai trovato una soluzione? – Yourange

+0

No, forse questo problema è legato alla nuova versione di JavaCV –

risposta

2

Controllare il posizionamento di jniLibs cartella

ho appena cambiato il posizionamento dei miei jniLibs (prima era al di fuori della cartella principale) e questo ha funzionato per me, si prega di controllare il image! spero che questo aiuti

7

Aggiornamento! Ho anche scoperto che se hai una cartella armeabi-v7a in jniLibs, o stai usando qualcosa di diverso da una cartella armeabi, avrai problemi con i file .so che non vengono aggiunti.

Sembra che non venga importato ffmpeg. Ho avuto lo stesso problema. Ecco cosa ho fatto. Fammi sapere se questo ti aiuta!

compile group: 'org.bytedeco', name: 'javacv', version: '0.9' 
compile group: 'org.bytedeco.javacpp-presets', name: 'opencv', version: '2.4.9-0.9', classifier: 'android-arm' 
compile group: 'org.bytedeco.javacpp-presets', name: 'ffmpeg', version: '2.3-0.9', classifier: 'android-arm' 
+0

Non ho molta familiarità con le dipendenze gradle, ma da dove si ottengono le versioni per ffmpeg e opencv (versione: '2.4.9-0.9', versione: '2.3- 0.9 ') – Vadym

+0

Ho appena guardato su MavenCentral. Ecco un link a quello di FFMPEG. Sembra che ci sia una nuova versione che è stata rilasciata a dicembre. http://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/ffmpeg – tylerjroach

+0

Uso la versione 0.11 di javacv e sostituisco 'opencv' e 'ffmpeg' con l'ultima versione che ho trovato in maven central. Ma ancora non funziona. Ho una cartella armeabi-v7a sotto il mio src/main che contiene altri file .so. Devo fare qualcosa per la cartella armeabi-v7a? –

Problemi correlati