Android中调用FFmpeg方法(AndroidStudio版本)
step1.创建新项目
注意“:
- Native C++
- API 26 (.so里是23,需要大23)
Step2.把FFmpeg编译后的so文件拷贝到cpp目录下,并创建arm64-v8a目录
注意:可以创建多个,但是目录名需要跟系统支持的一致,这里只编译了一个cpu的so.所以只创建一个。
Step3.FFMpeg编译后的头文件include拷贝到cpp目录中,(直接复制过去就好)
Step4.修改build.gradle.
cmake {
cppFlags ""
// 过滤器,只打包arm-64-v8a,所以只指定一种
abiFilters 'arm64-v8a'
}
//指定资源文件夹,必加
sourceSets {
main{
jniLibs.srcDirs('src/main/cpp')
}
}
Step5.native-lib.cpp
#include <jni.h>
extern "C"
{
#include "include/libavcodec/avcodec.h"
}
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_ff004_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
return env->NewStringUTF(avcodec_configuration());
}
Step6.CMakeLists.txt
#引入头文件
include_directories(include)
#设置ffmpeg库所在路径的变量
set(FF ${CMAKE_CURRENT_SOURCE_DIR}/${ANDROID_ABI})
add_library(avcodec SHARED IMPORTED)
set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${FF}/libavcodec.so)
target_link_libraries( # Specifies the target library.
native-lib
avcodec
# Links the target library to the log library
# included in the NDK.
${log-lib} )