第一步创建c++项目
第二步
把FFmpeg的静态库导入jniLibs目录arm目录里
第三步
把头文件include文件夹,复制到cpp文件夹下
第四步
在build.gradle里添加支持的cpu
第五步
CMakeLists.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # 指定cmake最小支持版本 cmake_minimum_required(VERSION 3.4.1) # 添加一个库,根据native-lib.cpp源文件编译一个native-lib的动态库 add_library( native-lib SHARED native-lib.cpp) #导入静态库头文件夹 include_directories(src/main/cpp/include) # 设置库路径(android6.0以后需要这样设置) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/../jniLibs/${CMAKE_ANDROID_ARCH_ABI}") # 查找系统库,这里查找的是系统日志库,并赋值给变量log-lib find_library( log-lib log) # 设置以来的库(第一个参数必须为目标模块,顺序不能换) target_link_libraries( native-lib avfilter avformat avcodec avutil swresample swscale ${log-lib}) |
第六步
native_lib.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <jni.h> #include <string> #include <android/log.h> extern "C" { #include "include/libavcodec/avcodec.h" } extern "C" JNIEXPORT jstring JNICALL Java_com_example_cmake_MainActivity_stringFromJNI( JNIEnv *env, jobject /* this */) { std::string hello = "Hello from C++"; return env->NewStringUTF(av_version_info()); //打印ffmpeg版本 } |