AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中

在AndroidStudio上新建一个项目

我的AndroidStudio是3.6的,可能你们的创建过程和我的不一样,但我建议更新到3.6,AndroidStudio3.6开发NDK特别高效.

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第1张图片

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第2张图片

直接点击Finish

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第3张图片

如果你们出现和我下面一样的错误

这里说的是没有指定NDK的根目录,在你已经下载ndk的情况下,你可以点击project struct ->在如下选择ndk的路径

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第4张图片

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第5张图片

如果你没有下载过ndk,那么你可以根据我下方博客进行搭建

Android JNI学习01-AndroidStudio3.6搭建JNI环境

NDK配置好后,目录结构如下,就说明ok了

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第6张图片

将ffmpeg中编译好的include目录复制到AndroidStudio里

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第7张图片

include目录里是ffmpeg函数的头文件

告知Cmake include的位置

在AndroidStudio中,C/C++项目的构建是靠cmake进行的,ffmpeg也是c项目,所以它的构建,也需要靠cmake,在构建时,cmake需要知道ffmpeg的头文件在什么位置。通过如下的方式可以告诉它头文件的位置.

include_directories(include)

Cmake会以CmakeList.txt所在的目录为当前目录查找include的目录

打开CMakeList.txt,在里面输入如下

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第8张图片

 

将ffmpeg中编译好的lib文件夹拷贝到AndroidStudio中

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第9张图片

虽然拷贝到AndroidStudio中了,但是Cmake还不知道,这时同样也需要配置,通过如下告知Cmake lib的路径

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/lib")

生成指定的CPU指令集

cpu的型号有很多,像arm,x86等等,你的源代码到底要生成哪种cpu的指令集,需要告诉cmake,由于手机的cpu基本都是arm,所以我们可以让cmake,只生成arm 的指令集

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第10张图片

abiFilters就是指定要生成哪种型号的cpu指令集,armeabi-v7a是arm处理器中的一种型号而已,比如说还有armeabi-v5a等,只不过这些型号都有点老了,我们可以不用考虑。

以上做完,初始环境就算完了。接下来就开始写测试代码吧

打开native-lib.cpp,在里面编写红色部分

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第11张图片

开始运行吧,出现如下效果,说明ffmpeg集成成功,能够正常调用它提供的函数了。

AndroidStudio3.6 用ffmpeg开发音视频02 将编译好的ffmpeg静态库和头文件拷贝到AndroidStudio中_第12张图片

 

你可能感兴趣的:(Android,NDK)