2013-02-01 63 views
1

我想要獲得使用FFMPEG庫的JavaCV爲Android工作。我下面,我已經複製下面對從JavaCV website機器人安裝說明:JavaCV的UnsatisfiedLinkError Android

的Eclipse(Android 2.2版或更新版本): 按照此頁面上的說明:http://developer.android.com/training/basics/firstapp/ 轉到文件>新建>文件夾,選擇您的項目作爲父文件夾,鍵入「libs/armeabi」作爲文件夾名稱,然後單擊完成。 將javacpp.jar和javacv.jar複製到新創建的「libs」文件夾中。 將所有* .so文件從javacv-android-arm.jar,opencv-2.4.3-android-arm.zip和ffmpeg-1.0-android-arm.zip中直接提取到新創建的「libs/armeabi」文件夾中,而不創建任何新的子目錄。 導航到項目>屬性> Java構建路徑>庫,然後單擊「添加JAR ...」。 從新創建的「libs」文件夾中選擇javacpp.jar和javacv.jar。

我想在我的代碼中使用FFmpegFrameGrabber類。當我運行時,我從logcat得到這個錯誤:

02-01 14:40:35.550:W/dalvikvm(11583):異常Ljava/lang/UnsatisfiedLinkError;在初始化Lcom/googlecode/javacv/cpp/avutil時拋出;

02-01 14:40:35.550:W/dalvikvm(11583):異常Ljava/lang/ExceptionInInitializerError;在初始化Lcom/googlecode/javacv/cpp/avcodec時拋出;

02-01 14:40:35.550:d/AndroidRuntime(11583):關閉VM

02-01 14:40:35.550:W/dalvikvm(11583):線程ID = 1:螺紋與離開未捕獲的異常(組= 0x40015560)

這使我相信,我的Android應用程序不能avutil.so和avcodec.so發現,這是我放在庫/ armeabi文件夾。但是,當我解壓APK生成的eclipse時,兩個文件都存在。

有關這個問題的原因的任何想法?

回答

0

對於任何人都會碰到這個問題,我已經建立了關於如何建立JavaCV 1.1的Android 2.1.1工作室一Gist提供一步一步指令。

這個tut將使用JavaCV 1.1,1.2版本,目前有SIGSEGV issue。 JavaCV 1.1自帶FFmpeg 2.8.1。

  1. 獲取prebulit二進制文件here
  2. 解壓縮並複製這些文件:
    • javacpp.jar必不可少)。
    • javacv.jar必需)。
    • ffmpeg.jar必不可少,如果您使用FFmpeg)。
    • ffmpeg-android-arm.jar(for arm CPU)。
    • ffmpeg-android-x86.jar(x86 CPU可選)。 納入您項目的libs文件夾(本例爲app/libs)。
  3. 點擊app - >F4 - >Dependencies - >+ - >File dependencies - >選擇所有以前的.jar
  4. 由於this issue暫時因爲我們需要設置targetSdkVersion 22該應用的build.gradle
  5. 可能需要在build.gradle設置這些:

的Android { compileSdkVersion 23 buildToolsVersion 「23.0.3」

defaultConfig { 
    applicationId "com.example.test" 
    minSdkVersion 16 
    targetSdkVersion 22 
    versionCode 1 
    versionName "1.0" 
} 

packagingOptions { 
    exclude 'META-INF/LICENSE.txt' 
    exclude 'META-INF/NOTICE.txt' 
    exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties' 
    exclude 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml' 

    //might need these if you use openCV 
    //exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties' 
    //exclude 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml' 
} 

}

+0

鏈接只有望而卻步的計算器答案。請在此帖子中包含解決方案的重要部分 – Raju