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

news/2024/7/6 0:49:12

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

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-doc


make clean

make -j4

make 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://lihuaxi.xjx100.cn/news/1247051.html

相关文章

论程序员提问的艺术

最近工作比较忙,加上空闲时间大部分都是在维护开发【云狗AI】,所以也有一段时间没更新视频了,有不懂的,也可以问一下【云狗AI】以后我也会花更多的时间在维护这个项目中。争取给大家带来更好的体验。 主要是因为最近没发现什么特…

银行信用卡流失预测模型_基于ANN神经网络_金融培训_论文科研_毕业设计

业务背景 根据央行公布的数据显示,全国性银行信用卡和借贷合一卡的发卡量增速从2017年同比增速26.35%的高点逐年下降,截至2020年同比增速降至4.26%。银行信用卡发卡增速明显放缓的背景下,预防老客户流失的问题变得愈发重要。 假设一家消费信…

html好看的登录页面1(十三种风格登录页面源码)

文章目录 1.登录风格效果说明1.1 背景凹起风登录界面1.2 弹出风登录界面1.3 科技时尚风登录界面1.4 蓝色一夏风登录界面1.5 模糊背景左右风登录界面1.6 上中下介绍风登录界面1.7 深沉科技风登陆界面1.8 舒适简洁风登录界面1.9 网站风登录界面1.10 小框清爽风登录界面1.11 夜色风…

Selenium基本用法

Selenium 提供了 8 种定位单个节点的方法,如下所示: 定位节点方法 方法 说明 find_element_by_id() 通过 id 属性值定位 find_element_by_name() 通过 name 属性值定位 find_element_by_class_name() 通过 class 属性值定位 find_element_by_tag_name()…

问卷调查工具专业排行榜

调查问卷是传播学领域的常用方法,是同时从大量人群中收集信息的最有效工具之一。它们被用于从学术研究到市场研究的各种环境中。问卷调查的一个关键优势是能够从不同的人群中快速收集大量数据。然而,创建、分发和分析调查问卷可能是一项既耗时又复杂的任…

Vue打包资源按时间戳方式

问题: 由于默认的Vue打包是基于资源文件的hash模式,但是由于浏览器缓存,在实际发版过程中会出现引用老版本的问题。 解决: 修改Vue资源打包,在资源文件后加上打包时间戳,以保证每次发版后,所有…

使用Vision Transformers实现高效语义分割的内容感知共享Token

文章目录 Content-aware Token Sharing for Efficient Semantic Segmentation with Vision Transformers摘要本文方法Content-aware token sharing frameworkContent-aware token sharing policy 实验结果 Content-aware Token Sharing for Efficient Semantic Segmentation wi…

数据库架构是否该随着公司估值一起变化?

原文|The growing pains of database architecture 作者|Tim Liang, Software Engineer at Figma 2020 年,因为 Figma 不断加入新功能,筹备第二条产品线和用户不断增长导致数据库流量每年以 3x 速度增长,我们的基础设…