一、编译生成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 lib add_library(native-lib SHARED ${CMAKE_SOURCE_DIR}/src/main/cpp/native-lib.cpp) target_link_libraries(native-lib log android avcodec-57_lib avformat-57_lib avutil-55_lib swresample-2_lib swscale-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 JNICALL Java_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' } } }
然后运行,只要不报错,说明环境配置已经完成
楼主也是第一次用这个,参考了网上很多大神的方法,最后总结出来这个,如果有什么问题可以评论大家一起交流!