NDK实践(二)将编译的ffmpeg静态库集成到Android工程

您所在的位置:网站首页 ndk版本怎么查看 NDK实践(二)将编译的ffmpeg静态库集成到Android工程

NDK实践(二)将编译的ffmpeg静态库集成到Android工程

#NDK实践(二)将编译的ffmpeg静态库集成到Android工程| 来源: 网络整理| 查看: 265

     系列的目录

           NDK实践(一)在linux环境下编译ffmpe

           NDK实践(二)将编译的ffmpeg静态库集成到Android工程

           项目地址

 

      上一篇我演示了如何编译android平台的fmmpeg静态库,这一篇我们就试着来把静态库集成到android工程中,为以后的音视频开发做准备,由于一些原因,有些小伙伴可能暂时没有环境来练习自己编译ffmpeg静态库,大家也可以用我编译好的:

ffmpeg-4.0.4静态库

 接下来开始我们的集成之旅,首先我们新建一个带有NDK开发环境的新项目

打开项目后,把静态库下载解压后,按图所示放到相应的文件夹中

 ok,接下来配置下build.gradle文件,设置项目了所支持的cpu类型:

 abiFilters "armeabi-v7a"

我编译的这个库只对绝对主流的arm做了支持,原因就是静态库文件较大会严重影响app的体积,如果有需要支持“x86”的小伙伴就需要自己去编译了,可以参考上一篇,然后将生成的“armeabi-v7a”和“x86”都放入libs目录即可。所以我们这个项目只能运行在真机上。

 接下来我们在CMakeLists文件中配置ffmpeg:

cmake_minimum_required(VERSION 3.4.1) #CMAKE_SOURCE_DIR代表的是CMakeLists.txt的路径 file(GLOB SOURCE ${CMAKE_SOURCE_DIR}/*.cpp) add_library( # liveplayer这个是可以随意取名的 liveplayer SHARED ${SOURCE}) find_library( # Sets the name of the path variable. log-lib log) #引入头文件 include_directories(${CMAKE_SOURCE_DIR}/include) #CMAKE_CXX_FLAGS是一个系统变量 #ANDROID_ABI:内置系统变量,表示当前编译的平台即("armeabi-v7a") #my_lib_path 是我们自己定义的变量(可以自己命名) #千万需要注意的是这个路径是相对于CMakeLists.txt的路径,否则在编译时会提示找不到静态库文件 #注意:Ndk版本不同CMakeLists.txt的位置是不同的,低版本的CMakeLists.txt文件是放在src目录中的 set(my_lib_path ${CMAKE_SOURCE_DIR}/../../../libs/${ANDROID_ABI}) #设置静态库路径 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${my_lib_path}") target_link_libraries( #和上面add_library中的库名保持一致 liveplayer #这些是要引入的静态库,编译时会在头尾加上lib和.a,即lib+avfilter+.a avfilter avformat avcodec avutil swresample swscale ${log-lib})

更多CMakeLists常用语法可参考NDK开发(一):初识NDK,从CMakeLists开始

ok,到此就集成完毕了,我们来检验下能否成功调用ffmpeg

 我们来调用下查看ffmpeg版本的函数,然后运行到手机上

OK,成功的显示了我们集成的ffmpeg的版本号,后续文章我们将分享如何使用ffmpeg进行音视频开发。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3