一、编译生成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'
}
}
}
然后运行,只要不报错,说明环境配置已经完成
楼主也是第一次用这个,参考了网上很多大神的方法,最后总结出来这个,如果有什么问题可以评论大家一起交流!