ffmpeg android 中文文档,Android 中使用FFMPEG
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相关推荐
- javacv 简介、中文文档、中英对照文档 下载
javacv 文档 下载链接(含jar包.源码.pom) 组件名称 中英对照-文档-下载链接 中文-文档-下载链接 javacv-1.5.7.jar javacv-1.5.7-API文档-中英对照版. ...
- javax.servlet-api 简介、中文文档、中英对照文档 下载
javax.servlet-api 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 javax.servlet-api-3.1.0.jar 暂无 ...
- easyexcel 简介、中文文档、中英对照文档 下载
easyexcel 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 easyexcel-3.0.5.jar easyexcel-3.0.5-API ...
- commons-lang3 简介、中文文档、中英对照文档 下载
commons-lang3 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 commons-lang3-3.10.jar commons-lang ...
- itext 简介、中文文档、中英对照文档 下载
itext 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 itext-2.1.7.jar itext-2.1.7-API文档-中文版.zip i ...
- docx4j 简介、中文文档、中英对照文档 下载
docx4j 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 docx4j-3.3.5.jar docx4j-3.3.5-API文档-中文版.zi ...
- mybatis 简介、中文文档、中英对照文档 下载
mybatis 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 mybatis-3.2.8.jar mybatis-3.2.8-API文档-中文版 ...
- snakeyaml 简介、中文文档、中英对照文档 下载
snakeyaml 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 snakeyaml-1.12.jar snakeyaml-1.12-API文档 ...
- jsqlparser 简介、中文文档、中英对照文档 下载
jsqlparser 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 jsqlparser-0.9.5.jar jsqlparser-0.9.5- ...
- aws-java-sdk-s3 简介、中文文档、中英对照文档 下载
aws-java-sdk-s3 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 aws-java-sdk-s3-1.11.939.jar aws- ...
最新文章
- Redhat7.2上编译Linux内核源码
- php instanceof操作符
- java https 慢_jetty https慢怎么调优?
- mysql笔记 doc_Mysql DOC阅读笔记
- mysql某个字段改为非unique
- WPF 制作便携小空调
- 物联网商机迸发 LPWAN芯片现身 本文转自d1net(转载)
- Error:Cannot find bean: org.apache.struts.taglib.html.BEAN in any scope
- 前端笔记 | CSS浮动
- Python 编程技巧:PyCharm 官方汉化插件
- php漂浮广告代码,js 居中漂浮广告_广告代码
- 我们管理20人团队的方法
- 天天背单词--的设计与实现(四)
- 【JavaScript】freecodecamp-----Slasher Flick
- 国内外知名的IT社区
- 第三方社会化评论插件
- ubuntu 删除搜狗 繁简切换快捷键
- win10电脑人脸识别库安装及使用
- python的三维坐标轴设置_如何更改matplotlib中的三维轴设置
- visual studio 2019 分屏
热门文章
- 苹果手机变卡了怎么解决_苹果手机QQ闪退怎么办 苹果手机QQ闪退解决方法【详解】...
- 基于STM32单片机的智能手环心率计步器体温显示方案原理图程序设计
- JVM垃圾回收(GC)
- 2022年起重机械指挥特种作业证考试题库及模拟考试
- 荣耀v8鸿蒙10,首发华为鸿蒙OS!荣耀智慧屏8月10日正式发布
- 大文件读写优化问题。现有两个文件,一个837M的order.tbl,一个3.62G的lineitem.tbl,对这两个表进行嵌套连接
- LinearLayer
- SIMATIC S7-300 Profibus通讯——(3)DP/DP Coupler使用
- java如何计算一个数的n次方
- 长虹android电视安装apk,长虹电视通过安卓手机安装沙发管家教程