Android开发中引入FFMPEG需要先打包FFMPEG动态链接库(即.so文件),不清楚怎么编译获取的同学参看:

Android FFMPEG Mac编译教程

接下来说说Android Studio引入FFMPEG动态链接库的详细过程;

1、在Android Studio中新建Android工程

File -> New -> NewProject...

Create New Project.png

选择Native C++

Choose Native C++.png

选择Android版本,根据自己的开发需求选择即可,这里我选择的默认API26,也就是Android 8.0(Oreo)奥利奥。

Next

命名FFMPEGTest.png

Next

Choose C++ Standard.png

选择C++的版本,可供选择的版本有C++ 11/14/17。这里不清楚各个版本特性的同学直接选择Toolchain Default即可。

点击Finish

到此,我们支持C++的Android Project已经创建成功。第一次创建C++依赖工程的同学会下载一段时间的依赖库,下载时间视网络情况,一般3~10分钟左右。

工程如图:

截屏2020-11-06 下午6.41.48.png

2、Android Project Support C++(Android C++工程)

我们把左上角的目录结构切换到Project,如图:

切换目录结构.png

打开工程目录结构,我们会看到:

截屏2020-11-06 下午6.47.07.png

相比于传统的Android Project而言,Android C++多出了两个文件:

1、.cxx文件夹

2、cpp文件夹

.cxx文件夹中存放的就是我们c编译过程中的临时问价

cpp文件夹中CMakeLists.txt文件中需要我们写入工程中依赖的所有C++库文件。native-lib.cpp中为C++和JAVA互相调用的中继方法。比如创建工程时系统自动生成的example方法:

example.png

在java或者kotlin中调用:

image.png

3、FFMPEG库引入Android Project

1.首先,将我们在Android FFMPEG Mac编译教程中编译出来的部分文件移入libs文件夹下。include文件夹全部拷入。在libs文件夹下新家armeabi文件夹,把libavcodec-57.so、libavdevice-57.so、libavfilter-6.so、libavformat-57.so、libavutil-55.so、libpostproc-54.so、libswresample-2、solibswscale-4.so拷贝到armeabi文件夹下,如图:

动态链接库和头文件拷贝之后的文件结构.png

2.修改CMakeLists.txt文件

在CMakeLists.txt文件的

cmake_minimum_required(VERSION 3.10.2)

语句后面加入:

include_directories(libs/include)

set(DIR ../../../../libs)

project("ffmpegtest")

add_library(avcodec-57

SHARED

IMPORTED)

set_target_properties(avcodec-57

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libavcodec-57.so)

add_library(avdevice-57

SHARED

IMPORTED)

set_target_properties(avdevice-57

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libavdevice-57.so)

add_library(avformat-57

SHARED

IMPORTED)

set_target_properties(avformat-57

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libavformat-57.so)

add_library(avutil-55

SHARED

IMPORTED)

set_target_properties(avutil-55

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libavutil-55.so)

add_library(postproc-54

SHARED

IMPORTED)

set_target_properties(postproc-54

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libpostproc-54.so)

add_library(swresample-2

SHARED

IMPORTED)

set_target_properties(swresample-2

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libswresample-2.so)

add_library(swscale-4

SHARED

IMPORTED)

set_target_properties(swscale-4

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libswscale-4.so)

add_library(avfilter-6

SHARED

IMPORTED)

set_target_properties(avfilter-6

PROPERTIES IMPORTED_LOCATION

${DIR}/armeabi/libavfilter-6.so)

注意:add_library()和set_target_properties()中所引入动态链接库版本号要和/lisb/armeabi文件夹下对应文件的版本一致.例如:libavcodec-57.so如果你的版本号是xx,就改为libavcodec-xx.so即可。

然后把文件结尾的:

target_link_libraries()

语句修改为:

target_link_libraries( # Specifies the target library.

native-lib

avfilter-6

avcodec-57

avdevice-57

avformat-57

avutil-55

postproc-54

swresample-2

swscale-4

# Links the target library to the log library

# included in the NDK.

${log-lib})

保存关闭。

3、修改app build.gradle文件

在defaultConfig中加入:

defaultConfig{

/...

externalNativeBuild {

cmake {

cppFlags "-frtti -fexceptions"

}

}

ndk {

//选择要添加的对应cpu类型的.so库。

abiFilters 'armeabi-v7a'

// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'

}

}

4、编译

步骤3中所有的文件修改完成之后,一次执行如下操作:

1.Build -> Clean Project

2.Build -> Refresh Linked C++ Projects

3.Build -> Rebuild Project

如图:

截屏2020-11-06 下午7.12.20.png

