windows编译ffmpeg,并开启png的编解码器

news/2024/12/5 6:46:47/

废话不多说了,先上下载链接

ffmpeg官方网站:http://ffmpeg.org/download.html

ffmpeg源码下载链接:https://ffmpeg.org/releases/ffmpeg-3.4.13.tar.gz

如果需要其他版本,修改版本号即可,适用于3.4全系列,如https://ffmpeg.org/releases/ffmpeg-3.4.8.tar.gz

windows编译ffmpeg,需要mingw环境支持,具体教程,查看我的博文:

【无标题】windows下使用cmake编译c++_帝利特的博客-CSDN博客

以下是在mingw环境内执行的shell命令:

#定位到代码根目录
cd /e/workspace/ffmpeg-3.4.13
#配置cmake
./configure --prefix=build --arch=x86_64 --enable-shared --enable-static --disable-ffserver --enable-ffplay --disable-debug --disable-docmake cleanmake -j4make install

编译好后,拷贝build目录下的内容到需要安装的目录(非必要)。同时设置环境变量(必要):

环境变量配置好后,使用命令测试是否功能正常:

 

需要注意的是因为windows平台默认没有libpng.dll,默认打包的ffmpeg并没有png的编码器和解码器,所以我们编译好ffmpeg后,如果想要导入或者导出png格式,则会出现以下错误:


 

 接下来,我们开始c++的常规踩坑。。。这些都需要在mingw64的msys环境下进行编译

既然知道需要libpng才能正确导出和导入png格式,那么我们就前往libpng的官方网站进行下载编译。不过libpng还需要zlib的支持才能正常工作。这边我们不再引导式书写了,直接按顺序来,上链接,上方案。如果不需要进行编译支持,只要dll的话,可以直接从腾讯的程序中获取到该dll,如qq,tim,微信等。无需进行编译哦。那么问题来了。我们为什么要编译。是因为我们需要静态库。

本文提供2个方案供大家选择:

方案一:

懒人直达链接下载我已经配置好的mingw64,只需要修改博文内msys对应的mingw64的目录为你实际保存的目录即可,同时需要在环境变量配置你的mingw64。

【无标题】windows下使用cmake编译c++_帝利特的博客-CSDN博客

方案二:

zlib下载链接 http://www.zlib.net/

cd /e/workspace/zlib-1.2.13/
make -f win32/Makefile.gcc

编译完成后,拷贝整个需要的文件到对应的目录,上文的gcc文件内已经说明了,自己查看一下。

总体来说编译zlib比较顺利,差不多一次就过了,接下来的libpng比较头疼问题比较多。

首先就是官方的下载链接是有问题的,官方提供了zip和gzip包,zip包是有问题的,会碰到一个一个错误 ,options.awk:bad line (10): com

 遇到这个问题,我一开始以为安装了awk支持就可以了,然并卵,那怎么办?在Google上查阅了相关资料后,偶然间发现,官方提供的gzip包是可以被正常编译的,只是在配置好后,进行make的时候libpngconf.h有错误,这个错误也很简单,只需要把定义中出现换行的代码变成不换行即可。为了文章,我牺牲一下,找个临时目录,再次编译libpng。

libpng的官方地址:http://www.libpng.org/pub/png/libpng.html

libpng的下载链接:https://download.sourceforge.net/libpng/libpng-1.6.39.tar.gz

cd /e/workspace/libpng-1.6.39/
./configure --prefix=e:/workspace/libpng-1.6.39/build --enable-shared --enable-static
make clean
make -j8
make install
#拷贝libpng的目录内容到mingw的根目录

启动编译:

 使用tar.gz包遇到的错误:pnglibconf.h:206:54: error: expected identifier or '(' before '-' token

我们去pnglibconf.h的206行看看问题:

 

 我们看到代码被莫名其妙换行了,好了,找到问题,fixed it。

修复后的代码,如下图:

 编译顺利

编译后的成果:

​ 

拷贝整个build内的内容到mingw64的根目录即可。注意,拷贝好后,需要重启一下mingw的窗口。

懒人直达链接libpng成果包: https://download.csdn.net/download/DeleteElf/87910669


http://www.ppmy.cn/news/398708.html

相关文章

【监控】Zabbix:企业级开源监控解决方案

文章目录 一、zabbix的基本概述二、zabbix的构成三、zabbix的监控对象四、zabbix的常用术语五、zabbix的工作流程六、zabbix进程详解七、zabbix的监控框架7.1 三种架构模式的架构图如下:7.2 每个模块的工作职责: 八、zabbix源码安装及部署一、服务端安装…

eval函数的定义为:eval(source, globals=None, locals=None, /)

eval() 函数用于执行一个字符串表达式,并返回表达式的值。 参数说明: - source:必需,要被计算的表达式字符串。 - globals:可选,全局命名空间,如果被提供,则必须是一个字典对象。 …

算法课设 戳气球问题实验报告 动态规划

戳气球实验报告 目录 一、题目 二、分析原问题并做调整 三、分析子问题及其递推关系 四、确定dp数组的计算顺序 五、复杂度分析 六、具体实现代码 七、填表示例寻找最优解和最优方案 八、总结 九、致谢 一、题目 有n个气球,编号为0到n-1,每个…

闲聊下最近哦

随便聊聊 聊聊最近工作或日常上一家公司一直比较忙,人也比较懒,一直没有写博客,最近换了下工作,争取坚持写博客吧 聊聊最近工作或日常 上一家公司一直比较忙,人也比较懒,一直没有写博客,最近换了下工作,争取坚持写博客吧 上家公司做了几年多了,上半年离职换了个工作,现阶段这…

pycocotools报错,NameError: name ‘unicode’ is not defined

在深度学习训练过程中的评估阶段使用pycocotools时出现错误: if type(resFile) str or type(resFile) unicode: NameError: name ‘unicode’ is not defined 据网上说应该是python2和3版本的问题,Python2 的unicode函数在 Python3 中不再使用。 解决方…

我来侃手机--连载一之开篇就论N73

最近这一段时间以来,我一直在关注手机方面的资讯,从性能、参数、行情等各个方面深入了解,从一开始的孤陋寡闻,到现在也是半个行家了,当然毕竟是业余选手,还不能和各大网站靠写手机评测文章混饭的大哥相提并…

Symbian 介绍

Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统。而Symbian操作系统的前身是EPOC,而EPOC是 Electronic Piece of Cheese取第一个字母而来的,其原意为"使用电子产品时…

[转载]14-28岁必看,还算青年的你该用什么手机

如果您没有耐心读完如此冗长的文章,您可直接阅读一下重点段落── 第5页:22岁毕业:诺基亚N81 22岁毕业:诺基亚N81 22岁的你可能已经大四了,作为一个狂热的数码爱好者,普通的非智能手机肯定无法满足你的…