一、编译生成FFmpeg的头文件和so库 如果不知道怎么做可以看这里 在新建时勾选下方的include C++support,然后一路下一步即可创建完项目后如果之前没有配置NDK环境和CMAKE环境则会报错,则按下述方法配置:NDK配置: ...
一、编译生成FFmpeg的头文件和so库
如果不知道怎么做可以看这里 在新建时勾选下方的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 libadd_library(native-lib SHARED ${CMAKE_SOURCE_DIR}/src/main/cpp/native-lib.cpp)target_link_libraries(native-liblogandroidavcodec-57_libavformat-57_libavutil-55_libswresample-2_libswscale-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 JNICALLJava_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' } }}
然后运行,只要不报错,说明环境配置已经完成
楼主也是第一次用这个,参考了网上很多大神的方法,最后总结出来这个,如果有什么问题可以评论大家一起交流!
原标题:Android集成FFmpeg
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。