2014-09-04 26 views
5

Tôi biết có rất nhiều câu hỏi tương tự với điều này, nhưng rất nhiều câu hỏi dường như đã lỗi thời vì sự phát triển của các thư viện như JavaCV.Cấu hình JavaCV trong Android Studio

Tôi đã sử dụng mã từ Video Creation with Images and Audio in Android để tạo phim, nhưng tôi gặp sự cố với nhập lib.

tôi đã làm như JavaCV trang nói, tôi đặt phụ thuộc vào gradle:

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

bây giờ, tôi không biết nếu tôi phải làm cái gì khác?

Tôi đã sử dụng những hàng nhập khẩu:

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; 

và nhận được lỗi này:

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) 

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

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) 

Tôi có bị mất cấu hình không? Tôi đã thấy những câu hỏi tương tự nhưng không có câu trả lời thích hợp cho việc này.

+0

Tôi gặp vấn đề tương tự, bạn có tìm thấy giải pháp không? – Yourange

+0

Không, có thể vấn đề này liên quan đến phiên bản JavaCV –

Trả lời

2

Kiểm tra vị trí của thư mục jniLibs

Tôi vừa thay đổi vị trí của jniLibs của tôi (trước đó là bên ngoài thư mục chính) và điều này làm việc cho tôi, xin vui lòng kiểm tra image! hy vọng điều này sẽ giúp

7

Cập nhật! Tôi cũng phát hiện ra rằng nếu bạn có một thư mục armeabi-v7a trong jniLibs, hoặc đang sử dụng bất cứ thứ gì khác ngoài thư mục armeabi, bạn sẽ gặp vấn đề với các tệp .so không được thêm vào.

Có vẻ như ffmpeg không được nhập. Tôi đã từng gặp vấn đề tương tự. Đây là những gì tôi đã làm. Hãy cho tôi biết nếu điều này giúp bạn!

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

Tôi không quen thuộc với các phụ thuộc gradle nhưng từ đâu bạn nhận được các phiên bản cho ffmpeg và opencv (phiên bản: '2.4.9-0.9', phiên bản: '2.3- 0.9 ') – Vadym

+0

Tôi vừa xem MavenCentral. Đây là một liên kết đến FFMPEG. Có vẻ như phiên bản mới đã được phát hành vào tháng 12. http://mvnrepository.com/artifact/org.bytedeco.javacpp-presets/ffmpeg – tylerjroach

+0

Tôi đang sử dụng phiên bản 0.11 của javacv và thay thế 'opencv' và 'ffmpeg' bằng phiên bản mới nhất mà tôi tìm thấy trong trung tâm maven. Nhưng vẫn không hoạt động. Tôi có một thư mục armeabi-v7a dưới src/chính của tôi có chứa các tập tin .so khác. Tôi có phải làm bất cứ điều gì về thư mục armeabi-v7a không? –

Các vấn đề liên quan