关于如何编译 FFmpeg 静态库,可以参考上篇文章 Mac平台下编译FFMPEG
- 先来看一下项目整体目录结构
-
编写 CMakeLists.txt 文件
.... # 懒得一个一个加源码文件,所以通过指定目录的方式来加载源文件 # . 表示当前目录 # SOURCEDIR 表示指定的目录中所有的文件都保存到当前这个变量中 aux_source_directory(. SOURCEDIR) # 将上面定义的变量 SOURCEDIR 添加到库中 add_library(native-lib SHARED ${SOURCEDIR}) # 引入 FFmpeg 静态库 # 引 FFmpeg 入头文件目录(根据自己的项目头文件目录来) include_directories(include) # 设置一个变量,来保存 FFmpeg 静态库路径 set(#变量名,随意命名 mylibs #指定静态库的路径 ${CMAKE_SOURCE_DIR}/${ANDROID_ABI}) # 将自定义的变量 mylibs 传给编译器 set(# CMAKE_CXX_FLAGS 表示要将 CMAKE 声明的变量传给编译器 CMAKE_CXX_FLAGS #-L 表示静态库文件路径 "${CMAKE_CXX_FLAGS} -L${mylibs}") # 链接 FFmpeg 静态库,注意 FFmpeg 库的依赖顺序 target_link_libraries(native-lib #需要特别注意这6个静态库的链接顺序,否则可能出现编译不过的问题。 avfilter avformat avcodec avutil swresample swscale z)