Android整合FFmpeg,androidffmpeg
一、編譯產生FFmpeg的標頭檔和so庫 如果不知道怎麼做可以看這裡:http://blog.csdn.net/qsw15923/article/details/77943515
二、建立項目 在建立時勾選下方的include C++support,然後一路下一步即可
建立完項目後如果之前沒有配置NDK環境和CMAKE環境則會報錯,則按下述方法配置:
NDK配置:在項目右鍵-->Open Module Settings-->SDK Location
該介面最下方就是NDK路徑的配置,修改為你自己的NDK路徑即可
CMAKE配置:File --> Settings --> Appearance & Behavior --> System Settings --> Android SDK --> SDK Tools
選中圖中紅框標記的選項,下載即可
三、項目配置1、檔案複製1.將第一步中得到的include檔案夾複製到app/src/main/cpp/中
2.在app/src/main/中建立檔案夾jniLibs/armeabi/並將第一步得到的so庫複製到該檔案夾下
複製完的結構
2、CMakeLists.txt檔案修改將CMakeLists.txt 修改為如下內容:
cmake_minimum_required(VERSION 3.4.1)set(lib_src_DIR ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI})include_directories( ${CMAKE_SOURCE_DIR}/src/main/cpp/include)add_library(avcodec-57_lib SHARED IMPORTED)set_target_properties(avcodec-57_lib PROPERTIES IMPORTED_LOCATION ${lib_src_DIR}/libavcodec-57.so)add_library(avformat-57_lib SHARED IMPORTED)set_target_properties(avformat-57_lib PROPERTIES IMPORTED_LOCATION ${lib_src_DIR}/libavformat-57.so)add_library(avutil-55_lib SHARED IMPORTED)set_target_properties(avutil-55_lib PROPERTIES IMPORTED_LOCATION ${lib_src_DIR}/libavutil-55.so)add_library(swresample-2_lib SHARED IMPORTED)set_target_properties(swresample-2_lib PROPERTIES IMPORTED_LOCATION ${lib_src_DIR}/libswresample-2.so) add_library(swscale-4_lib SHARED IMPORTED) set_target_properties(swscale-4_lib PROPERTIES IMPORTED_LOCATION ${lib_src_DIR}/libswscale-4.so)# build application's shared libadd_library(native-lib SHARED ${CMAKE_SOURCE_DIR}/src/main/cpp/native-lib.cpp)target_link_libraries(native-liblogandroidavcodec-57_libavformat-57_libavutil-55_libswresample-2_libswscale-4_lib)
3、native-lib.cpp修改將預設產生的native-lib.cpp修改為以下內容:
註:函數名要按照jni中的命名規則修改為你自己的包名
#include <jni.h>#include <string>extern "C" {#include "libavcodec/avcodec.h"}extern "C"JNIEXPORT jstring JNICALLJava_com_example_y_demoffmpeg_MainActivity_stringFromJNI(JNIEnv *env, jobject /* this */){ char info[10000] = { 0 }; sprintf(info, "%s\n", avcodec_configuration()); return env->NewStringUTF(info);}
4、build.gradle修改在app的build.gradle中添加以下內容:
android { defaultConfig { ndk { abiFilters 'armeabi' } }}
然後運行,只要不報錯,說明環境配置已經完成
樓主也是第一次用這個,參考了網上很多大神的方法,最後總結出來這個,如果有什麼問題可以評論大家一起交流!