win10下 ffmpeg 编译成android可以使用的so文件_windows下面编译ffmpeg-4.2.9为android so文件并打包成一个so文件-程序员宅基地

技术标签: android  Android  

前两天看一个视频转换成gif的软件。用起来很不舒服,然后呢就想自己做一个看看。就开始研究ffmpeg,第一步编译成so文件就把我搞得死去活来的,主要是一点经验也没有,然后就是各种失败,最后总算出来,发现这两天忙项目,都快忘记了,今天写一下做下记录。

需要准备下载的东西

MinGW下载安装

mingw 下载地址。下载完双击下一步下一步就好。但是要记住的你的安装地址,等会要配置。

下载完打开,把下图这些全部安装了。

image

环境配置path下面

image

双击打开msys.bat等会要用到。

image

ffmpeg下载最新的就好,我下载的是ffmpeg-4.4.1,往下一拖就看见了

NDK 以前用android studio安装过了,也可以不用下载,但是要用20+的版本,好像是17+以上的就可以,主要涉及到了编译文件的区别。后面说一下。

ffmpeg开始编译

1.修改ffmpeg的configure文件

地址看下图。直接拖动到android studio中就好。

image

--cross-prefix-clang=PREFIX use PREFIXfor compilation clang tools [$cross_prefix]

image

cross_prefix_clang

image


ar_default="${cross_prefix}${ar_default}"

cc_default="${cross_prefix_clang}${cc_default}"

cxx_default="${cross_prefix_clang}${cxx_default}"

nm_default="${cross_prefix}${nm_default}" 

image

完事,根据图复制对应的就好了,行数也差不多。

2编写build_android.sh文件

在configure同目录下新建build_android.sh文件,直接拖到android studio,复制下面代码,修改NDK参数,其他不变。


NDK=D:/sdk/ndk/21.1.6352462

SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot

PLATFORM=$NDK/toolchains/llvm/prebuilt/windows-x86_64

function build

{

./configure\

--prefix=$PREFIX \

--target-os=android \

--arch=$CPU \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-avdevice \

--disable-symver \

--enable-cross-compile \

--sysroot=$SYSROOT \

--cross-prefix=$PLATFORM/bin/arm-linux-androideabi- \

--cross-prefix-clang=$PLATFORM/bin/armv7a-linux-androideabi16- \

--extra-cflags="-I$SYSROOT/usr/include"\

--extra-ldflags="-L$SYSROOT/usr/lib"

      $ADDITIONAL_CONFIGURE_FLAG

      make clean

make -j4

make install

}

CPU=armv7-a

PREFIX=$(pwd)/android_all/$CPU

build

read -p"Press any key to continue."

3开始编译

操作如下图所示,开始等着就好了。完成后会在ffmpeg的目录下面生成android_all文件夹。

image.png

步骤没问题的话基本上等半个来小时就可以了。

问题总结

看这篇文章的时候,可能已经搜索了很多文章了。其实编译错误的主要问题就是版本问题,很多文章都提到不要用最新的。最新的编译会失败报错,我也是转悠了好多,这里面主要涉及到了高版本ndk的问题,低版本是带着gcc编译器的,好像是从ndk17以后就不带这个编译器了,开始使用 clang进行编译。所以在编译过程中有一大部分提示gcc或者clang找不到,建议使用clang编译,gcc有很多问题,还要修改头文件指定,而且还不是最新的版本。如果不行,除了MinGW其他的都重新走一遍。万里长城第一步,突然项目就忙起来了。只能发下抽空在看了。
搞得时候感觉很麻烦,有一堆问题。现在出来了,过了几天以前的哪堆问题全忘记了。

0人点赞

日记本

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_21174855/article/details/121553062

智能推荐

【Python&GIS】Python实现批量导出面矢量要素(单个多面矢量->多个单面矢量)(1)-程序员宅基地

文章浏览阅读244次,点赞5次,收藏10次。之前发过很多文章都没有提到过环境配置,因为直接默认大家会使用Python了,今天这个博文加这个模块主要是因为我们使用的Python2.7!代码中有详细的注释。**变量就3个,第一个是arcpy的工作空间(没啥用),第二个就是想要拆分的矢量文件目录,第三个是输出矢量文件的文件夹。针对这个环境也不多说,你只要安装了ArcGIS就会有Python2.7,只要在Pycharm中将Python2.7的解释器加入到环境中即可。包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

大数据数据库之HBase:集群安装部署_hbase-env.sh-程序员宅基地

文章浏览阅读450次。文章目录前言1. HBase集群安装部署1.1 准备安装包1.2 修改HBase配置文件1.2.1 hbase-env.sh1.2.2 hbase-site.xml1.2.3 regionservers1.2.4 back-masters1.3 分发安装包1.4 创建软连接1.5 添加HBase环境变量1.6 HBase的启动与停止1.7 访问WEB页面1.8 停止HBase集群总结前言Hive的学习告一段落,接下来开始了解大数据主流NoSql数据库HBase,本文主要讲解HBase集群的安装部署,为_hbase-env.sh

