ffmpeg自学路(二)将ffmpeg支持库加入到studio项目中

1,新建一个studio项目名为XmInterPhoneFfmpeg,(目录为:

svn_new_projects\code\AppV2.0\ffmpeg_total\base\XmInterPhoneFfmpeg)

在android studio上依次点击 File-->New-->New Project,再弹出的窗口中Phone and Tablet分支里,下拉选择Native C++,让新建的项目支持C语音静态库,点击创建项目。

2,在app\src\main\cpp文件夹下,将编译好的ffmpeg文件目录下的include和lib两个文件夹下的所有文件都复制到cpp文件夹下。

3,打开cpp文件夹下的CMakeLists.txt,输入以下参数,用以配置ffmpeg。

# I . 指定 CMake 最低版本

cmake_minimum_required(VERSION 3.4.1)

# II . 设置函数库编译

add_library( # 参数 1 : 设置生成的动态库名称

        native-lib

        # 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED

        SHARED

        # 参数 3 : 配置要编译的源文件

        native-lib.cpp)

# III . 到预设的目录查找 log 库 , 将找到的路径赋值给 log-lib

#       这个路径是 NDK 的 ndk-bundle\platforms\android-29\arch-arm\usr\lib\liblog.so

#       不同的 Android 版本号 和 CPU 架构 需要到对应的目录中查找 , 此处是 29 版本 32 位 ARM 架构的日志库

#

# 可以不配置 :

#       可以不进行该配置, 直接在后面的 target_link_libraries 中链接 log 也不会出错

find_library(

        log-lib

        log)

# IV . 指定 FFMPEG 头文件查找目录

#           CMAKE_SOURCE_DIR 指的是当前的文件地址

include_directories(${CMAKE_SOURCE_DIR}/include)

# V . 指定 FFMPEG 静态库

# CMAKE_CXX_FLAGS 表示会将 C++ 的参数传给编译器

# CMAKE_C_FLAGS 表示会将 C 参数传给编译器

# 参数设置 : 传递 CMAKE_CXX_FLAGS C+= 参数给编译器时 , 在 该参数后面指定库的路径

#   CMAKE_SOURCE_DIR 指的是当前的文件地址

#   -L 参数指定动态库的查找路径

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

# V . 链接函数库

#       参数 1 : 本构建脚本要生成的动态库目标

#       参数 2 ~ ... : 后面是之前预编译的动态库或静态库 , 或引入的动态库

target_link_libraries(

        native-lib

        # FFMPEG 静态库

        # 注意这些库的顺序必须按照如下进行 , 否则会报错

        #   这些库之间有依赖的关系 , 必须按照顺序加载库 , 如 avcodec 内部依赖 avformat 库

        avfilter

        avformat

        avcodec

        avutil

        swresample

        swscale

        # 日志库

        ${log-lib}

)

4,找到app目录下的build.gradle,打开,找到externalNativeBuild,在里面的cmake{}里的

cppFlags "" 下面一行添加:abiFilters "armeabi-v7a",用以配置编译 C/C++ 源文件为哪几个 CPU 指令集的函数库;在externalNativeBuild{}后面回车再起一行,输入:

ndk{

       abiFilters "armeabi-v7a" /*, "arm64-v8a", "x86", "x86_64"*/

}

用以打包生成的 APK 文件指挥包含 ARM 指令集的动态库。

5,打开cpp目录下的native-lib.cpp,先删除里面的内容,输入以下内容:

#include <jni.h>

#include <string>

extern "C"{

#include <libavcodec/avcodec.h>

}

用以初始化ffmpeg基础配置。

如此,ffmpeg基础支持库配置完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值