你的位置:首页 > 软件开发 > 操作系统 > Android集成FFmpeg

Android集成FFmpeg

发布时间:2017-09-12 16:00:19
一、编译生成FFmpeg的头文件和so库 如果不知道怎么做可以看这里 在新建时勾选下方的include C++support,然后一路下一步即可创建完项目后如果之前没有配置NDK环境和CMAKE环境则会报错,则按下述方法配置:NDK配置: ...

一、编译生成FFmpeg的头文件和so库

        如果不知道怎么做可以看这里 在新建时勾选下方的include C++support,然后一路下一步即可

Android集成FFmpeg

创建完项目后如果之前没有配置NDK环境和CMAKE环境则会报错,则按下述方法配置:

NDK配置:

在项目右键-->Open Module Settings-->SDK Location

该界面最下方就是NDK路径的配置,修改为你自己的NDK路径即可

Android集成FFmpeg

CMAKE配置:

File --> Settings --> Appearance & Behavior --> System Settings --> Android SDK --> SDK Tools

选中图中红框标记的选项,下载即可

Android集成FFmpeg

三、项目配置

1、文件复制

1.将第一步中得到的include文件夹复制到app/src/main/cpp/中

2.在app/src/main/中新建文件夹jniLibs/armeabi/并将第一步得到的so库复制到该文件夹下

复制完的结构如图:

Android集成FFmpeg

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 (#换成@)。

可能感兴趣文章

我的浏览记录