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

news2024/12/23 17:57:31

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

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://www.coloradmin.cn/o/648923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中如何进行网页截图与截屏?

Vue中如何进行网页截图与截屏? 在Web开发中,有时候需要对网页进行截图或截屏。Vue作为一个流行的JavaScript框架,提供了一些工具和库,可以方便地实现网页截图和截屏功能。本文将介绍如何在Vue中进行网页截图和截屏。 网页截图 网…

2023年CPSM-3中级项目管理专业人员认证有啥用?

CPSM-3中级项目管理专业人员认证,是中国标准化协会(全国项目管理标准化技术委员会秘书处)联合中国国际人才交流基金会,面向社会开展项目管理专业人员能力的等级证书。旨在构建多层次从业人员培养培训体系,建立健全人才…

Linux操作系统学习——启动

概要 Linux操作系统内核是服务端学习的根基,也是提高编程能力、源码阅读能力和进阶知识学习能力的重要部分,本文开始将记录Linux操作系统中的各个部分源码学习历程。 1. 理解代码的组织结构 以Linux源码举例,首先你得知道操作系统分为哪几个部…

电脑怎么录屏?推荐2款录制电脑屏幕的软件!

案例:我经常需要把电脑上的内容分享给别人,一般通过手机拍摄的方式。这就导致视频十分模糊,给人的观感不太好,有没有什么方法可以实现在电脑上直接录屏? 【我想录制我的电脑屏幕上的内容分享给别人,但是我…

常用JVM命令

top 展示 进程运行的完整命令行的话可以用 top -c ,当命令行较长无法分辨是哪个程序,可使用键盘右键将窗口不断滑动至右侧查看。 uptime jps 查看当前正在运行的java进程 执行结果: pid 运行文件 [roottest1 ~]# jps 24001 rs-medical-rp…

第六期:链表回文旋转的秘密

文章目录 1. 反转链表2. 回文链表代码1. 反转链表2. 回文链表 PS:每道题解题方法不唯一,欢迎讨论!每道题后都有解析帮助你分析做题,答案在最下面,关注博主每天持续更新。 1. 反转链表 题目描述: 给你单链表…

九、会话控制——cookie、session、token

文章目录 前言一、cookie1.1 cookie 是什么1.2 cookie 的特点1.3 cookie 的运行流程1.4 express 框架中设置cookie1.5 express 框架中删除cookie1.6 express 框架中获取cookie 二、session2.1 session 是什么2.2 session 的作用2.3 session 的运行流程2.4 session 和 cookie 的…

vue框架一

目录 友情提醒第一章、vue框架是前端js框架1.1)介绍vue1.2)vue设计思想1.3)vue引入 第二章、实现的步骤2.1)创建步骤2.2)基本语法2.3) 第三章、遇到的问题3.1)3.2)3.3) 第…

python grpc状态码用法

测试代码 新建demo.proto文件定义协议缓冲区,写入以下内容: syntax "proto3"; package server;service Demo {rpc ping(Request) returns (Response) {} }message Request {string msg 1;} message Response {string msg 1;}使用gRPC的工…

百兆网和千兆网怎么接线

一、认识网线 网线:橙色和白橙交织在一起,绿色和白绿交织在一起,棕色和白棕交织在一起,蓝色和白蓝交织在一起。在传输电信号时,相互之间辐射出的电磁波会相互抵消,可以消除相互之间的干扰,所以…

shell脚本进阶1——精读ansible+shell脚本

文章目录 一、脚本规划思路二、主控机shell脚本2.1 脚本输出字体特效2.2 生成菜单栏对话框2.3 配置本地yum源仓库2.4 配置受控机yum源2.5 关闭防火墙和selinux2.6 把docker安装包给受控机2.7 安装docker-compose2.8 安装docker2.9 安装ansible2.10 安装pip2.11 主控本机免密登录…

JAVA并发十二连招

1、HashMap 面试第一题必问的 HashMap,挺考验Javaer的基础功底的,别问为啥放在这,因为重要!HashMap具有如下特性: HashMap 的存取是没有顺序的。 KV 均允许为 NULL。 多线程情况下该类安全,可以考虑用 Ha…

JavaFx Shape形状

JavaFx Shape形状 1、相关子类2、屏幕坐标系3、JavaFx SVG矢量图4、Polygon箭头形状 javafx.scene.shape.Shape 1、相关子类 javafx.scene.shape.Linew3cschool JavaFX 线javafx.scene.shape.Rectanglew3cschool JavaFX 矩形椭圆javafx.scene.shape.Ellipsejavafx.scene.shap…

开源办公套件 ONLYOFFICE文档7.4新功能

随着现代办公的信息化发展,我们处理文档时,对在线协作的需求也越来越大。选择一款简单高效、免费又无广告弹窗的办公套件便非常重要。除了昂贵的微软Office,太多广告的WPS,你还有另一个选择:ONLYOFFICE。 什么是 ONLY…

论程序员提问的艺术

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

播放WebRTC开源库回调出来的视频码流时遇到的内存越界问题排查

目录 1、执行memset操作时遇到了内存访问违例,导致程序崩溃 2、查看崩溃时的函数调用堆栈,初步怀疑是memset时有内存越界 3、存放YUV数据的buffer在执行若干操作后出现内存越界 4、加载系统库的pdb之后,看到了更多的函数调用堆栈&…

代码随想录二刷 day23 | 二叉树 之 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树

二刷day23 669. 修剪二叉搜索树108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树 669. 修剪二叉搜索树 题目链接 解题思路: 递归三部曲 确定递归函数的参数以及返回值 这里我们为什么需要返回值呢? 因为是要遍历整棵树,做修改…

SOLIDWORKS Electrical如何绘制电线

SOLIDWORKS Electrical 是一套计算机辅助工程 (CAE) 设计工具,他可以帮助电气设计工程师减少创新的内在风险,并允许公司减少对物理原型的需求,从而在更短时间内以更低成本将产品推向市场。通过一组强大、直观的电气设计功能,设计人…

互联网大佬们的成功绝非偶然

以下排名不分先后。 一、百度李彦宏 ,1987年阳泉市高考状元,考进北大。 互联网三巨头BAT的第一个字母,指的就是百度。创始人李彦宏是出生在普通家庭出生,他小时候的启蒙教育由三个姐姐负责,不过相比学习,更…

详解国产指纹芯片的工作原理以及应用领域

指纹芯片,是指内嵌指纹识别技术的芯片产品,能够片上实现指纹的图像采集、特征提取、特征比对的芯片,开发者可以方便的实现指纹识别的功能,大大降低了指纹识别行业的门槛,对指纹识别的推广具有十分积极的推动作用。 近几…