NDK实践(二)将编译的ffmpeg静态库集成到Android工程 |
您所在的位置:网站首页 › ndk版本怎么查看 › NDK实践(二)将编译的ffmpeg静态库集成到Android工程 |
系列的目录 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 |