修改步骤:

首先通过NDK14编译出libffmpeg.so ,将include目录取出

通过AS建立基于jni的工程项目,将include目录放到cpp下;创建jniLibs/armeabi目录,将libffmpeg.so放到里边

3.配置CMakeLists.txt

添加如下:

#addtheffmpeglib
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/main/cpp/include)
add_library(ffmpeg-libSHAREDIMPORTED)
set_target_properties(ffmpeg-libPROPERTIESIMPORTED_LOCATION${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/armeabi/libffmpeg.so)

target_link_libraries(native-lib
ffmpeg-lib#ffmpeglib
android#usetheandroidloglib
${log-lib})

4.配置build.gradle

主要添加arguments 和 ndk的配置

externalNativeBuild{cmake{cppFlags""arguments'-DANDROID_TOOLCHAIN=clang','-DANDROID_STL=gnustl_static'}ndk{abiFilters'armeabi'}}

5.native_lib.cpp

#include <jni.h>
#include <string>
#include <android/log.h>

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libavutil/imgutils.h"
#include "libavutil/avutil.h"

}

#define LOG_TAG "MyTagFFmpeg"
#define ALOGE(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

extern "C"
jstring
Java_letv_com_myffmpeg_MainActivityFFmpeg_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello ,this is the first ffmpeg test !";

ALOGE("%s",hello.c_str());
char info[10000] = { 0 };
sprintf(info, "%s\n", avcodec_configuration());
hello += info;

return env->NewStringUTF(hello.c_str());
}


That's all.