最后连上Android手机,跑一跑,搞定。

备注

如果在整个过程中出现异常情况,排查错误的顺序为:

1、检查CMakeLists.txt文件代码是否正确添加;

2、检查CMakeLists.txt中的代码对应的.so库版本是否一致;

3、检查CMakeLists.txt中target_link_libraries()是否没有遗漏;

4、检查build.gradle文件中配置是否正确;

5、尝试在Project Structure中更换NDK版本。

总之,集体错误具体分析把。实在搞不清楚了留个言,虽然我也不一定啥时候肯得到,哈哈哈。

后续会陆续更新FFMPEG具体功能的使用教程。

祝各位同僚一切顺利!

ffmpeg android 中文文档,Android 中使用FFMPEG相关推荐

  1. javacv 简介、中文文档、中英对照文档 下载

    javacv 文档 下载链接(含jar包.源码.pom) 组件名称 中英对照-文档-下载链接 中文-文档-下载链接 javacv-1.5.7.jar javacv-1.5.7-API文档-中英对照版. ...

  2. javax.servlet-api 简介、中文文档、中英对照文档 下载

    javax.servlet-api 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 javax.servlet-api-3.1.0.jar 暂无 ...

  3. easyexcel 简介、中文文档、中英对照文档 下载

    easyexcel 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 easyexcel-3.0.5.jar easyexcel-3.0.5-API ...

  4. commons-lang3 简介、中文文档、中英对照文档 下载

    commons-lang3 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 commons-lang3-3.10.jar commons-lang ...

  5. itext 简介、中文文档、中英对照文档 下载

    itext 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 itext-2.1.7.jar itext-2.1.7-API文档-中文版.zip i ...

  6. docx4j 简介、中文文档、中英对照文档 下载

    docx4j 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 docx4j-3.3.5.jar docx4j-3.3.5-API文档-中文版.zi ...

  7. mybatis 简介、中文文档、中英对照文档 下载

    mybatis 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 mybatis-3.2.8.jar mybatis-3.2.8-API文档-中文版 ...

  8. snakeyaml 简介、中文文档、中英对照文档 下载

    snakeyaml 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 snakeyaml-1.12.jar snakeyaml-1.12-API文档 ...

  9. jsqlparser 简介、中文文档、中英对照文档 下载

    jsqlparser 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 jsqlparser-0.9.5.jar jsqlparser-0.9.5- ...

  10. aws-java-sdk-s3 简介、中文文档、中英对照文档 下载

    aws-java-sdk-s3 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 aws-java-sdk-s3-1.11.939.jar aws- ...

最新文章

  1. Redhat7.2上编译Linux内核源码
  2. php instanceof操作符
  3. java https 慢_jetty https慢怎么调优?
  4. mysql笔记 doc_Mysql DOC阅读笔记
  5. mysql某个字段改为非unique
  6. WPF 制作便携小空调
  7. 物联网商机迸发 LPWAN芯片现身 本文转自d1net(转载)
  8. Error:Cannot find bean: org.apache.struts.taglib.html.BEAN in any scope
  9. 前端笔记 | CSS浮动
  10. Python 编程技巧:PyCharm 官方汉化插件
  11. php漂浮广告代码,js 居中漂浮广告_广告代码
  12. 我们管理20人团队的方法
  13. 天天背单词--的设计与实现(四)
  14. 【JavaScript】freecodecamp-----Slasher Flick
  15. 国内外知名的IT社区
  16. 第三方社会化评论插件
  17. ubuntu 删除搜狗 繁简切换快捷键
  18. win10电脑人脸识别库安装及使用
  19. python的三维坐标轴设置_如何更改matplotlib中的三维轴设置
  20. visual studio 2019 分屏

热门文章

  1. 苹果手机变卡了怎么解决_苹果手机QQ闪退怎么办 苹果手机QQ闪退解决方法【详解】...
  2. 基于STM32单片机的智能手环心率计步器体温显示方案原理图程序设计
  3. JVM垃圾回收(GC)
  4. 2022年起重机械指挥特种作业证考试题库及模拟考试
  5. 荣耀v8鸿蒙10,首发华为鸿蒙OS!荣耀智慧屏8月10日正式发布
  6. 大文件读写优化问题。现有两个文件,一个837M的order.tbl,一个3.62G的lineitem.tbl,对这两个表进行嵌套连接
  7. LinearLayer
  8. SIMATIC S7-300 Profibus通讯——(3)DP/DP Coupler使用
  9. java如何计算一个数的n次方
  10. 长虹android电视安装apk,长虹电视通过安卓手机安装沙发管家教程