视频汇聚平台视频智能分析一体机安防监控系统软件平台设备接入-程序员宅基地

文章浏览阅读358次,点赞10次,收藏5次。视频智能分析一体机在安防监控、智能交通、智慧城市等领域具有广泛的应用前景。它可以提高监控系统的智能化水平,减轻人工监控压力,提升监控效率和准确性,为各行业提供更安全、智能的监控解决方案。视频智能分析一体机作为一种先进的技术设备,在多个领域展现出了巨大的潜力和广泛的应用前景。特别是在安防监控、智能交通和智慧城市等领域,它已经成为了不可或缺的重要工具。4.弹出注册AIBox弹窗;5.输入前端设备ip地址;1.点击预注册AIBox;3.点击注册AIBox;6.输入设备用户名;6.输入盒子验证码;

MongoDB主从复制_mongodb创建超级用户提示uncaught exception:error:could not -程序员宅基地

文章浏览阅读6.4k次。MongoDB的主从复制我觉得可以理解为实时备份,当然它还有切换主从服务器,用于主服务器挂掉后的临时使用功能。它的用法很简单,也是该数据库在云计算处理上十分强大的地方。下面来实践一下看看。1、主服务器 配置zhu.conf dbpath = D:\MongoDB\db1 #主数据库地址 port = 1111 #主数据库端口号 bind_i_mongodb创建超级用户提示uncaught exception:error:could not add user:not maste

药学【4】_二氧二氟甲烷是抛射剂-程序员宅基地

文章浏览阅读3k次。1.氯丙嗪化学结构名()A.2-氯-N、N-二甲基-10H-苯并哌唑-10-丙胺B.2-氯N、N-二甲基-10H-苯并噻唑-10-丙胺C.2-氯N、N-二甲基-10H-吩噻嗪-10-丙胺D.2氯-N、N-二甲基-10H-噻嗪-10-丙胺E.2氯-N、N-二甲基10H-哌嗪-10-丙胺2.属于均相液体制剂的是()A.纳米银溶胶B.复方硫磺洗剂C.鱼肝油乳剂D.磷酸可待因糖浆E.石灰剂3.分子中含有酚羟基,遇光易氧化变质,需避光保存的药物是()A.肾上腺素B.维生素AC._二氧二氟甲烷是抛射剂

阿里云直播 auth_key-程序员宅基地

文章浏览阅读1.2k次。privatestatic$_config = ['push_key' =>'XbRqF1xns4',//推流鉴权key'live_key' =>'VjsnDLXexT',//播流鉴权key'push_domain' =>'******',//推流域名'live_domain' =>'******',//播流域名'app_name' =>'***',//自定义应用名称..._auth_key

随便推点

2009-2010年中国嵌入式开发从业人员调查报告_嵌入式需要几个研发人员-程序员宅基地

文章浏览阅读1.3k次。嵌入式软件是嵌入式系统的核心技术之一。在2008年中国软件业收入的7570亿元中,嵌入式软件就占了14.8%,在软件出口中占了2/3左右;目前中国前10家最大的软件企业中,5家是嵌入式软件企业。可以说,嵌入式软件对于中国的重要性,相当于离岸外包对于印度的重要性。而随着城市信息化和行业信息化的持续深入,嵌入式技术已成为信息产业中发展最快、应用最广的计算机技术之一,并被广泛应用于网络通信、消费电子、医疗电子、工业控制和交通系统等领域。每年全球嵌入式系统相关工业产值已超过1万亿美元,全球嵌入式系统硬件和软件开发工_嵌入式需要几个研发人员

一文了解微服务架构的分解设计-程序员宅基地

文章浏览阅读183次。点击上方“芋道源码”,选择“设为星标”管她前浪,还是后浪?能浪的浪,才是好浪!每天 10:33更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库中间件 Sharding-JDBC 和 MyCAT 源码解析作业调度中间件 E...

多特征变量序列预测(11) 基于Pytorch的TCN-GRU预测模型_tcngru代码-程序员宅基地

文章浏览阅读1.2k次,点赞22次,收藏27次。基于Pytorch的TCN-GRU预测模型_tcngru代码

《数据挖掘基础》实验:Weka平台实现分类算法-程序员宅基地

文章浏览阅读9.6k次,点赞20次,收藏157次。Weka平台实现分类算法进一步理解分类算法(决策树、贝叶斯),利用weka实现数据集的分类处理,学会调整模型参数,以图或树的形式给出挖掘结果,并解释规则的含义。

TiDB 事务与锁-程序员宅基地

作者: 苏州刘三枪 原文来源: https://tidb.net/blog/865b670e ...

Android内核的编译和调试-程序员宅基地

文章浏览阅读692次。本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70500488一、Android内核源码的选择Android手机设备内核源码的调试需要外部硬件设备的支持,调试步骤比较麻烦。相对来说,Android模拟器内核源码的调试就比较简单了,这里..._ro.adb.qemud

推荐文章

热门文章

相关标签